@idl3/claude-control 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/codex.js +105 -4
- package/lib/pane-registry.js +23 -10
- package/lib/sessions.js +22 -6
- package/package.json +1 -1
- package/server.js +7 -4
- package/web/dist/assets/{core-CpT6tRRG.js → core-C29-1O9j.js} +1 -1
- package/web/dist/assets/index-CT-y6LU4.css +1 -0
- package/web/dist/assets/index-DzIDTXLS.js +103 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-CjOcrKRX.css +0 -1
- package/web/dist/assets/index-CxhR0MPg.js +0 -103
package/lib/codex.js
CHANGED
|
@@ -51,6 +51,63 @@ async function readHead(filePath, maxBytes) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// readTail — read the LAST maxBytes of a file without loading it all.
|
|
56
|
+
// Mirrors readHead but reads from offset max(0, size - maxBytes).
|
|
57
|
+
// Never throws — returns null on any error.
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
async function readTail(filePath, maxBytes) {
|
|
60
|
+
let fh;
|
|
61
|
+
try {
|
|
62
|
+
fh = await fs.open(filePath, 'r');
|
|
63
|
+
const stat = await fh.stat();
|
|
64
|
+
const size = stat.size;
|
|
65
|
+
if (size === 0) return Buffer.alloc(0);
|
|
66
|
+
const readSize = Math.min(size, maxBytes);
|
|
67
|
+
const offset = Math.max(0, size - maxBytes);
|
|
68
|
+
const buf = Buffer.allocUnsafe(readSize);
|
|
69
|
+
const { bytesRead } = await fh.read(buf, 0, readSize, offset);
|
|
70
|
+
return buf.subarray(0, bytesRead);
|
|
71
|
+
} catch {
|
|
72
|
+
return null;
|
|
73
|
+
} finally {
|
|
74
|
+
if (fh) await fh.close().catch(() => {});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// extractUsageFromTail — given a text blob, scan lines from the END and
|
|
80
|
+
// return the newest token_count event_msg's primary rate-limit data.
|
|
81
|
+
//
|
|
82
|
+
// Returns { usagePct, usageWindowMin } where usagePct is the primary
|
|
83
|
+
// used_percent (number) and usageWindowMin is the primary window_minutes
|
|
84
|
+
// (number). Returns null if no valid token_count line is found.
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
export function extractUsageFromTail(text) {
|
|
87
|
+
if (!text) return null;
|
|
88
|
+
const lines = text.split('\n');
|
|
89
|
+
// Iterate from the end — newest first.
|
|
90
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
91
|
+
const line = lines[i].trim();
|
|
92
|
+
if (!line) continue;
|
|
93
|
+
let rec;
|
|
94
|
+
try {
|
|
95
|
+
rec = JSON.parse(line);
|
|
96
|
+
} catch {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (rec.type !== 'event_msg') continue;
|
|
100
|
+
if (rec.payload?.type !== 'token_count') continue;
|
|
101
|
+
const primary = rec.payload?.rate_limits?.primary;
|
|
102
|
+
if (primary == null) continue;
|
|
103
|
+
const usagePct = primary.used_percent;
|
|
104
|
+
const usageWindowMin = primary.window_minutes;
|
|
105
|
+
if (typeof usagePct !== 'number' || typeof usageWindowMin !== 'number') continue;
|
|
106
|
+
return { usagePct, usageWindowMin };
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
|
|
54
111
|
// ---------------------------------------------------------------------------
|
|
55
112
|
// matchesProcess
|
|
56
113
|
//
|
|
@@ -287,10 +344,27 @@ export async function buildTranscriptIndex({ codexSessionsRoot }, now = new Date
|
|
|
287
344
|
const payload = record.payload || {};
|
|
288
345
|
if (typeof payload.cwd !== 'string' || !payload.cwd) return;
|
|
289
346
|
|
|
347
|
+
const lastActivity = record.timestamp ?? null;
|
|
348
|
+
const lastActivityMs = lastActivity ? (Date.parse(lastActivity) || null) : null;
|
|
349
|
+
|
|
350
|
+
// Tail-read for rate-limit usage (token_count events appear throughout).
|
|
351
|
+
let usagePct = null;
|
|
352
|
+
let usageWindowMin = null;
|
|
353
|
+
const tailBuf = await readTail(filePath, 32768);
|
|
354
|
+
if (tailBuf && tailBuf.length > 0) {
|
|
355
|
+
const tailText = tailBuf.toString('utf8');
|
|
356
|
+
const usage = extractUsageFromTail(tailText);
|
|
357
|
+
if (usage) {
|
|
358
|
+
usagePct = usage.usagePct;
|
|
359
|
+
usageWindowMin = usage.usageWindowMin;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
290
363
|
const discovered = {
|
|
291
364
|
cwd: payload.cwd,
|
|
292
365
|
sessionId: payload.id ?? null,
|
|
293
|
-
lastActivity
|
|
366
|
+
lastActivity,
|
|
367
|
+
lastActivityMs,
|
|
294
368
|
// session_meta has model_provider but no concrete model id.
|
|
295
369
|
model: null,
|
|
296
370
|
aiTitle: null,
|
|
@@ -301,6 +375,8 @@ export async function buildTranscriptIndex({ codexSessionsRoot }, now = new Date
|
|
|
301
375
|
pendingToolUseId: null,
|
|
302
376
|
pendingQuestion: null,
|
|
303
377
|
agentType: 'codex',
|
|
378
|
+
usagePct,
|
|
379
|
+
usageWindowMin,
|
|
304
380
|
};
|
|
305
381
|
|
|
306
382
|
// Newest mtime wins per cwd.
|
|
@@ -478,12 +554,37 @@ export function buildSpawnCommand({ cwd, bin = 'codex' } = {}) {
|
|
|
478
554
|
//
|
|
479
555
|
// Parse model name from a Codex TUI header capture.
|
|
480
556
|
// The header contains: │ model: gpt-5.5 xhigh fast /model to change │
|
|
481
|
-
//
|
|
557
|
+
// Captures model + effort token (e.g. "gpt-5.5 xhigh") so the rail shows
|
|
558
|
+
// both the model name and the reasoning effort setting.
|
|
482
559
|
// ctx% is not shown in the Codex TUI.
|
|
483
560
|
// ---------------------------------------------------------------------------
|
|
484
561
|
export function parseTuiStatus(capture) {
|
|
485
|
-
const
|
|
486
|
-
|
|
562
|
+
const text = capture || '';
|
|
563
|
+
// Match model name + optional effort token (e.g. "gpt-5.5 xhigh").
|
|
564
|
+
// The header line looks like: "model: gpt-5.5 xhigh fast /model to change"
|
|
565
|
+
// We capture the first token (model) and an optional second token (effort),
|
|
566
|
+
// stopping before known non-effort tokens: "fast", "slow", "/model".
|
|
567
|
+
const EFFORT_TOKENS = new Set(['xhigh', 'high', 'medium', 'low']);
|
|
568
|
+
let model = null;
|
|
569
|
+
// (1) Top header box (visible at session start, before output scrolls it off):
|
|
570
|
+
// "model: gpt-5.5 xhigh fast /model to change"
|
|
571
|
+
const header = /model:\s+(\S+)(?:\s+(\S+))?/.exec(text);
|
|
572
|
+
if (header) {
|
|
573
|
+
model = EFFORT_TOKENS.has((header[2] || '').toLowerCase())
|
|
574
|
+
? `${header[1]} ${header[2]}`
|
|
575
|
+
: header[1];
|
|
576
|
+
}
|
|
577
|
+
// (2) Persistent footer status line (always at the bottom, which is what the
|
|
578
|
+
// 8-line ctx-poll capture actually sees): "gpt-5.5 xhigh Fast · <cwd>".
|
|
579
|
+
// Capture model + optional effort, then the speed word, then the " · " cwd
|
|
580
|
+
// separator. Used only when the header isn't in view.
|
|
581
|
+
if (!model) {
|
|
582
|
+
const footer = /^\s*([\w.\-]+)(?:\s+(xhigh|high|medium|low))?\s+\S+\s+·\s/m.exec(text);
|
|
583
|
+
if (footer) model = footer[2] ? `${footer[1]} ${footer[2]}` : footer[1];
|
|
584
|
+
}
|
|
585
|
+
// Codex prints "• Working (<N>s • esc to interrupt)" while generating.
|
|
586
|
+
const working = /esc to interrupt/.test(text) || /Working \(/.test(text);
|
|
587
|
+
return { ctxPct: null, model, working };
|
|
487
588
|
}
|
|
488
589
|
|
|
489
590
|
// ---------------------------------------------------------------------------
|
package/lib/pane-registry.js
CHANGED
|
@@ -55,31 +55,44 @@ export async function readPaneRegistry(dir = PANES_DIR) {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
|
-
* Remove registry files
|
|
59
|
-
*
|
|
60
|
-
*
|
|
58
|
+
* Remove registry files that have gone stale. A pin is stale iff its transcript
|
|
59
|
+
* file no longer exists — the SAME rule readPaneRegistry uses to drop an entry
|
|
60
|
+
* in memory. This is the only safe deletion trigger.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
62
|
+
* It deliberately does NOT use the live tmux pane set. That scan flickers
|
|
63
|
+
* (transient `list-panes` hiccups, a session momentarily not enumerated on a
|
|
64
|
+
* busy socket), and a flaky "pane absent" reading looks identical to a genuine
|
|
65
|
+
* pane close — so keying deletion off it wrongly nukes pins for panes that are
|
|
66
|
+
* very much alive (the long-lived window-1 binding kept vanishing this way).
|
|
67
|
+
*
|
|
68
|
+
* A pin for a closed pane whose transcript still lingers is harmless: there is
|
|
69
|
+
* no live pane to bind it to, and if the pane id is later reused the hook
|
|
70
|
+
* overwrites the file. It self-expires here once its transcript is removed.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} [dir] Override registry dir (tests).
|
|
63
73
|
* @returns {Promise<void>}
|
|
64
74
|
*/
|
|
65
|
-
export async function gcPaneRegistry(
|
|
75
|
+
export async function gcPaneRegistry(dir = PANES_DIR) {
|
|
66
76
|
let entries;
|
|
67
77
|
try {
|
|
68
|
-
entries = await fsp.readdir(
|
|
78
|
+
entries = await fsp.readdir(dir);
|
|
69
79
|
} catch {
|
|
70
80
|
return;
|
|
71
81
|
}
|
|
82
|
+
|
|
72
83
|
await Promise.all(
|
|
73
84
|
entries
|
|
74
85
|
.filter((f) => f.endsWith('.json'))
|
|
75
86
|
.map(async (f) => {
|
|
76
87
|
try {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
88
|
+
const filePath = path.join(dir, f);
|
|
89
|
+
const rec = JSON.parse(await fsp.readFile(filePath, 'utf8'));
|
|
90
|
+
if (!rec || typeof rec.transcriptPath !== 'string') return;
|
|
91
|
+
if (!fs.existsSync(rec.transcriptPath)) {
|
|
92
|
+
await fsp.rm(filePath, { force: true }); // transcript gone → stale
|
|
80
93
|
}
|
|
81
94
|
} catch {
|
|
82
|
-
// ignore
|
|
95
|
+
// ignore unreadable/partial files
|
|
83
96
|
}
|
|
84
97
|
}),
|
|
85
98
|
);
|
package/lib/sessions.js
CHANGED
|
@@ -18,7 +18,11 @@ import { parsePanePrompt } from './prompt.js';
|
|
|
18
18
|
import { assignTranscripts, parseEtime, fingerprintScore, shouldRebind } from './match.js';
|
|
19
19
|
import { pinKey } from './pins.js';
|
|
20
20
|
import { readPaneRegistry, gcPaneRegistry } from './pane-registry.js';
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
matchesProcess as codexMatchesProcess,
|
|
23
|
+
buildTranscriptIndex as buildCodexIndex,
|
|
24
|
+
parseTuiStatus as parseCodexTuiStatus,
|
|
25
|
+
} from './codex.js';
|
|
22
26
|
|
|
23
27
|
const execFile = promisify(_execFile);
|
|
24
28
|
|
|
@@ -476,7 +480,7 @@ export class SessionRegistry extends EventEmitter {
|
|
|
476
480
|
// the deterministic binding; everything below is fallback for panes with no
|
|
477
481
|
// hook record (sessions started before the hook was installed).
|
|
478
482
|
const paneReg = await readPaneRegistry();
|
|
479
|
-
gcPaneRegistry(
|
|
483
|
+
gcPaneRegistry().catch(() => {}); // prunes only pins whose transcript is gone
|
|
480
484
|
|
|
481
485
|
// Manual pins win first: a pinned pane is force-bound to its transcript and
|
|
482
486
|
// that transcript is removed from the auto-matcher pool. Pins are keyed by
|
|
@@ -590,7 +594,7 @@ export class SessionRegistry extends EventEmitter {
|
|
|
590
594
|
projectDir: null, // triggers isCwdConsistent scope fallback in match.js
|
|
591
595
|
birthtimeMs: rec.mtime,
|
|
592
596
|
mtimeMs: rec.mtime,
|
|
593
|
-
lastActivityMs: rec.mtime,
|
|
597
|
+
lastActivityMs: rec.lastActivityMs ?? rec.mtime,
|
|
594
598
|
customTitle: rec.customTitle,
|
|
595
599
|
aiTitle: rec.aiTitle,
|
|
596
600
|
recentText: null,
|
|
@@ -602,6 +606,8 @@ export class SessionRegistry extends EventEmitter {
|
|
|
602
606
|
pendingToolUseId: rec.pendingToolUseId,
|
|
603
607
|
pendingQuestion: rec.pendingQuestion,
|
|
604
608
|
agentType: rec.agentType,
|
|
609
|
+
usagePct: rec.usagePct ?? null,
|
|
610
|
+
usageWindowMin: rec.usageWindowMin ?? null,
|
|
605
611
|
mtime: rec.mtime,
|
|
606
612
|
});
|
|
607
613
|
}
|
|
@@ -634,7 +640,11 @@ export class SessionRegistry extends EventEmitter {
|
|
|
634
640
|
!!transcript?.transcriptPending ||
|
|
635
641
|
!!panePrompt?.pending;
|
|
636
642
|
const title = transcript?.customTitle || transcript?.aiTitle || null;
|
|
637
|
-
|
|
643
|
+
// Read the polled TUI status (model/ctx) for Claude AND Codex. Codex's
|
|
644
|
+
// _pollCtx populates _ctxMap with its model (ctxPct stays null — Codex's
|
|
645
|
+
// TUI has no context %). Without this, the assembly would discard the
|
|
646
|
+
// polled codex model and the rail would show no model for codex rows.
|
|
647
|
+
const ctx = isClaude || kind === 'codex' ? this._ctxMap.get(win.target) || {} : {};
|
|
638
648
|
|
|
639
649
|
return {
|
|
640
650
|
id,
|
|
@@ -664,7 +674,9 @@ export class SessionRegistry extends EventEmitter {
|
|
|
664
674
|
|
|
665
675
|
model: ctx.model || prettyModel(transcript?.model) || null,
|
|
666
676
|
ctxPct: ctx.ctxPct ?? null,
|
|
667
|
-
thinking: isClaude ? this._thinkingMap.get(win.target) ?? false : false,
|
|
677
|
+
thinking: (isClaude || kind === 'codex') ? this._thinkingMap.get(win.target) ?? false : false,
|
|
678
|
+
usagePct: transcript?.usagePct ?? null,
|
|
679
|
+
usageWindowMin: transcript?.usageWindowMin ?? null,
|
|
668
680
|
};
|
|
669
681
|
});
|
|
670
682
|
|
|
@@ -690,7 +702,11 @@ export class SessionRegistry extends EventEmitter {
|
|
|
690
702
|
if (!this._tmux.isValidTarget(s.target)) return;
|
|
691
703
|
try {
|
|
692
704
|
const cap = await this._tmux.capturePane(s.target, 8);
|
|
693
|
-
|
|
705
|
+
// Codex panes use the codex header/footer parser (the Claude tui.js
|
|
706
|
+
// parser doesn't match codex's "model:"/footer formats). Codex has no
|
|
707
|
+
// ctx% in its TUI, so ctxPct stays null for codex (no faked value).
|
|
708
|
+
const { ctxPct, model } =
|
|
709
|
+
s.kind === 'codex' ? parseCodexTuiStatus(cap) : parseTuiStatus(cap);
|
|
694
710
|
this._ctxMap.set(s.target, { ctxPct, model });
|
|
695
711
|
// Merge into the live session object without a full rebuild.
|
|
696
712
|
if (ctxPct !== null) s.ctxPct = ctxPct;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idl3/claude-control",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local web UI to watch and drive your Claude Code sessions running in tmux — live transcripts, reply, answer AskUserQuestion, attach files, from a browser or phone.",
|
|
6
6
|
"keywords": [
|
package/server.js
CHANGED
|
@@ -798,10 +798,13 @@ async function handleSessionNew(req, res) {
|
|
|
798
798
|
if (agent === 'codex') {
|
|
799
799
|
// Codex path: uses -C <cwd> (its own cwd flag). No --name flag — Codex
|
|
800
800
|
// has none. The tmux window is still named (above) so the rail shows it.
|
|
801
|
-
//
|
|
802
|
-
//
|
|
803
|
-
|
|
804
|
-
|
|
801
|
+
// buildSpawnCommand is the single source of truth for Codex's launch
|
|
802
|
+
// shape; the cwd arg is shell-quoted since the command is typed into an
|
|
803
|
+
// interactive shell via sendText. The executed command is
|
|
804
|
+
// config.codexLaunchCommand (may be a shell alias), validated above via
|
|
805
|
+
// codexBin||codexLaunchCommand — same pattern as the Claude branch.
|
|
806
|
+
const { bin, args } = buildSpawnCommand({ cwd, bin: config.codexLaunchCommand });
|
|
807
|
+
launch = `${bin} ${args.map((a) => (a === cwd ? tmux.shellQuoteName(cwd) : a)).join(' ')}`;
|
|
805
808
|
} else {
|
|
806
809
|
// Claude path: BYTE-IDENTICAL to the pre-Phase-D implementation.
|
|
807
810
|
// (2) Claude's own session title: `claude --help` exposes `-n/--name`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{g as Ve}from"./index-CxhR0MPg.js";function xe(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const i=e[t],u=typeof i;(u==="object"||u==="function")&&!Object.isFrozen(i)&&xe(i)}),e}class he{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function we(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function B(e,...t){const i=Object.create(null);for(const u in e)i[u]=e[u];return t.forEach(function(u){for(const b in u)i[b]=u[b]}),i}const qe="</span>",pe=e=>!!e.scope,Qe=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const i=e.split(".");return[`${t}${i.shift()}`,...i.map((u,b)=>`${u}${"_".repeat(b+1)}`)].join(" ")}return`${t}${e}`};class me{constructor(t,i){this.buffer="",this.classPrefix=i.classPrefix,t.walk(this)}addText(t){this.buffer+=we(t)}openNode(t){if(!pe(t))return;const i=Qe(t.scope,{prefix:this.classPrefix});this.span(i)}closeNode(t){pe(t)&&(this.buffer+=qe)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const de=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class te{constructor(){this.rootNode=de(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const i=de({scope:t});this.add(i),this.stack.push(i)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,i){return typeof i=="string"?t.addText(i):i.children&&(t.openNode(i),i.children.forEach(u=>this._walk(t,u)),t.closeNode(i)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(i=>typeof i=="string")?t.children=[t.children.join("")]:t.children.forEach(i=>{te._collapse(i)}))}}class et extends te{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,i){const u=t.root;i&&(u.scope=`language:${i}`),this.add(u)}toHTML(){return new me(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function P(e){return e?typeof e=="string"?e:e.source:null}function Oe(e){return C("(?=",e,")")}function tt(e){return C("(?:",e,")*")}function nt(e){return C("(?:",e,")?")}function C(...e){return e.map(i=>P(i)).join("")}function it(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function ne(...e){return"("+(it(e).capture?"":"?:")+e.map(u=>P(u)).join("|")+")"}function Re(e){return new RegExp(e.toString()+"|").exec("").length-1}function st(e,t){const i=e&&e.exec(t);return i&&i.index===0}const rt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ie(e,{joinWith:t}){let i=0;return e.map(u=>{i+=1;const b=i;let _=P(u),c="";for(;_.length>0;){const r=rt.exec(_);if(!r){c+=_;break}c+=_.substring(0,r.index),_=_.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?c+="\\"+String(Number(r[1])+b):(c+=r[0],r[0]==="("&&i++)}return c}).map(u=>`(${u})`).join(t)}const ct=/\b\B/,ye="[a-zA-Z]\\w*",se="[a-zA-Z_]\\w*",Se="\\b\\d+(\\.\\d+)?",Ne="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ae="\\b(0b[01]+)",ot="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",at=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=C(t,/.*\b/,e.binary,/\b.*/)),B({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(i,u)=>{i.index!==0&&u.ignoreMatch()}},e)},U={begin:"\\\\[\\s\\S]",relevance:0},lt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[U]},ut={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[U]},ft={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Y=function(e,t,i={}){const u=B({scope:"comment",begin:e,end:t,contains:[]},i);u.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const b=ne("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return u.contains.push({begin:C(/[ ]+/,"(",b,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),u},gt=Y("//","$"),ht=Y("/\\*","\\*/"),pt=Y("#","$"),dt={scope:"number",begin:Se,relevance:0},Et={scope:"number",begin:Ne,relevance:0},bt={scope:"number",begin:Ae,relevance:0},_t={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[U,{begin:/\[/,end:/\]/,relevance:0,contains:[U]}]},Mt={scope:"title",begin:ye,relevance:0},xt={scope:"title",begin:se,relevance:0},wt={begin:"\\.\\s*"+se,relevance:0},Ot=function(e){return Object.assign(e,{"on:begin":(t,i)=>{i.data._beginMatch=t[1]},"on:end":(t,i)=>{i.data._beginMatch!==t[1]&&i.ignoreMatch()}})};var z=Object.freeze({__proto__:null,APOS_STRING_MODE:lt,BACKSLASH_ESCAPE:U,BINARY_NUMBER_MODE:bt,BINARY_NUMBER_RE:Ae,COMMENT:Y,C_BLOCK_COMMENT_MODE:ht,C_LINE_COMMENT_MODE:gt,C_NUMBER_MODE:Et,C_NUMBER_RE:Ne,END_SAME_AS_BEGIN:Ot,HASH_COMMENT_MODE:pt,IDENT_RE:ye,MATCH_NOTHING_RE:ct,METHOD_GUARD:wt,NUMBER_MODE:dt,NUMBER_RE:Se,PHRASAL_WORDS_MODE:ft,QUOTE_STRING_MODE:ut,REGEXP_MODE:_t,RE_STARTERS_RE:ot,SHEBANG:at,TITLE_MODE:Mt,UNDERSCORE_IDENT_RE:se,UNDERSCORE_TITLE_MODE:xt});function Rt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function yt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function St(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Rt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Nt(e,t){Array.isArray(e.illegal)&&(e.illegal=ne(...e.illegal))}function At(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function kt(e,t){e.relevance===void 0&&(e.relevance=1)}const Tt=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const i=Object.assign({},e);Object.keys(e).forEach(u=>{delete e[u]}),e.keywords=i.keywords,e.begin=C(i.beforeMatch,Oe(i.begin)),e.starts={relevance:0,contains:[Object.assign(i,{endsParent:!0})]},e.relevance=0,delete i.beforeMatch},It=["of","and","for","in","not","or","if","then","parent","list","value"],Bt="keyword";function ke(e,t,i=Bt){const u=Object.create(null);return typeof e=="string"?b(i,e.split(" ")):Array.isArray(e)?b(i,e):Object.keys(e).forEach(function(_){Object.assign(u,ke(e[_],t,_))}),u;function b(_,c){t&&(c=c.map(r=>r.toLowerCase())),c.forEach(function(r){const l=r.split("|");u[l[0]]=[_,Dt(l[0],l[1])]})}}function Dt(e,t){return t?Number(t):vt(e)?0:1}function vt(e){return It.includes(e.toLowerCase())}const Ee={},v=e=>{console.error(e)},be=(e,...t)=>{console.log(`WARN: ${e}`,...t)},L=(e,t)=>{Ee[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ee[`${e}/${t}`]=!0)},X=new Error;function Te(e,t,{key:i}){let u=0;const b=e[i],_={},c={};for(let r=1;r<=t.length;r++)c[r+u]=b[r],_[r+u]=!0,u+=Re(t[r-1]);e[i]=c,e[i]._emit=_,e[i]._multi=!0}function Ct(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw v("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),X;if(typeof e.beginScope!="object"||e.beginScope===null)throw v("beginScope must be object"),X;Te(e,e.begin,{key:"beginScope"}),e.begin=ie(e.begin,{joinWith:""})}}function Lt(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw v("skip, excludeEnd, returnEnd not compatible with endScope: {}"),X;if(typeof e.endScope!="object"||e.endScope===null)throw v("endScope must be object"),X;Te(e,e.end,{key:"endScope"}),e.end=ie(e.end,{joinWith:""})}}function Ht(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function jt(e){Ht(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Ct(e),Lt(e)}function Pt(e){function t(c,r){return new RegExp(P(c),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class i{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,l){l.position=this.position++,this.matchIndexes[this.matchAt]=l,this.regexes.push([l,r]),this.matchAt+=Re(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(l=>l[1]);this.matcherRe=t(ie(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const l=this.matcherRe.exec(r);if(!l)return null;const w=l.findIndex((j,Z)=>Z>0&&j!==void 0),M=this.matchIndexes[w];return l.splice(0,w),Object.assign(l,M)}}class u{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const l=new i;return this.rules.slice(r).forEach(([w,M])=>l.addRule(w,M)),l.compile(),this.multiRegexes[r]=l,l}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,l){this.rules.push([r,l]),l.type==="begin"&&this.count++}exec(r){const l=this.getMatcher(this.regexIndex);l.lastIndex=this.lastIndex;let w=l.exec(r);if(this.resumingScanAtSamePosition()&&!(w&&w.index===this.lastIndex)){const M=this.getMatcher(0);M.lastIndex=this.lastIndex+1,w=M.exec(r)}return w&&(this.regexIndex+=w.position+1,this.regexIndex===this.count&&this.considerAll()),w}}function b(c){const r=new u;return c.contains.forEach(l=>r.addRule(l.begin,{rule:l,type:"begin"})),c.terminatorEnd&&r.addRule(c.terminatorEnd,{type:"end"}),c.illegal&&r.addRule(c.illegal,{type:"illegal"}),r}function _(c,r){const l=c;if(c.isCompiled)return l;[yt,At,jt,Tt].forEach(M=>M(c,r)),e.compilerExtensions.forEach(M=>M(c,r)),c.__beforeBegin=null,[St,Nt,kt].forEach(M=>M(c,r)),c.isCompiled=!0;let w=null;return typeof c.keywords=="object"&&c.keywords.$pattern&&(c.keywords=Object.assign({},c.keywords),w=c.keywords.$pattern,delete c.keywords.$pattern),w=w||/\w+/,c.keywords&&(c.keywords=ke(c.keywords,e.case_insensitive)),l.keywordPatternRe=t(w,!0),r&&(c.begin||(c.begin=/\B|\b/),l.beginRe=t(l.begin),!c.end&&!c.endsWithParent&&(c.end=/\B|\b/),c.end&&(l.endRe=t(l.end)),l.terminatorEnd=P(l.end)||"",c.endsWithParent&&r.terminatorEnd&&(l.terminatorEnd+=(c.end?"|":"")+r.terminatorEnd)),c.illegal&&(l.illegalRe=t(c.illegal)),c.contains||(c.contains=[]),c.contains=[].concat(...c.contains.map(function(M){return Ut(M==="self"?c:M)})),c.contains.forEach(function(M){_(M,l)}),c.starts&&_(c.starts,r),l.matcher=b(l),l}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=B(e.classNameAliases||{}),_(e)}function Ie(e){return e?e.endsWithParent||Ie(e.starts):!1}function Ut(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return B(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ie(e)?B(e,{starts:e.starts?B(e.starts):null}):Object.isFrozen(e)?B(e):e}var $t="11.11.1";class Gt extends Error{constructor(t,i){super(t),this.name="HTMLInjectionError",this.html=i}}const ee=we,_e=B,Me=Symbol("nomatch"),Wt=7,Be=function(e){const t=Object.create(null),i=Object.create(null),u=[];let b=!0;const _="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:et};function l(n){return r.noHighlightRe.test(n)}function w(n){let a=n.className+" ";a+=n.parentNode?n.parentNode.className:"";const h=r.languageDetectRe.exec(a);if(h){const d=T(h[1]);return d||(be(_.replace("{}",h[1])),be("Falling back to no-highlight mode for this block.",n)),d?h[1]:"no-highlight"}return a.split(/\s+/).find(d=>l(d)||T(d))}function M(n,a,h){let d="",x="";typeof a=="object"?(d=n,h=a.ignoreIllegals,x=a.language):(L("10.7.0","highlight(lang, code, ...args) has been deprecated."),L("10.7.0",`Please use highlight(code, options) instead.
|
|
1
|
+
import{g as Ve}from"./index-DzIDTXLS.js";function xe(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const i=e[t],u=typeof i;(u==="object"||u==="function")&&!Object.isFrozen(i)&&xe(i)}),e}class he{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function we(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function B(e,...t){const i=Object.create(null);for(const u in e)i[u]=e[u];return t.forEach(function(u){for(const b in u)i[b]=u[b]}),i}const qe="</span>",pe=e=>!!e.scope,Qe=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const i=e.split(".");return[`${t}${i.shift()}`,...i.map((u,b)=>`${u}${"_".repeat(b+1)}`)].join(" ")}return`${t}${e}`};class me{constructor(t,i){this.buffer="",this.classPrefix=i.classPrefix,t.walk(this)}addText(t){this.buffer+=we(t)}openNode(t){if(!pe(t))return;const i=Qe(t.scope,{prefix:this.classPrefix});this.span(i)}closeNode(t){pe(t)&&(this.buffer+=qe)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const de=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class te{constructor(){this.rootNode=de(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const i=de({scope:t});this.add(i),this.stack.push(i)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,i){return typeof i=="string"?t.addText(i):i.children&&(t.openNode(i),i.children.forEach(u=>this._walk(t,u)),t.closeNode(i)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(i=>typeof i=="string")?t.children=[t.children.join("")]:t.children.forEach(i=>{te._collapse(i)}))}}class et extends te{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,i){const u=t.root;i&&(u.scope=`language:${i}`),this.add(u)}toHTML(){return new me(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function P(e){return e?typeof e=="string"?e:e.source:null}function Oe(e){return C("(?=",e,")")}function tt(e){return C("(?:",e,")*")}function nt(e){return C("(?:",e,")?")}function C(...e){return e.map(i=>P(i)).join("")}function it(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function ne(...e){return"("+(it(e).capture?"":"?:")+e.map(u=>P(u)).join("|")+")"}function Re(e){return new RegExp(e.toString()+"|").exec("").length-1}function st(e,t){const i=e&&e.exec(t);return i&&i.index===0}const rt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ie(e,{joinWith:t}){let i=0;return e.map(u=>{i+=1;const b=i;let _=P(u),c="";for(;_.length>0;){const r=rt.exec(_);if(!r){c+=_;break}c+=_.substring(0,r.index),_=_.substring(r.index+r[0].length),r[0][0]==="\\"&&r[1]?c+="\\"+String(Number(r[1])+b):(c+=r[0],r[0]==="("&&i++)}return c}).map(u=>`(${u})`).join(t)}const ct=/\b\B/,ye="[a-zA-Z]\\w*",se="[a-zA-Z_]\\w*",Se="\\b\\d+(\\.\\d+)?",Ne="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ae="\\b(0b[01]+)",ot="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",at=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=C(t,/.*\b/,e.binary,/\b.*/)),B({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(i,u)=>{i.index!==0&&u.ignoreMatch()}},e)},U={begin:"\\\\[\\s\\S]",relevance:0},lt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[U]},ut={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[U]},ft={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Y=function(e,t,i={}){const u=B({scope:"comment",begin:e,end:t,contains:[]},i);u.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const b=ne("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return u.contains.push({begin:C(/[ ]+/,"(",b,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),u},gt=Y("//","$"),ht=Y("/\\*","\\*/"),pt=Y("#","$"),dt={scope:"number",begin:Se,relevance:0},Et={scope:"number",begin:Ne,relevance:0},bt={scope:"number",begin:Ae,relevance:0},_t={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[U,{begin:/\[/,end:/\]/,relevance:0,contains:[U]}]},Mt={scope:"title",begin:ye,relevance:0},xt={scope:"title",begin:se,relevance:0},wt={begin:"\\.\\s*"+se,relevance:0},Ot=function(e){return Object.assign(e,{"on:begin":(t,i)=>{i.data._beginMatch=t[1]},"on:end":(t,i)=>{i.data._beginMatch!==t[1]&&i.ignoreMatch()}})};var z=Object.freeze({__proto__:null,APOS_STRING_MODE:lt,BACKSLASH_ESCAPE:U,BINARY_NUMBER_MODE:bt,BINARY_NUMBER_RE:Ae,COMMENT:Y,C_BLOCK_COMMENT_MODE:ht,C_LINE_COMMENT_MODE:gt,C_NUMBER_MODE:Et,C_NUMBER_RE:Ne,END_SAME_AS_BEGIN:Ot,HASH_COMMENT_MODE:pt,IDENT_RE:ye,MATCH_NOTHING_RE:ct,METHOD_GUARD:wt,NUMBER_MODE:dt,NUMBER_RE:Se,PHRASAL_WORDS_MODE:ft,QUOTE_STRING_MODE:ut,REGEXP_MODE:_t,RE_STARTERS_RE:ot,SHEBANG:at,TITLE_MODE:Mt,UNDERSCORE_IDENT_RE:se,UNDERSCORE_TITLE_MODE:xt});function Rt(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function yt(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function St(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Rt,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Nt(e,t){Array.isArray(e.illegal)&&(e.illegal=ne(...e.illegal))}function At(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function kt(e,t){e.relevance===void 0&&(e.relevance=1)}const Tt=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const i=Object.assign({},e);Object.keys(e).forEach(u=>{delete e[u]}),e.keywords=i.keywords,e.begin=C(i.beforeMatch,Oe(i.begin)),e.starts={relevance:0,contains:[Object.assign(i,{endsParent:!0})]},e.relevance=0,delete i.beforeMatch},It=["of","and","for","in","not","or","if","then","parent","list","value"],Bt="keyword";function ke(e,t,i=Bt){const u=Object.create(null);return typeof e=="string"?b(i,e.split(" ")):Array.isArray(e)?b(i,e):Object.keys(e).forEach(function(_){Object.assign(u,ke(e[_],t,_))}),u;function b(_,c){t&&(c=c.map(r=>r.toLowerCase())),c.forEach(function(r){const l=r.split("|");u[l[0]]=[_,Dt(l[0],l[1])]})}}function Dt(e,t){return t?Number(t):vt(e)?0:1}function vt(e){return It.includes(e.toLowerCase())}const Ee={},v=e=>{console.error(e)},be=(e,...t)=>{console.log(`WARN: ${e}`,...t)},L=(e,t)=>{Ee[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Ee[`${e}/${t}`]=!0)},X=new Error;function Te(e,t,{key:i}){let u=0;const b=e[i],_={},c={};for(let r=1;r<=t.length;r++)c[r+u]=b[r],_[r+u]=!0,u+=Re(t[r-1]);e[i]=c,e[i]._emit=_,e[i]._multi=!0}function Ct(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw v("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),X;if(typeof e.beginScope!="object"||e.beginScope===null)throw v("beginScope must be object"),X;Te(e,e.begin,{key:"beginScope"}),e.begin=ie(e.begin,{joinWith:""})}}function Lt(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw v("skip, excludeEnd, returnEnd not compatible with endScope: {}"),X;if(typeof e.endScope!="object"||e.endScope===null)throw v("endScope must be object"),X;Te(e,e.end,{key:"endScope"}),e.end=ie(e.end,{joinWith:""})}}function Ht(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function jt(e){Ht(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Ct(e),Lt(e)}function Pt(e){function t(c,r){return new RegExp(P(c),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(r?"g":""))}class i{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(r,l){l.position=this.position++,this.matchIndexes[this.matchAt]=l,this.regexes.push([l,r]),this.matchAt+=Re(r)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const r=this.regexes.map(l=>l[1]);this.matcherRe=t(ie(r,{joinWith:"|"}),!0),this.lastIndex=0}exec(r){this.matcherRe.lastIndex=this.lastIndex;const l=this.matcherRe.exec(r);if(!l)return null;const w=l.findIndex((j,Z)=>Z>0&&j!==void 0),M=this.matchIndexes[w];return l.splice(0,w),Object.assign(l,M)}}class u{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(r){if(this.multiRegexes[r])return this.multiRegexes[r];const l=new i;return this.rules.slice(r).forEach(([w,M])=>l.addRule(w,M)),l.compile(),this.multiRegexes[r]=l,l}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(r,l){this.rules.push([r,l]),l.type==="begin"&&this.count++}exec(r){const l=this.getMatcher(this.regexIndex);l.lastIndex=this.lastIndex;let w=l.exec(r);if(this.resumingScanAtSamePosition()&&!(w&&w.index===this.lastIndex)){const M=this.getMatcher(0);M.lastIndex=this.lastIndex+1,w=M.exec(r)}return w&&(this.regexIndex+=w.position+1,this.regexIndex===this.count&&this.considerAll()),w}}function b(c){const r=new u;return c.contains.forEach(l=>r.addRule(l.begin,{rule:l,type:"begin"})),c.terminatorEnd&&r.addRule(c.terminatorEnd,{type:"end"}),c.illegal&&r.addRule(c.illegal,{type:"illegal"}),r}function _(c,r){const l=c;if(c.isCompiled)return l;[yt,At,jt,Tt].forEach(M=>M(c,r)),e.compilerExtensions.forEach(M=>M(c,r)),c.__beforeBegin=null,[St,Nt,kt].forEach(M=>M(c,r)),c.isCompiled=!0;let w=null;return typeof c.keywords=="object"&&c.keywords.$pattern&&(c.keywords=Object.assign({},c.keywords),w=c.keywords.$pattern,delete c.keywords.$pattern),w=w||/\w+/,c.keywords&&(c.keywords=ke(c.keywords,e.case_insensitive)),l.keywordPatternRe=t(w,!0),r&&(c.begin||(c.begin=/\B|\b/),l.beginRe=t(l.begin),!c.end&&!c.endsWithParent&&(c.end=/\B|\b/),c.end&&(l.endRe=t(l.end)),l.terminatorEnd=P(l.end)||"",c.endsWithParent&&r.terminatorEnd&&(l.terminatorEnd+=(c.end?"|":"")+r.terminatorEnd)),c.illegal&&(l.illegalRe=t(c.illegal)),c.contains||(c.contains=[]),c.contains=[].concat(...c.contains.map(function(M){return Ut(M==="self"?c:M)})),c.contains.forEach(function(M){_(M,l)}),c.starts&&_(c.starts,r),l.matcher=b(l),l}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=B(e.classNameAliases||{}),_(e)}function Ie(e){return e?e.endsWithParent||Ie(e.starts):!1}function Ut(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return B(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Ie(e)?B(e,{starts:e.starts?B(e.starts):null}):Object.isFrozen(e)?B(e):e}var $t="11.11.1";class Gt extends Error{constructor(t,i){super(t),this.name="HTMLInjectionError",this.html=i}}const ee=we,_e=B,Me=Symbol("nomatch"),Wt=7,Be=function(e){const t=Object.create(null),i=Object.create(null),u=[];let b=!0;const _="Could not find the language '{}', did you forget to load/include a language module?",c={disableAutodetect:!0,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:et};function l(n){return r.noHighlightRe.test(n)}function w(n){let a=n.className+" ";a+=n.parentNode?n.parentNode.className:"";const h=r.languageDetectRe.exec(a);if(h){const d=T(h[1]);return d||(be(_.replace("{}",h[1])),be("Falling back to no-highlight mode for this block.",n)),d?h[1]:"no-highlight"}return a.split(/\s+/).find(d=>l(d)||T(d))}function M(n,a,h){let d="",x="";typeof a=="object"?(d=n,h=a.ignoreIllegals,x=a.language):(L("10.7.0","highlight(lang, code, ...args) has been deprecated."),L("10.7.0",`Please use highlight(code, options) instead.
|
|
2
2
|
https://github.com/highlightjs/highlight.js/issues/2277`),x=n,d=a),h===void 0&&(h=!0);const S={code:d,language:x};G("before:highlight",S);const I=S.result?S.result:j(S.language,S.code,h);return I.code=S.code,G("after:highlight",I),I}function j(n,a,h,d){const x=Object.create(null);function S(s,o){return s.keywords[o]}function I(){if(!f.keywords){O.addText(E);return}let s=0;f.keywordPatternRe.lastIndex=0;let o=f.keywordPatternRe.exec(E),g="";for(;o;){g+=E.substring(s,o.index);const p=A.case_insensitive?o[0].toLowerCase():o[0],R=S(f,p);if(R){const[k,Ze]=R;if(O.addText(g),g="",x[p]=(x[p]||0)+1,x[p]<=Wt&&(F+=Ze),k.startsWith("_"))g+=o[0];else{const Je=A.classNameAliases[k]||k;N(o[0],Je)}}else g+=o[0];s=f.keywordPatternRe.lastIndex,o=f.keywordPatternRe.exec(E)}g+=E.substring(s),O.addText(g)}function W(){if(E==="")return;let s=null;if(typeof f.subLanguage=="string"){if(!t[f.subLanguage]){O.addText(E);return}s=j(f.subLanguage,E,!0,ge[f.subLanguage]),ge[f.subLanguage]=s._top}else s=J(E,f.subLanguage.length?f.subLanguage:null);f.relevance>0&&(F+=s.relevance),O.__addSublanguage(s._emitter,s.language)}function y(){f.subLanguage!=null?W():I(),E=""}function N(s,o){s!==""&&(O.startScope(o),O.addText(s),O.endScope())}function ae(s,o){let g=1;const p=o.length-1;for(;g<=p;){if(!s._emit[g]){g++;continue}const R=A.classNameAliases[s[g]]||s[g],k=o[g];R?N(k,R):(E=k,I(),E=""),g++}}function le(s,o){return s.scope&&typeof s.scope=="string"&&O.openNode(A.classNameAliases[s.scope]||s.scope),s.beginScope&&(s.beginScope._wrap?(N(E,A.classNameAliases[s.beginScope._wrap]||s.beginScope._wrap),E=""):s.beginScope._multi&&(ae(s.beginScope,o),E="")),f=Object.create(s,{parent:{value:f}}),f}function ue(s,o,g){let p=st(s.endRe,g);if(p){if(s["on:end"]){const R=new he(s);s["on:end"](o,R),R.isMatchIgnored&&(p=!1)}if(p){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return ue(s.parent,o,g)}function Ke(s){return f.matcher.regexIndex===0?(E+=s[0],1):(m=!0,0)}function Fe(s){const o=s[0],g=s.rule,p=new he(g),R=[g.__beforeBegin,g["on:begin"]];for(const k of R)if(k&&(k(s,p),p.isMatchIgnored))return Ke(o);return g.skip?E+=o:(g.excludeBegin&&(E+=o),y(),!g.returnBegin&&!g.excludeBegin&&(E=o)),le(g,s),g.returnBegin?0:o.length}function ze(s){const o=s[0],g=a.substring(s.index),p=ue(f,s,g);if(!p)return Me;const R=f;f.endScope&&f.endScope._wrap?(y(),N(o,f.endScope._wrap)):f.endScope&&f.endScope._multi?(y(),ae(f.endScope,s)):R.skip?E+=o:(R.returnEnd||R.excludeEnd||(E+=o),y(),R.excludeEnd&&(E=o));do f.scope&&O.closeNode(),!f.skip&&!f.subLanguage&&(F+=f.relevance),f=f.parent;while(f!==p.parent);return p.starts&&le(p.starts,s),R.returnEnd?0:o.length}function Xe(){const s=[];for(let o=f;o!==A;o=o.parent)o.scope&&s.unshift(o.scope);s.forEach(o=>O.openNode(o))}let K={};function fe(s,o){const g=o&&o[0];if(E+=s,g==null)return y(),0;if(K.type==="begin"&&o.type==="end"&&K.index===o.index&&g===""){if(E+=a.slice(o.index,o.index+1),!b){const p=new Error(`0 width match regex (${n})`);throw p.languageName=n,p.badRule=K.rule,p}return 1}if(K=o,o.type==="begin")return Fe(o);if(o.type==="illegal"&&!h){const p=new Error('Illegal lexeme "'+g+'" for mode "'+(f.scope||"<unnamed>")+'"');throw p.mode=f,p}else if(o.type==="end"){const p=ze(o);if(p!==Me)return p}if(o.type==="illegal"&&g==="")return E+=`
|
|
3
3
|
`,1;if(Q>1e5&&Q>o.index*3)throw new Error("potential infinite loop, way more iterations than matches");return E+=g,g.length}const A=T(n);if(!A)throw v(_.replace("{}",n)),new Error('Unknown language: "'+n+'"');const Ye=Pt(A);let q="",f=d||Ye;const ge={},O=new r.__emitter(r);Xe();let E="",F=0,D=0,Q=0,m=!1;try{if(A.__emitTokens)A.__emitTokens(a,O);else{for(f.matcher.considerAll();;){Q++,m?m=!1:f.matcher.considerAll(),f.matcher.lastIndex=D;const s=f.matcher.exec(a);if(!s)break;const o=a.substring(D,s.index),g=fe(o,s);D=s.index+g}fe(a.substring(D))}return O.finalize(),q=O.toHTML(),{language:n,value:q,relevance:F,illegal:!1,_emitter:O,_top:f}}catch(s){if(s.message&&s.message.includes("Illegal"))return{language:n,value:ee(a),illegal:!0,relevance:0,_illegalBy:{message:s.message,index:D,context:a.slice(D-100,D+100),mode:s.mode,resultSoFar:q},_emitter:O};if(b)return{language:n,value:ee(a),illegal:!1,relevance:0,errorRaised:s,_emitter:O,_top:f};throw s}}function Z(n){const a={value:ee(n),illegal:!1,relevance:0,_top:c,_emitter:new r.__emitter(r)};return a._emitter.addText(n),a}function J(n,a){a=a||r.languages||Object.keys(t);const h=Z(n),d=a.filter(T).filter(oe).map(y=>j(y,n,!1));d.unshift(h);const x=d.sort((y,N)=>{if(y.relevance!==N.relevance)return N.relevance-y.relevance;if(y.language&&N.language){if(T(y.language).supersetOf===N.language)return 1;if(T(N.language).supersetOf===y.language)return-1}return 0}),[S,I]=x,W=S;return W.secondBest=I,W}function De(n,a,h){const d=a&&i[a]||h;n.classList.add("hljs"),n.classList.add(`language-${d}`)}function V(n){let a=null;const h=w(n);if(l(h))return;if(G("before:highlightElement",{el:n,language:h}),n.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",n);return}if(n.children.length>0&&(r.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(n)),r.throwUnescapedHTML))throw new Gt("One of your code blocks includes unescaped HTML.",n.innerHTML);a=n;const d=a.textContent,x=h?M(d,{language:h,ignoreIllegals:!0}):J(d);n.innerHTML=x.value,n.dataset.highlighted="yes",De(n,h,x.language),n.result={language:x.language,re:x.relevance,relevance:x.relevance},x.secondBest&&(n.secondBest={language:x.secondBest.language,relevance:x.secondBest.relevance}),G("after:highlightElement",{el:n,result:x,text:d})}function ve(n){r=_e(r,n)}const Ce=()=>{$(),L("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Le(){$(),L("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let re=!1;function $(){function n(){$()}if(document.readyState==="loading"){re||window.addEventListener("DOMContentLoaded",n,!1),re=!0;return}document.querySelectorAll(r.cssSelector).forEach(V)}function He(n,a){let h=null;try{h=a(e)}catch(d){if(v("Language definition for '{}' could not be registered.".replace("{}",n)),b)v(d);else throw d;h=c}h.name||(h.name=n),t[n]=h,h.rawDefinition=a.bind(null,e),h.aliases&&ce(h.aliases,{languageName:n})}function je(n){delete t[n];for(const a of Object.keys(i))i[a]===n&&delete i[a]}function Pe(){return Object.keys(t)}function T(n){return n=(n||"").toLowerCase(),t[n]||t[i[n]]}function ce(n,{languageName:a}){typeof n=="string"&&(n=[n]),n.forEach(h=>{i[h.toLowerCase()]=a})}function oe(n){const a=T(n);return a&&!a.disableAutodetect}function Ue(n){n["before:highlightBlock"]&&!n["before:highlightElement"]&&(n["before:highlightElement"]=a=>{n["before:highlightBlock"](Object.assign({block:a.el},a))}),n["after:highlightBlock"]&&!n["after:highlightElement"]&&(n["after:highlightElement"]=a=>{n["after:highlightBlock"](Object.assign({block:a.el},a))})}function $e(n){Ue(n),u.push(n)}function Ge(n){const a=u.indexOf(n);a!==-1&&u.splice(a,1)}function G(n,a){const h=n;u.forEach(function(d){d[h]&&d[h](a)})}function We(n){return L("10.7.0","highlightBlock will be removed entirely in v12.0"),L("10.7.0","Please use highlightElement now."),V(n)}Object.assign(e,{highlight:M,highlightAuto:J,highlightAll:$,highlightElement:V,highlightBlock:We,configure:ve,initHighlighting:Ce,initHighlightingOnLoad:Le,registerLanguage:He,unregisterLanguage:je,listLanguages:Pe,getLanguage:T,registerAliases:ce,autoDetection:oe,inherit:_e,addPlugin:$e,removePlugin:Ge}),e.debugMode=function(){b=!1},e.safeMode=function(){b=!0},e.versionString=$t,e.regex={concat:C,lookahead:Oe,either:ne,optional:nt,anyNumberOfTimes:tt};for(const n in z)typeof z[n]=="object"&&xe(z[n]);return Object.assign(e,z),e},H=Be({});H.newInstance=()=>Be({});var Kt=H;H.HighlightJS=H;H.default=H;const zt=Ve(Kt);export{zt as HighlightJS,zt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.slot-text{display:inline-flex;white-space:pre}.char-slot{position:relative;display:inline-flex;flex:none;justify-content:center;overflow:hidden;overflow-x:visible;overflow-y:clip;line-height:1.3;vertical-align:bottom}.char-slot.is-resizing{overflow-x:clip}.char-sizer{visibility:hidden;white-space:pre}.char-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;white-space:pre;will-change:transform}.cmdk-backdrop{position:fixed;inset:0;background:#010203b8;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;z-index:100;padding:72px 16px 24px}@media (max-width: 759px){.cmdk-backdrop{padding:48px 12px 16px}}.cmdk-panel{width:100%;max-width:560px;max-width:min(560px,92vw);max-height:50vh;display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 8px 24px #00000073,0 2px 6px #0000004d}.cmdk-search-row{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);flex:0 0 auto}.cmdk-search-icon{color:var(--text-faint);display:flex;align-items:center;flex:0 0 auto}.cmdk-input{flex:1 1 auto;background:transparent;border:none;outline:none;color:var(--text);font-family:inherit;font-size:15px;line-height:1.4;-webkit-appearance:none;appearance:none}.cmdk-input::placeholder{color:var(--text-faint)}.cmdk-clear{background:none;border:none;cursor:pointer;color:var(--text-faint);font-size:16px;line-height:1;padding:2px 4px;border-radius:4px;flex:0 0 auto;transition:color .12s var(--ease)}.cmdk-clear:hover{color:var(--text)}.cmdk-list{list-style:none;margin:0;padding:4px 0;overflow-y:auto;flex:1 1 auto;overscroll-behavior:contain}.cmdk-section-list{list-style:none;margin:0;padding:0}.cmdk-section{list-style:none}.cmdk-group-header{padding:6px 12px 2px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);user-select:none}.cmdk-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 12px;cursor:default;border-left:2px solid transparent;transition:background 80ms,border-color 80ms}.cmdk-row:hover,.cmdk-row--active{background:var(--bg-hover)}.cmdk-row--active{border-left-color:var(--accent)}.cmdk-row-label{flex:1 1 auto;color:var(--text);font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmdk-row-hint{flex:0 0 auto;color:var(--text-faint);font-size:11px;font-family:ui-monospace,SF Mono,Menlo,monospace;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;text-align:right}.cmdk-row-key{flex:0 0 auto;display:inline-flex;align-items:center;min-width:28px;justify-content:center;padding:2px 6px;border-radius:5px;background:var(--bg-2);border:1px solid var(--line);color:var(--text-dim);font-size:10.5px;font-weight:700;font-family:ui-monospace,SF Mono,Menlo,monospace;white-space:nowrap}.cmdk-row--active .cmdk-row-key{color:var(--text);border-color:color-mix(in oklch,var(--accent) 45%,transparent)}.cmdk-empty{padding:24px 12px;text-align:center;color:var(--text-faint);font-size:13px}:root{--bg: oklch(16% .012 260);--bg-1: oklch(20% .014 260);--bg-2: oklch(24% .016 260);--bg-hover: oklch(27% .02 260);--line: oklch(32% .015 260);--text: oklch(92% .01 250);--text-dim: oklch(66% .012 250);--text-faint: oklch(52% .012 250);--accent: oklch(70% .15 250);--accent-2: oklch(74% .13 200);--amber: oklch(80% .16 80);--amber-bg: oklch(40% .1 80);--red: oklch(64% .2 25);--red-bg: oklch(30% .09 25);--green: oklch(72% .16 150);--user: oklch(.24 .03 249.98);--txt-transcript: 13.5px;--txt-meta: 11px;--txt-composer: 16px;--hud-h: 34px;--radius: 10px;--ease: cubic-bezier(.16, 1, .3, 1);--safe-top: env(safe-area-inset-top);--safe-bottom: env(safe-area-inset-bottom);color-scheme:dark}@media (min-width: 760px){:root{--txt-transcript: 14.5px;--txt-meta: 12px;--txt-composer: 16px;--safe-top: 0px;--safe-bottom: 0px}}@media (display-mode: standalone){:root{--safe-top: env(safe-area-inset-top)}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:var(--txt-transcript);line-height:1.45;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100dvh}.hud{display:flex;align-items:center;gap:12px;height:var(--hud-h);padding:0 12px;padding-top:var(--safe-top);background:var(--bg-1);border-bottom:1px solid var(--line);font-size:var(--txt-meta);color:var(--text-dim);white-space:nowrap;overflow-x:auto;overscroll-behavior:contain;flex:0 0 auto;box-sizing:content-box}.hud[data-warn=true]{background:var(--amber-bg);color:var(--text)}.hud-brand{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--text);letter-spacing:.02em;flex:0 0 auto}.hud-group{display:inline-flex;gap:4px;align-items:baseline}.hud-k{color:var(--text-faint)}.hud-v{color:var(--text);font-variant-numeric:tabular-nums}.hud-warn-text{color:var(--amber);font-weight:600}.conn-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--text-faint)}.conn-connected{background:var(--green)}.conn-connecting{background:var(--amber)}.conn-disconnected{background:var(--red)}.app-body{flex:1 1 auto;display:flex;min-height:0}.rail{width:100%;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--bg)}.rail-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.detail{display:none;flex-direction:column;min-width:0;width:100%}.app[data-detail=open] .rail{display:none}.app[data-detail=open] .detail{display:flex}@media (min-width: 760px){.rail{width:300px;flex:0 0 300px;border-right:1px solid var(--line)}.detail,.app[data-detail=open] .detail,.app[data-detail=open] .rail,.app[data-detail=closed] .rail{display:flex}.back-btn{display:none!important}}.session-list{list-style:none;margin:0;padding:6px;display:flex;flex-direction:column;gap:4px}.session-group{display:flex;flex-direction:column;margin-bottom:10px}.session-group-head{display:flex;align-items:center;gap:6px;width:100%;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted, #8a8f98);padding:6px 8px;background:none;border:none;border-radius:6px;cursor:pointer;text-align:left}.session-group-head:hover{color:var(--text);background:var(--bg-hover)}.session-group-chevron{flex:0 0 auto;font-size:9px;opacity:.8}.session-group-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-group-count{flex:0 0 auto;font-size:10px;font-weight:700;padding:1px 6px;border-radius:999px;background:var(--bg-2);color:var(--text-dim)}.session-window{display:flex;flex-direction:column;margin-left:4px;padding-left:6px;border-left:1px solid var(--line)}.session-window-head{display:flex;align-items:baseline;gap:6px;padding:4px 6px 2px;font-size:12px}.session-window-head .window-idx{font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:700;color:var(--accent);opacity:.85}.session-window-head .window-name{color:var(--text-1, inherit);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-pane-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.pane-icon{flex:0 0 auto;display:inline-flex;align-items:center;opacity:.4;transition:opacity var(--ease) .15s}.pane-icon[data-active=true]{opacity:1}.pane-icon[data-kind=terminal]{color:var(--accent-2)}.pane-icon[data-kind=claude],.pane-icon[data-kind=codex]{position:relative;overflow:visible}.pane-icon[data-state=ask],.pane-icon[data-state=working]{opacity:1}@keyframes pane-icon-bob{50%{transform:translateY(-2px)}}.pane-icon[data-state=working] svg{animation:pane-icon-bob .9s var(--ease) infinite}.pane-icon-badge{position:absolute;top:-5px;right:-6px;pointer-events:none;line-height:1;font-weight:900}.pane-icon-ask{display:inline-flex;align-items:center;justify-content:center;width:12px;height:12px;border-radius:50%;background:var(--amber);color:#1a1306;font-size:8.5px;box-shadow:0 0 0 1.5px var(--bg);animation:pulse 1.6s var(--ease) infinite}.pane-icon-zzz{color:var(--text-faint);font-size:9px;font-style:italic;animation:pane-icon-zzz 2.6s var(--ease) infinite}@keyframes pane-icon-zzz{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:.85;transform:translateY(-2px)}}.pane-icon[data-state=cloning]{opacity:1}.pane-icon[data-state=cloning] svg{animation:pane-icon-clone-bob 1.4s var(--ease) infinite}.pane-icon-clone{position:absolute;bottom:-4px;right:-5px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px var(--bg);animation:pane-icon-clone-bud 1.4s var(--ease) infinite}@keyframes pane-icon-clone-bob{0%,to{transform:translateY(0) scale(1)}35%{transform:translateY(-3px) scale(1.08,.92)}55%{transform:translateY(-1px) scale(.95,1.05)}75%{transform:translateY(0) scale(1)}}@keyframes pane-icon-clone-bud{0%,18%{opacity:0;transform:scale(.2)}35%{opacity:1;transform:scale(1.2)}70%{opacity:.6;transform:scale(1) translate(2px,2px)}to{opacity:0;transform:scale(.3) translate(4px,4px)}}@media (prefers-reduced-motion: reduce){.pane-icon[data-state=working] svg,.pane-icon[data-state=cloning] svg,.pane-icon-ask,.pane-icon-clone,.pane-icon-zzz,.detail-action[data-running=true],.subagent-strip-row .sa-dot{animation:none}.pane-icon-clone{opacity:.85;transform:scale(1)}}.session-item[data-kind=terminal]{background:transparent;border-style:dashed;border-color:var(--line);padding-top:7px;padding-bottom:7px}.meta-cwd{font-family:ui-monospace,SF Mono,Menlo,monospace;opacity:.7}.meta-cwd-inline{margin-left:auto;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:8px;font-size:var(--txt-meta)}.terminal-pane-root{min-height:0;padding:8px 8px 10px;gap:8px}.terminal-pane-root .terminal-view{flex:1 1 auto;max-height:none;min-height:0;margin-bottom:0}.terminal-pane-root .terminal-pane-input{flex:0 0 auto}.terminal-pane-input{width:100%;max-width:880px;margin-inline:auto;padding:8px;border:1px solid var(--red);border-radius:12px;background:var(--bg)}.terminal-pane-input .composer-input{width:100%;background:transparent;border:none;outline:none;resize:none;color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--txt-transcript)}.session-item{padding:9px 11px;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;background:var(--bg-1);transition:background var(--ease) .15s,border-color var(--ease) .15s}.session-item:hover{background:var(--bg-hover)}.session-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.session-item[data-selected=true]{border-color:var(--accent);background:var(--bg-2)}.session-top{display:flex;align-items:center;gap:7px}.session-name{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}.ask-badge{flex:0 0 auto;font-size:9.5px;font-weight:800;letter-spacing:.06em;padding:2px 6px;border-radius:6px;background:var(--amber-bg);color:var(--amber);animation:pulse 1.6s var(--ease) infinite}@keyframes pulse{50%{opacity:.55}}.session-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;font-size:var(--txt-meta);color:var(--text-dim);align-items:center}.meta-model{color:var(--accent-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}.meta-ctx{font-variant-numeric:tabular-nums;padding:1px 5px;border-radius:5px;background:var(--bg-2);color:var(--text-dim);margin-left:auto}.meta-usage{font-variant-numeric:tabular-nums;padding:1px 5px;border-radius:5px;background:var(--bg-2);color:var(--text-faint);margin-left:auto;opacity:.85}.session-empty{list-style:none;padding:16px;color:var(--text-faint);text-align:center}.detail-head{display:flex;align-items:center;gap:8px;padding:8px 10px;min-height:48px;box-sizing:border-box;border-bottom:1px solid var(--line);background:var(--bg-1);flex:0 0 auto}.back-btn{font-size:22px;line-height:1;background:none;border:none;color:var(--accent);padding:2px 8px;cursor:pointer;flex:0 0 auto}.detail-title{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;flex:1 1 auto}@media (max-width: 759px){.detail-head{flex-wrap:wrap;row-gap:6px}.detail-title{flex-direction:column;align-items:flex-start;gap:2px;flex:1 1 auto;min-width:0;max-width:100%}.detail-name,.detail-title .detail-cwd{max-width:100%}.detail-actions{flex-basis:100%;margin-left:0;padding-left:0;justify-content:flex-end}}.detail-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto;margin-left:auto;padding-left:18px}.detail-action{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:30px;min-width:30px;padding:0 6px;background:none;border:1px solid transparent;border-radius:7px;color:var(--text-dim);cursor:pointer;transition:color var(--ease) .15s,background var(--ease) .15s,border-color var(--ease) .15s}.detail-action:hover{color:var(--text);background:var(--bg-hover)}.detail-action[data-on=true]{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 40%,transparent)}.detail-action:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.detail-action-count{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.detail-action[data-running=true]{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 45%,transparent);animation:agents-pulse 1.6s var(--ease) infinite}.detail-action[data-running=true] .detail-action-count{color:var(--accent)}@keyframes agents-pulse{0%,to{box-shadow:0 0 color-mix(in oklch,var(--accent) 35%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in oklch,var(--accent) 0%,transparent)}}.detail-name{font-weight:700;font-size:13px;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-cwd{flex:0 1 auto;min-width:0;display:inline-flex;align-items:center;max-width:45%;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--bg-2);color:var(--text-dim);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-name-row{display:flex;align-items:center;gap:6px;min-width:0}.rename-btn{flex:0 0 auto;background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:12px;line-height:1;padding:2px 4px;border-radius:4px}.rename-btn:hover{color:var(--text);background:var(--bg-hover)}.detail-rename-input{width:100%;font-weight:700;font-size:13px;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:3px 7px;outline:none}.detail-rename-input:focus{border-color:var(--accent)}.live-pane{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;padding:12px 12px 6px}.live-pane-head{flex:0 0 auto;font-size:var(--txt-meta);color:var(--text-faint);margin-bottom:6px}.live-pane-body{flex:1 1 auto;margin:0;padding:10px;border-radius:8px;background:var(--bg);border:1px solid var(--line);color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--txt-transcript);white-space:pre;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.terminal-view{display:flex;flex-direction:column;width:100%;max-width:880px;margin-inline:auto;margin-bottom:8px;max-height:48dvh;border:1px solid var(--red);border-radius:12px;background:var(--bg);overflow:hidden}.terminal-view-head{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--line);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--txt-meta);color:var(--red);background:var(--red-bg)}.terminal-view-btn{border:1px solid var(--red);background:transparent;color:var(--red);border-radius:6px;padding:2px 10px;font-size:12px;cursor:pointer}.terminal-view-btn:hover{background:var(--red-bg)}.terminal-view-body{flex:1 1 auto;min-height:0;margin:0;padding:10px 12px;background:#0b0d10;color:#c0caf5;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--txt-transcript);line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;-webkit-overflow-scrolling:touch;user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}.terminal-view-body a{color:#7dcfff;text-decoration:underline;text-underline-offset:2px}.terminal-view-body a:hover{color:#a4daff}.terminal-key-bar{flex:0 0 auto;display:flex;align-items:center;gap:4px;padding:6px 8px;border-top:1px solid var(--line);background:#0b0d10;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.terminal-key-bar::-webkit-scrollbar{display:none}.terminal-key{flex:0 0 auto;min-width:34px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#161a22;color:#c0caf5;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation}.terminal-key:hover{background:#232838}.terminal-key:active{background:var(--red-bg);border-color:var(--red);color:var(--red)}.terminal-key-mod{font-size:12px;letter-spacing:.02em}.terminal-key-mod[data-on=true]{background:var(--red);border-color:var(--red);color:#fff}.terminal-key-gap{flex:0 0 auto;width:1px;height:18px;background:var(--line);margin-inline:4px}.thread-root{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative}.app-top-fade{position:fixed;top:0;left:0;right:0;height:calc(var(--safe-top) + 52px);background:linear-gradient(to bottom,var(--bg) 55%,transparent);pointer-events:none;opacity:0;transition:opacity .28s var(--ease, ease);z-index:40}@media (max-width: 760px){.app:focus-within .app-top-fade{opacity:1}}@media (prefers-reduced-motion: reduce){.app-top-fade{transition:none}}.thread-viewport{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;overflow-x:hidden;padding:12px max(12px,calc((100% - 800px)/2)) 20px;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch}.thread-empty{margin:auto;color:var(--text-faint);text-align:center}.thread-welcome{margin:auto;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center;max-width:480px;padding:0 20px}.thread-welcome-heading{margin:0;font-family:ui-serif,Georgia,Times New Roman,serif;font-size:clamp(1.6rem,4vw,2.4rem);font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1.15}.thread-welcome-subtitle{margin:0;font-size:var(--txt-transcript);color:var(--text-dim);line-height:1.5}.thread-welcome-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.thread-welcome-chip{all:unset;display:inline-block;padding:5px 12px;border-radius:20px;background:var(--bg-2);border:1px solid var(--line);font-size:var(--txt-meta);color:var(--text-dim);line-height:1.4;cursor:default;user-select:none;white-space:nowrap;transition:background .12s var(--ease),border-color .12s var(--ease),color .12s var(--ease)}.thread-welcome-chip[data-clickable=true]{cursor:pointer}.thread-welcome-chip[data-clickable=true]:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--text)}.thread-welcome-chip[data-clickable=true]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.thread-welcome-chip[data-clickable=true]:active{background:var(--bg-2);color:var(--accent)}.thread-loading{margin:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;opacity:.5}.thread-loading-spinner{display:block;width:22px;height:22px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:cockpit-spin .7s linear infinite}@media (prefers-reduced-motion: reduce){.thread-loading-spinner{animation:none;border-color:var(--accent);opacity:.4}}.load-earlier{align-self:center;flex:0 0 auto;margin:2px 0 4px;padding:5px 12px;font:inherit;font-size:11.5px;color:var(--text-dim);background:var(--bg-2);border:1px solid var(--line);border-radius:999px;cursor:pointer;transition:background .12s ease,color .12s ease}.load-earlier:hover{background:var(--bg-hover);color:var(--text)}.load-earlier:active{background:var(--line)}.msg-row{display:flex;flex-direction:column;gap:3px;max-width:92%;min-width:0}.msg-row[data-role=user]{align-self:flex-end;align-items:flex-end}.msg-body{display:flex;flex-direction:column;gap:6px;background:transparent;border:1px solid transparent;border-radius:var(--radius);font-size:var(--txt-transcript);min-width:0;max-width:100%}.msg-row[data-role=assistant] .msg-body{padding:0}.msg-row[data-role=user] .msg-body{background:var(--user);border:1px solid transparent;border-left:2px solid var(--accent);padding:8px 10px}.msg-row[data-role=system] .msg-body{background:transparent;border:1px dashed var(--line);color:var(--text-dim);padding:8px 10px}.msg-row[data-queued=true]{opacity:.62}.msg-row[data-queued=true] .msg-body{border:1px dashed var(--line);background:transparent}.msg-actions{display:flex;gap:4px;margin-top:2px;padding:0 2px}.msg-row[data-role=user] .msg-actions{justify-content:flex-end}.act-btn{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--text-faint);font-size:11px;cursor:pointer;transition:background var(--ease) .15s,color var(--ease) .15s}.act-btn:hover{background:var(--bg-1);color:var(--text)}.act-copy-done{display:none;align-items:center;gap:4px;color:var(--green)}.act-btn[data-copied] .act-copy-idle{display:none}.act-btn[data-copied] .act-copy-done{display:inline-flex}.act-btn[data-copied]{color:var(--green)}.transcript-img{max-width:min(320px,100%);max-height:240px;border-radius:var(--radius);border:1px solid var(--line);cursor:zoom-in;display:block;object-fit:contain}.lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#000000d1;padding:24px;cursor:zoom-out}.lightbox-img{max-width:100%;max-height:100%;border-radius:var(--radius);box-shadow:0 10px 40px #00000080;cursor:default}.lightbox-close{position:absolute;top:16px;right:20px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--bg-1);color:var(--text);font-size:22px;line-height:1;cursor:pointer}.login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg, #0b0d10);padding:24px}.login-card{display:flex;flex-direction:column;gap:10px;width:min(340px,88vw)}.login-title{margin:0;font-size:18px;font-weight:700;letter-spacing:.02em}.login-sub{margin:0;font-size:13px;color:var(--text-dim)}.login-input{padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--bg-1);color:var(--text);font-size:16px}.login-err{min-height:16px;font-size:12px;color:#f87171}.login-btn{padding:12px 14px;border-radius:10px;border:0;background:var(--accent, #3b82f6);color:#fff;font-size:15px;font-weight:600;cursor:pointer}.login-btn:disabled{opacity:.55}.hud-logout{margin-left:8px;border:1px solid var(--line);background:transparent;color:var(--text-dim);border-radius:6px;padding:2px 7px;font-size:13px;cursor:pointer}.pin-modal{display:flex;flex-direction:column;gap:10px;max-height:80vh}.pin-search{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);color:var(--text);font-size:14px}.pin-unpin{padding:8px 10px;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--bg-1);color:var(--text-dim);font-size:12px}.pin-list{overflow-y:auto;display:flex;flex-direction:column;gap:4px}.pin-empty{color:var(--text-faint);font-size:12px;padding:16px;text-align:center}.pin-row{display:flex;flex-direction:column;gap:2px;text-align:left;padding:8px 10px;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--bg-1);color:var(--text)}.pin-row:hover,.pin-row[data-current=true]{border-color:var(--accent, #3b82f6)}.pin-row-title{font-size:13px;font-weight:600}.pin-row-cur{color:var(--accent, #3b82f6);font-weight:400}.pin-row-meta{display:flex;gap:8px;font-size:11px;color:var(--text-faint)}.pin-row-cwd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pin-row-when{margin-left:auto;white-space:nowrap}.pin-toggle{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);font-size:14px;cursor:pointer}.pin-toggle[aria-pressed=true]{border-color:var(--accent, #3b82f6)}.pin-toggle+.subagents-toggle{margin-left:6px}.subagents-toggle{margin-left:auto;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);color:var(--text-dim);font-size:12px;cursor:pointer}.subagents-toggle[aria-pressed=true]{color:var(--text);border-color:var(--accent, #3b82f6)}.subagents-badge{min-width:16px;padding:0 5px;border-radius:8px;background:var(--accent, #3b82f6);color:#fff;font-size:11px;text-align:center}.sa-backdrop{position:fixed;inset:0;z-index:899;background:#01020399;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:sa-backdrop-in .2s ease both}@keyframes sa-backdrop-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.sa-backdrop{animation:none}}.sa-panel{position:fixed;top:0;right:0;bottom:0;z-index:900;width:min(560px,100vw);display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--line);box-shadow:-12px 0 40px #0006}@media (min-width: 760px){.sa-panel{width:50vw;max-width:none}}.sa-panel-head{display:flex;align-items:center;gap:8px;padding:calc(10px + var(--safe-top)) 12px 10px;border-bottom:1px solid var(--line)}.sa-panel-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.sa-count{padding:0 6px;border-radius:8px;background:var(--bg-1);color:var(--text-dim);font-size:11px}.sa-count-running{color:var(--accent, #3b82f6);font-size:11px}.sa-panel-close{margin-left:auto;width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);color:var(--text);font-size:18px;cursor:pointer}.sa-panel-body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.sa-empty{color:var(--text-faint);font-size:12px;padding:16px}.sa-tabs{display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--line)}.sa-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 8px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);color:var(--text-dim);font-size:12px;cursor:pointer}.sa-tab[data-on=true]{color:var(--text);border-color:var(--accent, #3b82f6)}.sa-tab-count{font-size:10px;color:var(--text-faint)}.sa-item-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:12px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);font-size:12px;line-height:1.4;cursor:pointer}.sa-item-row:hover{background:var(--bg-1)}.sa-chevron{margin-left:4px;color:var(--text-faint);flex:0 0 auto}.sa-back{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--bg-1);color:var(--text);font-size:18px;cursor:pointer;flex:0 0 auto}.sa-detail-title{min-width:0;flex:1 1 auto;font-weight:400}.sa-thread-root{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.sa-thread-viewport{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:12px;padding:12px max(12px,calc((100% - 800px)/2)) 20px}.sa-item{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:8px;background:var(--bg-1)}.sa-summary{display:flex;align-items:center;gap:8px;padding:11px 12px;cursor:pointer;font-size:12px;line-height:1.4}.sa-dot{width:7px;height:7px;border-radius:50%;background:var(--text-faint);flex:0 0 auto}.sa-dot[data-status=running]{background:var(--accent, #3b82f6)}.sa-type{font-weight:600;white-space:nowrap;flex:0 0 auto}.sa-desc{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}.sa-status{margin-left:auto;color:var(--text-faint);white-space:nowrap;flex:0 0 auto}@media (max-width: 760px){.sa-summary{flex-wrap:wrap}.sa-desc{white-space:normal;overflow:visible;text-overflow:clip;flex-basis:100%}.sa-status{margin-left:auto}}.sa-transcript{padding:6px 10px 10px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.sa-msg{display:flex;flex-direction:column;gap:3px}.sa-msg-role{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.sa-text{font-size:12.5px;white-space:pre-wrap;word-break:break-word}.sa-think{font-size:11.5px;color:var(--text-dim)}.sa-think-body{white-space:pre-wrap;color:var(--text-faint)}.sa-tool{font-size:11.5px;font-family:ui-monospace,monospace;color:var(--text-dim)}.sa-tool-arg{color:var(--text-faint)}.sa-result{font-size:11px;font-family:ui-monospace,monospace;white-space:pre-wrap;word-break:break-word;color:var(--text-faint);border-left:2px solid var(--line);padding-left:8px}.sa-result[data-error=true]{color:#f87171;border-left-color:#f87171}.aui-md{font-size:var(--txt-transcript);line-height:1.55;overflow-wrap:anywhere;min-width:0;max-width:100%}.aui-md>:first-child{margin-top:0}.aui-md>:last-child{margin-bottom:0}.aui-md p{margin:0 0 10px}.aui-md h1,.aui-md h2,.aui-md h3,.aui-md h4,.aui-md h5,.aui-md h6{margin:14px 0 6px;line-height:1.3;font-weight:700}.aui-md h1{font-size:17px}.aui-md h2{font-size:15.5px}.aui-md h3{font-size:14px}.aui-md h4,.aui-md h5,.aui-md h6{font-size:13px;color:var(--text-dim)}.aui-md a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.aui-md strong{font-weight:700}.aui-md em{font-style:italic}.aui-md del{opacity:.7}.aui-md ul,.aui-md ol{margin:0 0 8px;padding-left:1.4em}.aui-md li{margin:2px 0}.aui-md li>ul,.aui-md li>ol{margin:2px 0}.aui-md li input[type=checkbox]{margin-right:6px;vertical-align:middle}.aui-md blockquote{margin:0 0 8px;padding:2px 10px;border-left:3px solid var(--line);color:var(--text-dim)}.aui-md hr{border:none;border-top:1px solid var(--line);margin:12px 0}.aui-md :not(pre)>code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.88em;background:var(--bg-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;overflow-wrap:anywhere}.aui-md pre{margin:0 0 8px;background:var(--bg);border:1px solid var(--line);border-radius:8px;overflow:hidden}.aui-md pre code{display:block;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;line-height:1.5;color:var(--text);padding:8px 10px;overflow-x:auto;white-space:pre;-webkit-overflow-scrolling:touch}.aui-md-code-lang{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:9.5px;text-transform:lowercase;letter-spacing:.04em;color:var(--text-faint);background:var(--bg-2);border-bottom:1px solid var(--line);padding:3px 10px}.md-table-wrap{max-width:100%;overflow-x:auto;margin:0 0 8px;-webkit-overflow-scrolling:touch}.aui-md table{width:max-content;max-width:none;border-collapse:collapse;font-size:11.5px}.aui-md th,.aui-md td{border:1px solid var(--line);padding:4px 8px;text-align:left;vertical-align:top;min-width:4.5em;max-width:32em;overflow-wrap:anywhere}.aui-md th{background:var(--bg-2);font-weight:700;white-space:nowrap}.aui-md img{max-width:100%;height:auto;border-radius:6px}.block-cot{font-size:11.5px;color:var(--text-dim);border:1px solid var(--line);border-radius:9px;background:#0e1217;padding:5px 9px;margin:2px 0}.block-cot>summary{cursor:pointer;color:var(--text-faint);font-style:italic;list-style:none;display:flex;align-items:baseline;gap:6px;min-width:0}.block-cot>summary::-webkit-details-marker{display:none}.block-cot>summary:before{content:"▸";font-style:normal;flex:0 0 auto}.block-cot[open]>summary:before{content:"▾"}.cot-label{flex:0 0 auto;font-weight:600;font-style:normal}.cot-steps{flex:0 0 auto;opacity:.7;font-style:normal}.cot-last{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-style:normal;opacity:.6}.cot-body{margin-top:6px;display:flex;flex-direction:column;gap:8px}.cot-reasoning,.thinking-text{padding-left:8px;border-left:2px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;opacity:.8}@keyframes thinking-flash{to{background-position:200% center}}.block-cot[data-thinking=true] .cot-label,.block-cot[data-thinking=true] .cot-last,.block-cot[data-thinking=true] .cot-reasoning{background-image:linear-gradient(90deg,oklch(72% .2 20),#f3b01d,#47c86e,#52a9fe,#d56aee,oklch(72% .2 20));background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:thinking-flash 2.4s linear infinite;opacity:1}.block-cot[data-thinking=true]{border-color:#414468}@keyframes shimmer-sweep{to{background-position:200% center}}.shimmer-text{background-image:linear-gradient(90deg,var(--text-faint) 0%,var(--text) 50%,var(--text-faint) 100%);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:shimmer-sweep 1.6s linear infinite}.block-tool{display:flex;flex-direction:column;gap:4px}.block-tool-use{display:flex;align-items:center;gap:6px;min-width:0;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;color:var(--text-dim);background:var(--bg-2);border-radius:6px;padding:4px 8px;list-style:none;cursor:default}details.block-tool>summary.block-tool-use{cursor:pointer}.block-tool-use::-webkit-details-marker{display:none}.tool-head{display:flex;align-items:center;gap:5px;min-width:0;flex:1 1 auto;overflow:hidden}.tool-arrow{color:var(--accent-2);flex:0 0 auto;transition:transform var(--ease) .15s}details.block-tool[open]>summary .tool-arrow,.tool-arrow[data-peek=true]{transform:rotate(90deg)}.tool-name{color:var(--accent-2);font-weight:600;white-space:nowrap;flex:0 0 auto}.tool-sep{color:var(--text-faint);flex:0 0 auto}.tool-input{color:var(--text-dim);min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block-tool-body{display:flex;flex-direction:column;gap:4px}.block-tool-args{margin:0;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--text-dim);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;white-space:pre;overflow-x:auto;max-height:220px;overflow-y:auto;-webkit-overflow-scrolling:touch}.block-tool-result{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--text-dim);border-left:2px solid var(--line);padding:4px 8px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow-y:auto;-webkit-overflow-scrolling:touch}.block-tool-result[data-error=true]{border-left-color:var(--red);background:var(--red-bg);color:var(--text)}.composer{display:flex;flex-direction:column;padding:0 12px 8px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:transparent;flex:0 0 auto;position:relative}@media (max-width: 760px){.composer{padding-bottom:env(safe-area-inset-bottom)}.composer:focus-within{padding-bottom:0}}body.is-external-display .composer{padding-bottom:8px}.subagent-strip{display:flex;flex-direction:column;gap:4px;width:calc(100% - 24px);max-width:880px;margin:0 auto 8px}.subagent-pills{display:flex;flex-wrap:wrap;gap:6px}.subagent-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 8px;background:color-mix(in oklch,var(--accent) 8%,var(--bg-1));border:1px solid color-mix(in oklch,var(--accent) 28%,var(--line));border-radius:999px;cursor:pointer;font-size:var(--txt-meta);font-weight:600;color:var(--accent);white-space:nowrap;transition:background var(--ease) .13s,border-color var(--ease) .13s,box-shadow var(--ease) .13s}.subagent-pill:hover{background:color-mix(in oklch,var(--accent) 16%,var(--bg-1));border-color:color-mix(in oklch,var(--accent) 50%,var(--line))}.subagent-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.subagent-pill[data-active=true]{background:color-mix(in oklch,var(--accent) 20%,var(--bg-1));border-color:color-mix(in oklch,var(--accent) 70%,var(--line));box-shadow:0 0 0 2px color-mix(in oklch,var(--accent) 25%,transparent)}.subagent-pill .sa-dot{animation:pulse 1.4s var(--ease) infinite}.subagent-pill-name{letter-spacing:-.01em}.subagent-strip-caption{margin:0;padding:0 2px;font-size:calc(var(--txt-meta) - 1px);color:var(--text-dim);line-height:1.4;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}@media (prefers-reduced-motion: reduce){.subagent-pill .sa-dot{animation:none}}.agent-inline-view{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}.agent-inline-head{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--bg-0);flex:0 0 auto;position:sticky;top:0;z-index:2}.agent-inline-back{display:inline-flex;align-items:center;gap:4px;font-size:var(--txt-meta);font-weight:600;color:var(--accent);padding:3px 8px;border-radius:999px;border:1px solid color-mix(in oklch,var(--accent) 28%,var(--line));background:color-mix(in oklch,var(--accent) 6%,var(--bg-1));cursor:pointer;white-space:nowrap;transition:background var(--ease) .13s}.agent-inline-back:hover{background:color-mix(in oklch,var(--accent) 14%,var(--bg-1))}.agent-inline-back:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.agent-inline-title{display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto}.agent-inline-name{font-weight:700;font-size:var(--txt-meta);color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-inline-status{font-size:var(--txt-meta);color:var(--text-faint);white-space:nowrap}.skill-ac{position:absolute;bottom:100%;left:12px;right:12px;margin-inline:auto;max-width:880px;margin-bottom:6px;display:flex;flex-direction:column;gap:2px;padding:4px;background:var(--bg-1);border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 24px #00000059;z-index:30;max-height:50dvh;overflow-y:auto}.skill-ac-item{display:block;width:100%;text-align:left;background:transparent;border:none;border-radius:8px;padding:8px 10px;cursor:pointer;font:inherit;color:var(--text)}.skill-ac-item[data-on=true]{background:var(--bg-hover)}.skill-ac-item .tool-head{cursor:pointer}.composer-skill-chip-row{display:flex;margin-bottom:6px}.composer-skill-chip{cursor:default}.ptr-indicator{position:fixed;top:calc(var(--safe-top) + var(--hud-h) - 30px);left:50%;z-index:45;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-2);border:1px solid var(--line);box-shadow:0 2px 10px #0000004d;pointer-events:none}.ptr-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent)}.ptr-indicator[data-ready=true] .ptr-spinner{border-top-color:var(--green)}.ptr-indicator[data-refreshing=true] .ptr-spinner{animation:ptr-spin .7s linear infinite}@keyframes ptr-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.ptr-indicator[data-refreshing=true] .ptr-spinner{animation-duration:1.4s}}.composer-card{width:100%;max-width:880px;margin-inline:auto;display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:16px;background:var(--bg-1);box-shadow:0 2px 10px #00000040;position:relative;min-height:96px}.composer-card:focus-within{border-color:var(--accent)}.composer-toolbar{display:flex;align-items:center;gap:8px}.composer-toolbar-spacer{flex:1 1 auto}.composer-attachments{display:flex;flex-wrap:wrap;gap:6px}.composer-attachments:empty{display:none}.attach-chip{display:inline-flex;align-items:center;gap:6px;max-width:220px;padding:4px 4px 4px 8px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);font-size:11.5px;color:var(--text)}.attach-chip[data-pending=true]{opacity:.85;border-style:dashed}.chip-thumb{width:26px;height:26px;border-radius:5px;object-fit:cover;flex:0 0 auto;background:var(--bg)}.chip-thumb-empty{border:1px solid var(--line)}.chip-icon{font-size:14px;flex:0 0 auto}.chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-spinner{width:11px;height:11px;flex:0 0 auto;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:chip-spin .7s linear infinite}@keyframes chip-spin{to{transform:rotate(360deg)}}.chip-remove{flex:0 0 auto;width:20px;height:20px;border:none;border-radius:6px;background:transparent;color:var(--text-dim);font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.chip-remove:hover{background:var(--bg-hover);color:var(--text)}.composer-attach,.composer-send{flex:0 0 auto;height:34px;min-width:34px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--text-dim);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--ease) .15s,color var(--ease) .15s}.composer-attach:hover{background:var(--bg-hover);color:var(--text)}.composer-send{background:var(--accent);color:#0c121a;border-color:transparent}.composer-send:hover{filter:brightness(1.08)}.composer-attach:disabled,.composer-send:disabled{opacity:.4;cursor:not-allowed}.composer-card[data-terminal]{border-color:var(--red)}.composer-card[data-terminal]:focus-within{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}.composer-term-toggle[data-on]{color:var(--red);border-color:var(--red);background:var(--red-bg)}.composer-send[data-terminal]{background:var(--red);color:#fff6f5;border-color:transparent}.composer-send[data-terminal]:hover{filter:brightness(1.08)}.composer-send[data-stop=true]{background:var(--red);color:#fff6f5;border-color:transparent}.composer-send[data-stop=true]:hover{filter:brightness(1.08)}@media (prefers-reduced-motion: no-preference){.composer-send[data-stop=true]{animation:stop-pulse 1.4s ease-in-out infinite}}@keyframes stop-pulse{0%,to{opacity:1}50%{opacity:.7}}@media (prefers-reduced-motion: no-preference){.composer-send[data-queue=true]{animation:queue-in .18s var(--ease) both}}@keyframes queue-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.composer-input{width:100%;resize:none;max-height:40dvh;min-height:24px;padding:2px;border:none;background:transparent;color:var(--text);font:inherit;font-size:var(--txt-composer);line-height:1.45}.composer-input:focus{outline:none}.composer-input::placeholder{color:var(--text-faint)}.composer-overlay{position:absolute;inset:0;padding:2px;font:inherit;font-size:var(--txt-composer);line-height:1.45;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;pointer-events:none;overflow:hidden;color:var(--text)}.composer-pill{background:color-mix(in oklch,var(--accent) 18%,var(--bg-1));border-radius:3px;color:var(--accent);box-shadow:0 0 0 1px color-mix(in oklch,var(--accent) 30%,transparent);box-decoration-break:clone;-webkit-box-decoration-break:clone}.composer-input-wrap[data-has-pills=true] .composer-input{color:transparent;caret-color:var(--text)}.composer-input-wrap{position:relative;display:flex}.composer-input-wrap .composer-input{flex:1 1 auto}.composer-hint{position:absolute;inset:0;padding:2px;display:none;align-items:center;gap:8px;font-size:var(--txt-meta);line-height:1.45;color:var(--text-faint);pointer-events:none;overflow:hidden;white-space:nowrap}.composer-input:placeholder-shown+.composer-hint{display:flex}.composer-hint-keys{display:inline-flex;align-items:center;gap:6px}.composer-hint .kbd{height:calc(var(--txt-meta) + 5px);min-width:calc(var(--txt-meta) + 5px);font-size:calc(var(--txt-meta) - 1px)}.composer-hint-dot{opacity:.6}@media (max-width: 760px){.composer-hint-keys{display:none}}.modal-backdrop{position:fixed;inset:0;background:#01020399;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-end;justify-content:center;z-index:50;padding:0}@media (min-width: 760px){.modal-backdrop{align-items:center;padding:20px}}.modal{width:100%;max-width:560px;max-height:90dvh;display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--line);border-radius:16px 16px 0 0;overflow:hidden}@media (min-width: 760px){.modal{border-radius:16px}}.modal:focus{outline:none}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)}.modal-title{font-weight:700;color:var(--amber)}.modal-close{background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;padding:4px 8px}.modal-body{padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.modal-plan{max-width:760px}.plan-review{width:100%}.plan-review-viewport{display:flex;flex-direction:column}.plan-review .msg-row{max-width:100%;align-self:stretch;align-items:stretch}.question{display:flex;flex-direction:column;gap:6px}.q-header{font-size:var(--txt-meta);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2)}.q-text{font-size:14px;font-weight:600}.q-hint{font-size:var(--txt-meta);color:var(--text-faint)}.q-options{display:flex;flex-direction:column;gap:7px;margin-top:2px}.option-btn{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);color:var(--text);cursor:pointer;font:inherit;transition:border-color var(--ease) .15s,background var(--ease) .15s}.option-btn:hover{background:var(--bg-hover)}.option-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.option-btn[data-on=true]{border-color:var(--accent);background:var(--bg);box-shadow:inset 0 0 0 1px var(--accent)}.option-btn:disabled{opacity:.5;cursor:default}.option-btn[data-sending=true]{opacity:1;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.option-sending{display:inline-flex;align-items:center;gap:6px;margin-left:8px;font-size:var(--txt-meta);font-weight:400;color:var(--accent)}.prompt-status{font-size:var(--txt-meta);color:var(--accent)}.option-label{font-size:13px;font-weight:600}.option-desc{font-size:var(--txt-meta);color:var(--text-dim)}.ask-split{display:flex;flex-direction:column;gap:10px;margin-top:4px}@media (min-width: 760px){.ask-split{flex-direction:row;align-items:stretch;gap:12px;min-height:0}}.ask-split-list{display:flex;flex-direction:column;gap:4px;flex:0 0 auto}@media (min-width: 760px){.ask-split-list{width:200px;max-width:40%;overflow-y:auto;overscroll-behavior:contain}}.ask-split-row{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border-radius:9px;border:1px solid var(--line);background:var(--bg-2);cursor:pointer;user-select:none;transition:border-color .12s var(--ease),background .12s var(--ease)}.ask-split-row:focus{outline:none}.ask-split-row:focus-visible,.ask-split-row[data-focused=true]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.ask-split-row[data-focused=true]{border-color:var(--accent-2);background:var(--bg-hover)}.ask-split-row[data-selected=true]{border-color:var(--accent);background:var(--bg);box-shadow:inset 0 0 0 1px var(--accent)}.ask-split-row[data-selected=true][data-focused=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.ask-split-indicator{flex:0 0 auto;font-size:14px;line-height:1.3;color:var(--text-dim)}.ask-split-row[data-selected=true] .ask-split-indicator{color:var(--accent)}.ask-check,.ask-radio{display:block;font-style:normal}.ask-split-text{display:flex;flex-direction:column;gap:2px;min-width:0}.ask-preview{flex:1 1 auto;display:flex;flex-direction:column;gap:6px;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:10px;overflow:hidden}@media (min-width: 760px){.ask-preview{max-height:320px}}.ask-preview-label{padding:8px 12px 0;font-size:var(--txt-meta);font-weight:700;color:var(--accent-2);text-transform:uppercase;letter-spacing:.06em;flex:0 0 auto}.ask-preview-content{margin:0;padding:6px 12px 12px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;line-height:1.5;color:var(--text);white-space:pre;overflow:auto;overscroll-behavior:contain;flex:1 1 auto;tab-size:4}.ask-preview-empty{padding:18px 12px;color:var(--text-faint);font-size:var(--txt-meta);font-style:italic;align-self:center}@media (prefers-reduced-motion: reduce){.ask-split-row{transition:none}}.capture-output{margin:0;padding:10px;border-radius:8px;background:var(--bg);border:1px solid var(--line);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--text-dim);white-space:pre-wrap;overflow-wrap:anywhere;max-height:40dvh;overflow:auto}.modal-foot{display:flex;align-items:center;gap:8px;padding:12px 14px;padding-bottom:calc(12px + var(--safe-bottom));border-top:1px solid var(--line)}.modal-foot-spacer{flex:1 1 auto}.btn-secondary,.btn-primary{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:9px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line)}.btn-secondary{background:var(--bg-2);color:var(--text)}.btn-secondary:hover{background:var(--bg-hover)}.btn-primary{background:var(--accent);color:#0c121a;border-color:transparent}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.kbd{display:inline-flex;align-items:center;justify-content:center;height:18px;min-width:18px;padding:0 7px;border-radius:5px;border:1px solid var(--line);background:var(--bg-1);box-shadow:inset 0 -1px #0000004d;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;font-weight:600;letter-spacing:.08em;line-height:1;color:var(--text-dim);pointer-events:none}.btn-primary .kbd{border-color:#41485366;background:#ffffff2e;box-shadow:none;color:#11161f}.toast{position:fixed;left:50%;top:calc(var(--safe-top) + var(--hud-h) + 14px);transform:translate(-50%,-12px);background:var(--bg-2);border:1px solid var(--line);color:var(--text);padding:8px 14px;border-radius:10px;font-size:12px;opacity:0;pointer-events:none;transition:opacity var(--ease) .2s,transform var(--ease) .2s;z-index:60;max-width:90vw;text-align:center}@media (max-width: 760px){.toast{top:calc(var(--safe-top) + var(--hud-h) + 56px)}}.toast.show{opacity:1;transform:translate(-50%)}.toast-ok{border-color:var(--green)}.toast-error{border-color:var(--red);color:var(--text)}.working-indicator{display:inline-flex;align-items:center;gap:7px;color:var(--text-faint);font-size:13px}.working-spinner{width:12px;height:12px;border:2px solid var(--line);border-top-color:var(--accent-2, var(--text));border-radius:50%;animation:cockpit-spin .7s linear infinite;flex:none}.working-claude{flex:none;display:inline-flex}.working-claude svg{animation:pane-icon-bob .9s var(--ease) infinite}@keyframes cockpit-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.working-spinner{animation-duration:1.6s}.working-claude svg{animation:none}.block-cot[data-thinking=true] .cot-label,.block-cot[data-thinking=true] .cot-last,.block-cot[data-thinking=true] .cot-reasoning,.shimmer-text{animation:none;background-image:none;-webkit-text-fill-color:var(--accent);color:var(--accent)}}.update-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 12px;background:var(--amber-bg);color:var(--amber);border-bottom:1px solid var(--line);font-size:13px}.update-banner code{background:var(--bg-hover);color:var(--text);padding:1px 6px;border-radius:4px;font-size:12px}.update-dismiss{flex:none;background:transparent;border:0;color:var(--amber);font-size:16px;line-height:1;cursor:pointer;padding:2px 6px}.update-dismiss:hover{color:var(--text)}.update-actions{display:inline-flex;align-items:center;gap:6px;flex:none}.update-now{background:var(--amber);color:var(--bg);border:0;border-radius:6px;font-size:12px;font-weight:700;padding:4px 10px;cursor:pointer}.update-now:hover{filter:brightness(1.08)}.chip-thumb{cursor:zoom-in}.hud-spacer{flex:1 1 auto}.notify-bell{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--text-dim);cursor:pointer;flex:0 0 auto;-webkit-tap-highlight-color:transparent}.notify-bell:hover:not(:disabled){color:var(--text);border-color:var(--text-faint)}.notify-bell[data-state=on]{color:var(--amber);border-color:var(--amber)}.notify-bell:disabled{opacity:.4;cursor:default}.ios-push-hint{padding:8px 12px;font-size:var(--txt-meta);line-height:1.4;color:var(--text);background:var(--amber-bg);border-bottom:1px solid var(--line);flex:0 0 auto}.rail-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:6px;padding:8px 10px;min-height:48px;box-sizing:border-box;background:var(--bg);border-bottom:1px solid var(--line)}.rail-new{flex:1;height:30px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-2);color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:13px;font-weight:600;padding:0 10px;cursor:pointer;transition:border-color var(--ease) .15s,background var(--ease) .15s}.rail-new:hover:not(:disabled){border-color:var(--accent);background:var(--bg-hover)}.rail-new:disabled{opacity:.6;cursor:default}.rail-filter{flex:0 0 auto;height:30px;min-width:30px;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0 8px;background:var(--bg-2);color:var(--text-dim);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:color var(--ease) .15s,border-color var(--ease) .15s,background var(--ease) .15s}.rail-filter:hover{color:var(--text);border-color:var(--accent)}.rail-filter[data-filter=claude],.rail-filter[data-filter=terminal]{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 45%,transparent)}.rail-filter-tag{font-size:10px;font-weight:800;font-family:ui-monospace,SF Mono,Menlo,monospace}.rail-gear{flex:none;width:var(--hud-h);height:var(--hud-h);display:inline-flex;align-items:center;justify-content:center;background:var(--bg-2);color:var(--text-dim);border:1px solid var(--line);border-radius:8px;font-size:15px;cursor:pointer;transition:color var(--ease) .15s,border-color var(--ease) .15s}.rail-gear:hover{color:var(--text);border-color:var(--accent)}.rail-new:focus-visible,.rail-gear:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rail-new-form{position:sticky;top:0;z-index:2;display:flex;flex-direction:column;gap:8px;padding:8px;background:var(--bg);border-bottom:1px solid var(--line)}.rail-new-name{background:var(--bg-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:var(--txt-composer);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.rail-new-name:focus{outline:none;border-color:var(--accent)}.rail-new-name:disabled{opacity:.6}.rail-new-actions{display:flex;justify-content:flex-end;gap:6px}.rail-new-cancel,.rail-new-create{border-radius:8px;font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer}.rail-new-cancel{background:transparent;color:var(--text-dim);border:1px solid var(--line)}.rail-new-cancel:hover:not(:disabled){color:var(--text)}.rail-new-create{background:var(--accent);color:var(--bg);border:0}.rail-new-create:hover:not(:disabled){filter:brightness(1.08)}.rail-new-cancel:disabled,.rail-new-create:disabled{opacity:.6;cursor:default}.rail-new-cwd{background:var(--bg-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;width:100%;box-sizing:border-box}.rail-new-cwd::placeholder{color:var(--text-faint);font-style:italic}.rail-new-cwd:focus{outline:none;border-color:var(--accent)}.rail-new-cwd:disabled{opacity:.6}.rail-new-agent-seg{display:flex;align-items:stretch;height:34px;padding:3px;gap:3px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px}.rail-new-agent-seg-btn{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--text-dim);font-size:12px;font-weight:600;cursor:pointer;transition:background var(--ease) .12s,color var(--ease) .12s,border-color var(--ease) .12s,box-shadow var(--ease) .12s;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}.rail-new-agent-seg-btn[data-active=true]{background:var(--accent);color:#0a0d12;border-color:transparent;box-shadow:0 1px 3px #00000040}.rail-new-agent-seg-btn:not([data-active=true]):hover:not(:disabled){background:var(--bg-hover);color:var(--text);border-color:var(--line)}.rail-new-agent-seg-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.rail-new-agent-seg-btn:disabled{opacity:.45;cursor:not-allowed}.rail-new-agent-seg-label{line-height:1}.rail-new-agent-seg-hint{font-size:9px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;opacity:.7;line-height:1}.rail-new-name-note{padding:6px 10px;font-size:11px;color:var(--text-faint);font-style:italic;border:1px dashed var(--line);border-radius:8px;background:transparent;line-height:1.4}.transcript-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.transcript-thumb-btn{background:none;border:1px solid var(--line);border-radius:8px;padding:0;cursor:zoom-in;overflow:hidden;flex:0 0 auto;display:block;transition:border-color var(--ease) .15s}.transcript-thumb-btn:hover{border-color:var(--accent)}.transcript-thumb-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.transcript-thumb{display:block;max-width:140px;max-height:100px;width:auto;height:auto;border-radius:7px;object-fit:cover}.transcript-file-chip{display:inline-flex;align-items:center;gap:5px;max-width:200px;padding:4px 8px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);font-size:11.5px;color:var(--text);text-decoration:none;transition:border-color var(--ease) .15s,background var(--ease) .15s}.transcript-file-chip:hover{border-color:var(--accent);background:var(--bg-hover)}.transcript-file-chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.lightbox-backdrop{position:fixed;inset:0;z-index:100;background:#010203d9;display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:16px}.lightbox-backdrop:focus{outline:none}.lightbox-img{max-width:100%;max-height:90dvh;width:auto;height:auto;border-radius:10px;cursor:default;box-shadow:0 8px 40px #0009}.config-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;background:#01020399;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.config-modal{width:100%;max-width:600px;max-height:90dvh;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 12px 40px #0006}.config-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line);flex:0 0 auto}.config-body{flex:1 1 auto;overflow-y:auto;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;align-content:start}.config-field--wide{grid-column:1 / -1}.config-title{font-size:15px;font-weight:700;color:var(--text)}.config-close{background:transparent;border:0;color:var(--text-dim);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px}.config-close:hover{color:var(--text)}.config-field{display:flex;flex-direction:column;gap:4px;min-width:0}.config-label{font-size:12px;font-weight:600;color:var(--text-dim)}.config-input{width:100%;box-sizing:border-box;background:var(--bg-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}select.config-input{appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%);background-position:calc(100% - 16px) calc(50% - 2px),calc(100% - 11px) calc(50% - 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:28px}.config-input:focus{outline:none;border-color:var(--accent)}.config-input:disabled{opacity:.6}.config-hint{font-size:11px;line-height:1.35;color:var(--text-faint)}.config-hint code{background:var(--bg-hover);color:var(--text-dim);padding:0 4px;border-radius:4px}.config-section-label{grid-column:1 / -1;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);padding:4px 0 2px;border-bottom:1px solid var(--line);margin-bottom:2px}.config-agent-group{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;padding:8px 10px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg-2)}.config-agent-group-title{grid-column:1 / -1;font-size:12px;font-weight:700;color:var(--text);padding-bottom:2px}.config-agent-group .config-field--wide{grid-column:1 / -1}.config-icon-row{display:flex;align-items:center;gap:12px}.config-icon-preview{border-radius:10px;border:1px solid var(--line);background:var(--bg-2);flex-shrink:0}.config-icon-actions{display:flex;gap:8px}.config-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:11px 16px;border-top:1px solid var(--line)}.config-version{display:flex;flex-wrap:wrap;gap:6px;font-size:11px;color:var(--text-faint)}.config-version-update{color:var(--accent, #3b82f6)}.config-actions{display:flex;justify-content:flex-end;gap:8px;margin-left:auto}.config-cancel,.config-save{border-radius:8px;font-size:13px;font-weight:600;padding:7px 14px;cursor:pointer}.config-cancel{background:transparent;color:var(--text-dim);border:1px solid var(--line)}.config-cancel:hover:not(:disabled){color:var(--text)}.config-save{background:var(--accent);color:var(--bg);border:0}.config-save:hover:not(:disabled){filter:brightness(1.08)}.config-save:disabled,.config-cancel:disabled{opacity:.6;cursor:default}@media (max-width: 560px){.config-overlay{align-items:flex-end;padding:0}.config-modal{max-width:100%;max-height:92dvh;border-radius:var(--radius) var(--radius) 0 0}.config-body{grid-template-columns:1fr}}.term-btn{font-size:13px}.term-btn:hover{color:var(--amber);background:var(--bg-hover)}.term-overlay{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;background:var(--bg);opacity:0;transform:scale(.97);transform-origin:center 42%;pointer-events:none;visibility:hidden;transition:opacity .24s var(--ease, ease),transform .24s var(--ease, ease),visibility 0s linear .24s}.term-overlay[data-visible=true]{opacity:1;transform:scale(1);pointer-events:auto;visibility:visible;transition:opacity .24s var(--ease, ease),transform .24s var(--ease, ease),visibility 0s}@media (prefers-reduced-motion: reduce){.term-overlay{transition:opacity .12s linear;transform:none}.term-overlay[data-visible=true]{transform:none}}.term-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(8px + var(--safe-top)) 12px 8px;border-bottom:1px solid var(--line);background:var(--bg-1);flex:0 0 auto}.term-title{font-weight:700;font-size:13px;color:var(--amber);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.term-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.term-newtab{font-size:12px;color:var(--accent);text-decoration:none;padding:4px 8px;border:1px solid var(--line);border-radius:6px}.term-newtab:hover{background:var(--bg-hover)}.term-close{background:none;border:none;color:var(--text-dim);font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;border-radius:6px}.term-close:hover{color:var(--text);background:var(--bg-hover)}.term-frame{flex:1 1 auto;width:100%;border:none;background:var(--bg)}.gate-root{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:24px;padding-top:max(24px,var(--safe-top));background:radial-gradient(120% 80% at 50% -10%,var(--bg-1),var(--bg) 60%)}.gate-card{display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px;padding:24px;background:var(--bg-1);border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);box-shadow:0 1px #ffffff0a inset,0 20px 50px -20px #000000b3}.gate-card--probing{flex-direction:row;align-items:center;justify-content:center;gap:10px;color:var(--text-dim)}.gate-brand{display:flex;align-items:center;gap:10px;margin-bottom:6px}.gate-glyph{font-size:22px;line-height:1;color:var(--accent)}.gate-title{font-size:17px;font-weight:650;letter-spacing:.01em;color:var(--text)}.gate-label{font-size:var(--txt-meta);text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.gate-input{width:100%;padding:11px 12px;font-size:var(--txt-composer);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);outline:none;transition:border-color .15s var(--ease),background .15s var(--ease)}.gate-input:focus{border-color:var(--accent);background:var(--bg-2)}.gate-input[aria-invalid=true]{border-color:var(--red)}.gate-error{margin:0;font-size:var(--txt-meta);color:var(--red)}.gate-submit{margin-top:4px;padding:11px 12px;font-size:14px;font-weight:600;color:var(--bg);background:var(--accent);border:none;border-radius:var(--radius);cursor:pointer;transition:filter .15s var(--ease),opacity .15s var(--ease)}.gate-submit:hover:not(:disabled){filter:brightness(1.08)}.gate-submit:active:not(:disabled){filter:brightness(.95)}.gate-submit:disabled{opacity:.6;cursor:default}.gate-spinner{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:gate-spin .7s linear infinite}@keyframes gate-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.gate-spinner{animation:none}}.transcript-thumb-loading{display:inline-block;background:var(--bg-2);border:1px solid var(--line)}.skill-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 7px;border-radius:7px;border:1px solid var(--line);background:var(--bg-2);color:var(--text-dim);font:inherit;font-size:12px;line-height:1.4;cursor:pointer;transition:background var(--ease) .15s,border-color var(--ease) .15s,color var(--ease) .15s;vertical-align:middle}.skill-chip:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--text)}.skill-chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.skill-chip:active{background:var(--line)}.skill-chip-icon{font-size:13px;flex:0 0 auto}.skill-chip-name{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.skill-chip-tag{flex:0 0 auto;font-size:9.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint)}.skill-legend{display:flex;flex-direction:column;gap:12px;padding:14px 16px;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.skill-legend-source-row{display:flex;align-items:center;gap:6px}.skill-legend-source-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);background:var(--bg);color:var(--text-faint)}.skill-legend-source-badge[data-source=project]{border-color:color-mix(in oklch,var(--accent) 40%,var(--line));color:var(--accent);background:color-mix(in oklch,var(--accent) 8%,var(--bg))}.skill-fm-chips{display:flex;flex-wrap:wrap;gap:4px}.skill-fm-chip{display:inline-block;padding:1px 7px;border-radius:4px;background:var(--bg-2);border:1px solid var(--line);font-size:11px;color:var(--text-dim);font-family:ui-monospace,SF Mono,Menlo,monospace}.modal-skill{max-width:min(900px,92vw);max-height:85dvh;width:100%}.modal-title-skill{color:var(--accent)}.skill-modal-body{display:flex;flex-direction:column;gap:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px}.skill-fm{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);border:1px solid var(--line);font-size:12px}.skill-fm-row{display:contents}.skill-fm-key{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;color:var(--text-faint);white-space:nowrap;align-self:start;padding:1px 0}.skill-fm-val{color:var(--text-dim);overflow-wrap:anywhere;word-break:break-word;align-self:start;padding:1px 0;margin:0}.skill-body-wrap{flex:1 1 auto;min-height:0;overflow:visible}.skill-body-thread{width:100%}.skill-body-viewport{display:flex;flex-direction:column}.skill-body-thread .msg-row{max-width:100%;align-self:stretch;align-items:stretch}.tool-arrow-btn{background:none;border:none;padding:0;cursor:pointer;display:inline-flex;align-items:center;color:inherit;flex:0 0 auto;line-height:1}.tool-name-btn{background:none;border:none;padding:0;cursor:pointer;font:inherit;color:var(--accent-2);font-weight:600;white-space:nowrap;flex:0 0 auto;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:text-decoration-color var(--ease) .15s}.tool-name-btn:hover{text-decoration-color:var(--accent-2)}.aui-md-code-lang{display:flex;align-items:center}.aui-md-code-lang-name{flex:1 1 auto}.aui-md-code-open-btn{flex:0 0 auto;background:none;border:none;padding:0 6px;cursor:pointer;font-family:inherit;font-size:10px;color:var(--text-faint);line-height:1;transition:color var(--ease) .15s;border-radius:4px}.aui-md-code-open-btn:hover{color:var(--accent);background:var(--bg-hover)}.aui-md-code-open-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.detail-split{flex:1 1 auto;display:flex;min-width:0;min-height:0;overflow:hidden;position:relative}.detail-split>.thread-root{flex:1 1 auto;min-width:0}@media (min-width: 760px){.detail-split>.thread-root{flex:1 1 0;min-width:0}.detail-split>.artifact-panel{flex:1 1 0;min-width:0}}.artifact-panel{display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--line);min-height:0;overflow:hidden;outline:none}.artifact-panel[data-mode=sheet]{position:fixed;inset:auto 0 0;border-left:none;border-top:1px solid var(--line);box-shadow:0 -8px 32px #00000073;z-index:200;overscroll-behavior:contain;transition:height .28s var(--ease)}.artifact-panel[data-mode=sheet][data-dragging=true]{transition:none}@media (prefers-reduced-motion: reduce){.artifact-panel[data-mode=sheet]{transition:none}}.artifact-drag-handle{flex:0 0 auto;display:flex;align-items:center;justify-content:center;height:22px;cursor:ns-resize;touch-action:none;background:var(--bg);border-bottom:1px solid var(--line)}.artifact-drag-pip{width:36px;height:4px;border-radius:2px;background:var(--line)}.artifact-panel-head{display:flex;align-items:stretch;gap:0;background:var(--bg-1);border-bottom:1px solid var(--line);flex:0 0 auto;overflow-x:auto;min-height:38px}.artifact-tablist{display:flex;flex:1 1 auto;overflow-x:auto;gap:0}.artifact-tab-wrap{display:inline-flex;align-items:stretch;border-right:1px solid var(--line);flex:0 0 auto;max-width:200px;min-width:0}.artifact-tab{flex:1 1 auto;min-width:0;background:none;border:none;color:var(--text-dim);font-size:11.5px;font-family:inherit;padding:6px 8px 6px 10px;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3;transition:color var(--ease) .15s,background var(--ease) .15s}.artifact-tab:hover{color:var(--text);background:var(--bg-hover)}.artifact-tab[aria-selected=true]{color:var(--text);background:var(--bg);border-bottom:2px solid var(--accent)}.artifact-tab-close{flex:0 0 auto;background:none;border:none;color:var(--text-faint);cursor:pointer;padding:2px 6px;font-size:10px;line-height:1;border-radius:4px;margin:auto 4px auto 0;transition:color var(--ease) .15s,background var(--ease) .15s}.artifact-tab-close:hover{color:var(--text);background:var(--bg-hover)}.artifact-close-all{flex:0 0 auto;background:none;border:none;border-left:1px solid var(--line);color:var(--text-dim);cursor:pointer;padding:0 12px;font-size:18px;line-height:1;transition:color var(--ease) .15s}.artifact-close-all:hover{color:var(--text)}.artifact-panel-body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.artifact-body-wrap{min-height:100%}.artifact-pre{margin:0;padding:12px 14px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;overflow-x:hidden;color:var(--text);background:var(--bg);min-height:100%}.artifact-pre code{display:block}.artifact-large-note{margin:0;padding:6px 14px;font-size:var(--txt-meta);color:var(--text-faint);background:var(--bg-2);border-bottom:1px solid var(--line)}.agent-chip{display:inline-flex;align-items:center;gap:5px;min-width:0;flex:0 0 auto}.agent-chip-name{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px;font-size:inherit}.agent-chip-model{display:inline-flex;align-items:center;padding:1px 6px;border-radius:5px;background:var(--bg-2);border:1px solid var(--line);color:var(--accent-2);font-size:10px;font-weight:600;letter-spacing:.04em;white-space:nowrap;text-transform:lowercase;flex:0 0 auto}.agent-def{flex:0 0 auto;display:flex;flex-direction:column;gap:5px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--bg-1);font-size:var(--txt-meta);overflow:hidden}.agent-def-no-def{color:var(--text-faint);font-style:italic}.agent-def-desc{color:var(--text-dim);line-height:1.45;overflow-wrap:anywhere}.agent-def-row{display:flex;align-items:baseline;gap:8px;min-width:0}.agent-def-label{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px;color:var(--text-faint);white-space:nowrap;flex:0 0 auto;min-width:40px}.agent-def-val{color:var(--text-dim);overflow-wrap:anywhere;word-break:break-word;flex:1 1 auto;min-width:0}.agent-def-tools{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px;color:var(--accent-2)}.agent-nested{flex:0 0 auto;display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--bg-1);font-size:var(--txt-meta)}.agent-nested-label{color:var(--text-faint);white-space:nowrap;flex:0 0 auto;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px;padding-top:2px}.agent-nested-list{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0}.composer-enhance{flex:0 0 auto;height:34px;min-width:34px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--text-dim);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--ease) .15s,color var(--ease) .15s,border-color var(--ease) .15s}.composer-enhance:hover:not(:disabled){background:var(--bg-hover);color:var(--accent);border-color:var(--accent)}.composer-enhance:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.composer-enhance:disabled{opacity:.35;cursor:not-allowed}.composer-enhance-spinner{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:cockpit-spin .7s linear infinite;display:block}@media (prefers-reduced-motion: reduce){.composer-enhance-spinner{animation-duration:1.6s}}.modal-optimize{max-width:680px}.modal-head-group{display:flex;align-items:center;gap:8px}.modal-title-optimize{color:var(--accent-2)}.optimize-mode-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:20px;background:var(--bg-2);color:var(--text-dim);font-size:10.5px;font-weight:600;letter-spacing:.03em;border:1px solid var(--line)}.optimize-mode-badge[data-mode=llm]{border-color:#4075aa80;color:var(--accent)}.optimize-section{display:flex;flex-direction:column;gap:6px}.optimize-section-label{font-size:var(--txt-meta);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:600}.optimize-suggestion{width:100%;box-sizing:border-box;min-height:120px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.5;resize:vertical;transition:border-color var(--ease) .15s}.optimize-suggestion:focus{outline:none;border-color:var(--accent)}.optimize-diff{padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;max-height:200px;overflow-y:auto}.diff-same{color:var(--text-dim)}.diff-add{color:#5bbd74;background:#5bbd7412;display:block;margin-inline:-12px;padding-inline:12px}.diff-del{color:#dc5e59;background:#dc5e5912;text-decoration:line-through;text-decoration-color:#dc5e5980;display:block;margin-inline:-12px;padding-inline:12px}.optimize-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px;color:var(--text-dim);font-size:13px;line-height:1.5}.optimize-list li{padding-left:2px}.composer-skills-btn,.composer-mic{flex:0 0 auto;height:34px;min-width:34px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--text-dim);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--ease) .15s,color var(--ease) .15s,border-color var(--ease) .15s;font-size:14px;font-weight:600;letter-spacing:-.02em}.composer-mic:hover{color:var(--text);background:var(--bg-hover)}.composer-subagent-toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 4px;border:none;background:transparent;color:var(--text-faint);cursor:pointer;font-size:11.5px;font-weight:500;letter-spacing:.01em;white-space:nowrap;user-select:none;transition:color var(--ease) .15s}.composer-subagent-toggle:hover:has(input:not(:disabled)){color:var(--text-dim)}.composer-subagent-toggle--on{color:var(--accent)}.composer-subagent-toggle:has(input:disabled){opacity:.35;cursor:not-allowed}.composer-subagent-toggle:focus-within{outline:2px solid var(--accent);outline-offset:2px}.composer-subagent-checkbox{appearance:none;-webkit-appearance:none;flex:0 0 auto;width:13px;height:13px;border-radius:3px;border:1.5px solid currentColor;background:transparent;cursor:pointer;position:relative;transition:background var(--ease) .12s,border-color var(--ease) .12s}.composer-subagent-checkbox:checked{background:var(--accent);border-color:var(--accent)}.composer-subagent-checkbox:checked:after{content:"";position:absolute;left:50%;top:45%;width:4px;height:7px;border:1.6px solid #fff;border-top:none;border-left:none;transform:translate(-50%,-50%) rotate(45deg)}.composer-subagent-checkbox:disabled{cursor:not-allowed}.composer-subagent-label{overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:22ch}@media (max-width: 760px){.composer-toolbar{flex-wrap:wrap}.composer-subagent-toggle{order:10;flex-basis:100%;height:auto;padding:2px 2px 0;margin-top:2px;justify-content:flex-end}.composer-subagent-label{max-width:none}}.voice-status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text-dim)}.voice-dot{width:9px;height:9px;border-radius:50%;background:var(--text-faint);flex:0 0 auto}.voice-dot[data-on=true]{background:var(--red);animation:mic-pulse 1.3s var(--ease) infinite}@keyframes mic-pulse{50%{box-shadow:0 0 0 4px var(--red-bg)}}.voice-wave{width:100%;height:72px;border-radius:10px;background:var(--bg);border:1px solid var(--line);display:block}.voice-wave[data-paused=true]{opacity:.5}.voice-error{font-size:12px;color:var(--red);padding:0 2px}.voice-hint{font-size:12px;color:var(--text-faint);padding:0 2px}.voice-inline-body{display:none;flex-direction:column;gap:8px;padding:8px 0 0}.voice-wave-inline{height:64px;border-radius:8px}.voice-toolbar{margin-top:0}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;padding:0 12px;height:32px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;background:var(--bg-1);color:var(--text-dim);border:1px solid var(--line);transition:background .12s,color .12s}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}@media (prefers-reduced-motion: reduce){.voice-dot[data-on=true]{animation:none;box-shadow:0 0 0 3px var(--red-bg)}}.composer-skills-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--accent);border-color:var(--accent)}.composer-skills-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.composer-skills-btn:disabled{opacity:.35;cursor:not-allowed}.skill-browser-sheet-wrap{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-end;pointer-events:none}.skill-browser-sheet-wrap>.skill-browser{pointer-events:auto}.skill-browser{width:100%;max-height:70dvh;display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--line);border-radius:16px 16px 0 0;overflow:hidden}@media (min-width: 760px){.skill-browser{width:100%;max-width:560px;max-height:80dvh;border-radius:14px}}.skill-browser-head{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--line);flex:0 0 auto}.skill-browser-title{flex:1 1 auto;font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.01em}.skill-browser-search{padding:10px 12px;flex:0 0 auto;border-bottom:1px solid var(--line)}.skill-search-input{width:100%;box-sizing:border-box;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13.5px;padding:7px 10px;outline:none;transition:border-color var(--ease) .15s}.skill-search-input:focus{border-color:var(--accent)}.skill-search-input::placeholder{color:var(--text-faint)}.skill-search-input::-webkit-search-cancel-button{-webkit-appearance:none}.skill-browser-list{flex:1 1 auto;overflow-y:auto;padding:6px 8px 10px;display:flex;flex-direction:column;gap:2px}.skill-browser-empty{padding:24px 12px;text-align:center;color:var(--text-faint);font-size:13px}.skill-card{width:100%;text-align:left;background:none;border:none;cursor:pointer;border-radius:7px;padding:7px 10px;display:flex;align-items:baseline;gap:6px;transition:background var(--ease) .12s;min-width:0}.skill-card:hover{background:var(--bg-hover)}.skill-card:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.skill-card .tool-head{flex:1 1 auto;min-width:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:0 4px;row-gap:2px}.skill-card-name{font-size:13px;font-weight:500;color:var(--text);white-space:nowrap}.skill-card-desc{font-size:12.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.skill-source-tag{flex:0 0 auto;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);background:var(--bg-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;margin-left:auto}.reload-glyph{display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;transition:transform .45s var(--ease)}.reload-foot:hover .reload-glyph{transform:rotate(180deg)}.reload-foot:active .reload-glyph{transform:rotate(360deg)}@property --auto-send-deplete{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@property --auto-send-spin{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@keyframes auto-send-deplete{0%{--auto-send-deplete: 0deg}to{--auto-send-deplete: 360deg}}@keyframes auto-send-spin{to{--auto-send-spin: 360deg}}.btn-send{position:relative}.btn-send-label{position:relative;z-index:1}.btn-send-armed:before,.btn-send-armed:after{content:"";position:absolute;inset:-3px;border-radius:inherit;padding:3px;pointer-events:none;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}.btn-send-armed:before{background:conic-gradient(from var(--auto-send-spin),#ff2d55,#ff9500,#ffd60a,#34c759,#00c7be,#0a84ff,#5e5ce6,#bf5af2,#ff2d55);filter:saturate(1.2) brightness(1.1);animation:auto-send-spin 3s linear infinite}.btn-send-armed:after{background:conic-gradient(from 0deg,var(--bg-1) 0 var(--auto-send-deplete),transparent var(--auto-send-deplete));animation:auto-send-deplete var(--auto-send-secs, 5s) linear forwards}@media (prefers-reduced-motion: reduce){.btn-send-armed:before,.btn-send-armed:after{animation:none}}.gate-hint{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--text-dim, #8a8f98);text-align:center}.gate-hint code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;padding:1px 5px;border-radius:5px;background:var(--bg-2);color:var(--text, inherit)}.detail-body{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column}.focus-toggle{display:none}@media (min-width: 760px){.focus-toggle{display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1;background:none;border:none;color:var(--text-dim);padding:2px 8px;cursor:pointer;flex:0 0 auto;transition:color var(--ease) .15s}.focus-toggle:hover{color:var(--accent)}.app[data-rail-collapsed=true] .rail{border-right:none;overflow:hidden}}.thinking-dot{width:6px;height:6px;border-radius:50%;flex:0 0 auto;background:var(--amber);box-shadow:0 0 6px var(--amber);animation:pulse 1.2s var(--ease) infinite}.session-item[data-pending=true]{border-color:var(--accent)}@media (prefers-reduced-motion: reduce){.thinking-dot{animation:none}}.terminal-loading{display:inline-flex;align-items:center;gap:8px;color:var(--text-dim)}.terminal-loading-spinner{width:12px;height:12px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:cockpit-spin .7s linear infinite}@media (prefers-reduced-motion: reduce){.terminal-loading-spinner{animation:none}}.term-warm{width:100%;opacity:0}.rail-foot{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:8px;border-top:1px solid var(--line);background:var(--bg)}.rail-foot-btn{height:var(--hud-h);display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:1;background:var(--bg-2);color:var(--text-dim);border:1px solid var(--line);border-radius:8px;font-size:13px;font-weight:600;padding:0 12px;cursor:pointer;transition:color var(--ease) .15s,border-color var(--ease) .15s,background var(--ease) .15s}.rail-foot-btn:hover{color:var(--text);border-color:var(--accent);background:var(--bg-hover)}.rail-foot-btn.rail-foot-icon{flex:0 0 auto;width:var(--hud-h);padding:0}.rail-foot-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.hud-battery{align-items:center;gap:5px;color:var(--text)}.hud-battery[data-charging=true]{color:var(--green)}.hud-battery[data-low=true]{color:var(--red)}.modal-process{max-width:720px;width:92vw}.proc-power{display:inline-flex;align-items:center;gap:5px;font-size:var(--txt-meta);color:var(--text-dim)}.proc-power[data-low=true]{color:var(--red)}.proc-body{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;max-height:min(60vh,540px);overflow-y:auto;padding:0}.proc-graphs{display:flex;flex-direction:column;gap:8px;padding:12px;border-bottom:1px solid var(--line)}.proc-graph{display:flex;flex-direction:column;gap:3px}.proc-graph-head{display:flex;align-items:baseline;justify-content:space-between;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint)}.proc-graph-val{font-variant-numeric:tabular-nums;color:var(--text);font-size:12px}.proc-chart{width:100%;height:46px;display:block;background:var(--bg-2);border-radius:6px}.proc-chart-grid{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke;opacity:.5}.proc-graph-axis{display:flex;justify-content:space-between;font-size:9px;color:var(--text-faint);font-variant-numeric:tabular-nums}.proc-row{display:grid;grid-template-columns:56px 44px 52px 1fr 64px;align-items:center;gap:8px;padding:5px 12px;border-bottom:1px solid var(--line)}.proc-head{position:sticky;top:0;z-index:1;background:var(--bg-1);color:var(--text-faint);font-size:10px;letter-spacing:.05em;text-transform:uppercase}.proc-pid{color:var(--text-faint);font-variant-numeric:tabular-nums}.proc-cpu{font-variant-numeric:tabular-nums;text-align:right}.proc-cpu[data-hot=true]{color:var(--amber);font-weight:700}.proc-mem{font-variant-numeric:tabular-nums;text-align:right;color:var(--text-dim)}.proc-cmd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.proc-act{display:flex;justify-content:flex-end}.proc-empty{padding:20px;text-align:center;color:var(--text-faint)}.proc-kill{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;border:1px solid transparent;background:none;color:var(--text-faint);cursor:pointer;transition:color var(--ease) .15s,background var(--ease) .15s}.proc-kill:hover{color:var(--red);background:color-mix(in oklch,var(--red) 14%,transparent)}.proc-confirm{display:inline-flex;gap:4px}.proc-kill-yes,.proc-kill-no{font-size:11px;font-weight:700;border-radius:6px;padding:3px 7px;cursor:pointer;border:1px solid var(--line)}.proc-kill-yes{background:var(--red);color:#fff;border-color:var(--red)}.proc-kill-yes:disabled{opacity:.6;cursor:default}.proc-kill-no{background:transparent;color:var(--text-dim)}@media (min-width: 760px){.modal-optimize .modal-body{max-height:min(74vh,760px)}.modal-optimize .optimize-suggestion{min-height:220px;max-height:48vh}}.hotkey-hint{z-index:200;background:#fbf2d0;color:#2a2510;border:1px solid oklch(88% .06 92);border-radius:6px;padding:3px 7px 3px 9px;font-family:ui-monospace,SFMono-Regular,Cascadia Code,monospace;font-size:11px;font-weight:700;letter-spacing:.22em;line-height:1.4;white-space:nowrap;box-shadow:0 1px #d3c398,0 2px 6px #00000038;transform:translate(-50%);animation:hotkey-hint-in .15s cubic-bezier(.16,1,.3,1) both}.hotkey-hint[data-above=true]{transform-origin:center bottom;--hk-from: 4px}.hotkey-hint[data-above=false]{transform-origin:center top;--hk-from: -4px}@keyframes hotkey-hint-in{0%{opacity:0;scale:.82;translate:0 var(--hk-from, 4px)}to{opacity:1;scale:1;translate:0 0}}@media (prefers-reduced-motion: reduce){.hotkey-hint{animation:none}}.scroll-to-bottom{position:absolute;right:14px;bottom:calc(var(--composer-h, 88px) + 10px);z-index:5;box-sizing:border-box;width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--line);background:var(--bg-1, var(--bg));color:var(--text);cursor:pointer;box-shadow:0 4px 14px #00000059;opacity:0;transform:translateY(10px) scale(.9);pointer-events:none;transition:opacity var(--ease) .18s,transform var(--ease) .18s,background var(--ease) .15s}.scroll-to-bottom[data-show=true],.app[data-cmd-held=true] .scroll-to-bottom{opacity:1;transform:none;pointer-events:auto}.scroll-to-bottom:hover{background:var(--bg-hover, var(--bg-2))}.scroll-to-bottom:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.scroll-to-bottom{transition:opacity .12s linear}}@media (max-width: 759px){.modal-process{width:100vw;max-width:none;height:100dvh;max-height:100dvh;border-radius:0}.modal-process .modal-head{padding-top:max(12px,var(--safe-top))}.modal-process .proc-body{max-height:none;flex:1 1 auto;padding-bottom:var(--safe-bottom)}}.live-pending{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-top:1px solid var(--line);background:var(--bg-1)}.live-pending-bubble{display:flex;align-items:center;gap:8px;align-self:flex-end;max-width:85%;padding:7px 11px;border-radius:12px 12px 4px;background:var(--bg-2);border:1px solid var(--line);color:var(--text);font-size:13px;opacity:.9}.live-pending-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 6px var(--amber);animation:pulse 1.2s var(--ease) infinite}@media (min-width: 760px){.modal-optimize{max-width:min(1040px,94vw)}}@keyframes foot-pulse{50%{transform:scale(1.14)}}@media (min-width: 760px){.reload-glyph{font-size:18px}}.reload-foot{transition:color .15s var(--ease),border-color .15s var(--ease),background .15s var(--ease)}.reload-foot:hover{color:var(--accent)}.rail-foot-icon:not(.reload-foot):hover{color:var(--accent);animation:foot-pulse .9s var(--ease) infinite}.rail-foot-btn:not(.rail-foot-icon) svg{transition:transform .5s var(--ease)}.rail-foot-btn:not(.rail-foot-icon):hover svg{transform:rotate(120deg)}.composer-attach,.composer-skills-btn,.composer-mic,.composer-send,.composer-enhance{transition:transform .15s var(--ease),color .15s var(--ease),background .15s var(--ease),filter .15s var(--ease)}.composer-attach:hover,.composer-skills-btn:hover{color:var(--accent);transform:translateY(-1px) scale(1.08)}.composer-attach:active,.composer-skills-btn:active,.composer-mic:active,.composer-send:active{transform:scale(.92)}.composer-mic:hover{color:var(--accent);animation:foot-pulse 1s var(--ease) infinite}.composer-send:hover{transform:translateY(-1px) scale(1.06);filter:brightness(1.08)}@media (prefers-reduced-motion: reduce){.reload-glyph,.reload-foot:hover .reload-glyph,.reload-foot:active .reload-glyph,.rail-foot-icon:not(.reload-foot):hover,.rail-foot-btn:not(.rail-foot-icon):hover svg,.composer-attach,.composer-skills-btn,.composer-mic,.composer-mic:hover,.composer-send,.composer-send:hover{animation:none!important;transform:none!important}}::highlight(transcript-search){background-color:color-mix(in oklch,var(--amber) 35%,transparent);color:inherit}::highlight(transcript-search-active){background-color:var(--amber);color:#0a0d12}.transcript-search{position:absolute;top:10px;right:14px;z-index:30;display:flex;align-items:center;gap:4px;padding:5px 8px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 4px 16px #0006;max-width:calc(100% - 28px)}.transcript-search-input{width:160px;max-width:40vw;background:transparent;border:none;outline:none;color:var(--text);font-size:var(--txt-meta);font-family:inherit;line-height:1.4;-webkit-appearance:none;appearance:none}.transcript-search-input::placeholder{color:var(--text-faint)}.transcript-search-input::-webkit-search-cancel-button{display:none}.transcript-search-count{font-size:var(--txt-meta);color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;min-width:2.5ch;text-align:right}.transcript-search-nav,.transcript-search-close{display:inline-flex;align-items:center;justify-content:center;height:22px;min-width:22px;padding:0 3px;background:none;border:1px solid transparent;border-radius:5px;color:var(--text-dim);cursor:pointer;font-size:13px;line-height:1;transition:color var(--ease) .12s,background var(--ease) .12s;flex:0 0 auto}.transcript-search-nav:hover,.transcript-search-close:hover{color:var(--text);background:var(--bg-hover)}.transcript-search-nav:disabled{opacity:.35;cursor:default}.transcript-search-nav:focus-visible,.transcript-search-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (max-width: 480px){.transcript-search{right:8px;top:8px}.transcript-search-input{width:120px}}.aui-md pre code.hljs{background:transparent;color:var(--text)}.aui-md .hljs-doctag,.aui-md .hljs-keyword,.aui-md .hljs-meta .hljs-keyword,.aui-md .hljs-template-tag,.aui-md .hljs-template-variable,.aui-md .hljs-type,.aui-md .hljs-variable.language_{color:#ff7b72}.aui-md .hljs-title,.aui-md .hljs-title.class_,.aui-md .hljs-title.class_.inherited__,.aui-md .hljs-title.function_{color:#d2a8ff}.aui-md .hljs-attr,.aui-md .hljs-attribute,.aui-md .hljs-literal,.aui-md .hljs-meta,.aui-md .hljs-number,.aui-md .hljs-operator,.aui-md .hljs-variable,.aui-md .hljs-selector-attr,.aui-md .hljs-selector-class,.aui-md .hljs-selector-id{color:#79c0ff}.aui-md .hljs-regexp,.aui-md .hljs-string,.aui-md .hljs-meta .hljs-string{color:#a5d6ff}.aui-md .hljs-built_in,.aui-md .hljs-symbol{color:#ffa657}.aui-md .hljs-comment,.aui-md .hljs-code,.aui-md .hljs-formula{color:#8b949e}.aui-md .hljs-name,.aui-md .hljs-quote,.aui-md .hljs-selector-tag,.aui-md .hljs-selector-pseudo{color:#7ee787}.aui-md .hljs-subst{color:var(--text)}.aui-md .hljs-section{color:#1f6feb;font-weight:700}.aui-md .hljs-bullet{color:#f2cc60}.aui-md .hljs-emphasis{color:var(--text);font-style:italic}.aui-md .hljs-strong{color:var(--text);font-weight:700}.aui-md .hljs-addition{color:#aff5b4;background-color:#033a16}.aui-md .hljs-deletion{color:#ffdcd7;background-color:#67060c}
|