software-defence-factory 0.18.0 → 0.18.3
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/.agents/skills/factory-foundation/SKILL.md +3 -1
- package/bin/software-defence-factory.mjs +7 -0
- package/docs/architecture.md +5 -1
- package/docs/interfaces.md +8 -1
- package/docs/migration.md +1 -2
- package/docs/npm.md +89 -2
- package/docs/recovery.md +30 -0
- package/docs/setup.md +62 -0
- package/factory/release-check.mjs +34 -0
- package/factory/ui/assets/{index-DF4PbU_c.css → index-Bo9ZQMxU.css} +1 -1
- package/factory/ui/assets/index-j2emPUW7.js +9 -0
- package/factory/ui/index.html +2 -2
- package/package.json +1 -1
- package/todo.md +21 -15
- package/factory/ui/assets/index-DC5F-27U.js +0 -9
|
@@ -44,7 +44,9 @@ the existing issue/task record, not a second project registry.
|
|
|
44
44
|
manager and authenticated SSH forwarding for remote access. Record boot/login
|
|
45
45
|
prerequisites and test restart recovery without starting another native turn.
|
|
46
46
|
Updating or stopping an active or unknown writer must not silently interrupt
|
|
47
|
-
it. Native history and local references remain outside the package.
|
|
47
|
+
it. Native history and local references remain outside the package. Offer the
|
|
48
|
+
[optional OS release check](../../../docs/npm.md#optional-linux-release-check-timer)
|
|
49
|
+
only when selected; a metadata lookup does not install or activate a release.
|
|
48
50
|
- **Proof:** start one bounded issue through the installed Inbox or CLI; inspect
|
|
49
51
|
its native result, explicitly continue it, then run the project's checks and
|
|
50
52
|
independent review against the exact candidate. Qualify only the authorized
|
|
@@ -13,6 +13,7 @@ import { connectBridge, registerBridge } from '../factory/native/bridge-client.m
|
|
|
13
13
|
import { acquireProcessLock } from '../factory/native/process-lock.mjs';
|
|
14
14
|
import { manageNativeService } from '../factory/native/service.mjs';
|
|
15
15
|
import { issueProvider } from '../factory/issue-provider.mjs';
|
|
16
|
+
import { checkRelease } from '../factory/release-check.mjs';
|
|
16
17
|
|
|
17
18
|
const root=fileURLToPath(new URL('../',import.meta.url));
|
|
18
19
|
const version=JSON.parse(readFileSync(join(root,'package.json'),'utf8')).version;
|
|
@@ -36,6 +37,7 @@ Usage:
|
|
|
36
37
|
factory continue ID --turn TURN_ID --feedback TEXT [--state PATH]
|
|
37
38
|
factory interrupt ID --turn TURN_ID [--state PATH]
|
|
38
39
|
factory service install|status|start|stop|restart|remove|cancel-maintenance [--state PATH] [--port PORT]
|
|
40
|
+
factory updates check --channel latest|next
|
|
39
41
|
factory kit --output NEW_DIRECTORY
|
|
40
42
|
factory foundation
|
|
41
43
|
factory probe codex
|
|
@@ -185,6 +187,11 @@ async function command(args) {
|
|
|
185
187
|
const {values,flags}=parse(rest,{positionals:1,allowed:['--state']});
|
|
186
188
|
return online(stateFrom(flags),async bridge=>print(await bridge.request(`/api/v1/jobs/${jobID(values[0])}/resume`,{})));
|
|
187
189
|
}
|
|
190
|
+
if(name==='updates') {
|
|
191
|
+
if(rest[0]!=='check')throw new Error('Use updates check --channel latest|next; release activation remains manual.');
|
|
192
|
+
const {flags}=parse(rest.slice(1),{allowed:['--channel']});
|
|
193
|
+
print(await checkRelease({version,channel:flags['--channel']}));return;
|
|
194
|
+
}
|
|
188
195
|
if(name==='runtime') {
|
|
189
196
|
const {flags}=parse(rest,{allowed:['--state']});
|
|
190
197
|
const result={package:'software-defence-factory',version,entrypoint:root,source_checkout:existsSync(join(root,'.git')),native_state:'unknown'};
|
package/docs/architecture.md
CHANGED
|
@@ -13,7 +13,7 @@ The native harness remains the execution engine.
|
|
|
13
13
|
| Small bridge | Authenticate local requests, associate issues with native sessions, refuse ambiguous or duplicate operations |
|
|
14
14
|
| Codex | Agent loop, context, tools, permissions, sessions and execution history |
|
|
15
15
|
| GitHub | Repository issues, templates, PRs, checks and authorized publication |
|
|
16
|
-
| OS service manager | Start the pinned bridge after login/boot
|
|
16
|
+
| OS service manager | Start the pinned bridge after login/boot, supervise its process and optionally schedule metadata-only release checks |
|
|
17
17
|
|
|
18
18
|
## Small integration boundaries
|
|
19
19
|
|
|
@@ -38,6 +38,10 @@ These receipts prevent uncertain writes being replayed; they are not a queue or
|
|
|
38
38
|
copy of native conversation history. There is one writer per project workspace.
|
|
39
39
|
The repository's normal Git tools own commits and branches.
|
|
40
40
|
|
|
41
|
+
Operator release checks read public npm metadata independently of the bridge or
|
|
42
|
+
native harness. An optional OS timer only schedules that read; activation remains
|
|
43
|
+
manual and must preserve native work. See [packages and releases](npm.md).
|
|
44
|
+
|
|
41
45
|
## Deployment
|
|
42
46
|
|
|
43
47
|

|
package/docs/interfaces.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Interfaces and state
|
|
2
2
|
|
|
3
3
|
The Inbox and operational CLI commands use one running loopback bridge. Setup,
|
|
4
|
-
login, diagnostics, method export and OS-service management
|
|
4
|
+
login, diagnostics, method export, release checking and OS-service management
|
|
5
|
+
are operator commands.
|
|
5
6
|
There is no second CLI execution engine.
|
|
6
7
|
|
|
7
8
|
| Intent | CLI |
|
|
@@ -27,6 +28,8 @@ New issue loads repository templates, then creates through the repository
|
|
|
27
28
|
provider. Creation is separate from Start. Existing repository issues enter the
|
|
28
29
|
Inbox automatically when loaded; there is no redundant import-as-new-issue flow.
|
|
29
30
|
GitHub browser login and the execution host's authenticated GitHub CLI are separate.
|
|
31
|
+
For the browser creation, receipt recovery and delivery walkthrough, see
|
|
32
|
+
[setup](setup.md#create-and-deliver-an-issue).
|
|
30
33
|
|
|
31
34
|
The issue CLI uses the same JSON bodies as the dashboard's HTTP requests.
|
|
32
35
|
`issues draft --file` takes `template` (the selected template ID), `sha`, `title` and `answers`; inspect
|
|
@@ -38,6 +41,10 @@ Never generate a fresh ID merely to retry. Inspect `issues submissions` and use
|
|
|
38
41
|
`issues recover` to look for the existing upstream issue; recovery does not repeat
|
|
39
42
|
creation or start an agent.
|
|
40
43
|
|
|
44
|
+
Release checking is an operator read: `factory updates check --channel next`
|
|
45
|
+
compares public npm metadata with the executing CLI package. It does not activate
|
|
46
|
+
the pinned service or invoke the harness. See [packages and releases](npm.md).
|
|
47
|
+
|
|
41
48
|
## State is observable, not invented
|
|
42
49
|
|
|
43
50
|
- **Backlog**: a repository issue without execution; labels describe planning.
|
package/docs/migration.md
CHANGED
|
@@ -39,5 +39,4 @@ history locations, service identity and tested/untested limits. Roll back only
|
|
|
39
39
|
with a verified idle owner and explicit old-state selection; never point the old
|
|
40
40
|
runtime at native state or let both write the same workspace.
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
promise that they appear in a separate personal Codex Desktop environment.
|
|
42
|
+
For native session visibility and context boundaries, see [setup](setup.md#native-codex-session-visibility).
|
package/docs/npm.md
CHANGED
|
@@ -15,6 +15,93 @@ for occasional use. A long-running service pins an installed package and the
|
|
|
15
15
|
chosen Node binary; it must not run from an editable source checkout or depend on
|
|
16
16
|
an npx cache being retained.
|
|
17
17
|
|
|
18
|
+
## Check a selected channel
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
factory updates check --channel next
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Choose `next` or `latest` explicitly. The command reads public npm metadata and
|
|
25
|
+
compares it with **the CLI package executing the check**, not the pinned running
|
|
26
|
+
service. Use `factory service status --state PATH` to inspect that service's
|
|
27
|
+
version separately. A global npm upgrade does not activate a service release.
|
|
28
|
+
|
|
29
|
+
The JSON result distinguishes `newer`, `current` and `older`. An older channel is
|
|
30
|
+
never an upgrade: `latest` remains 0.17 while native 0.18 is on `next`. A different
|
|
31
|
+
0.x minor line requires deliberate migration. A successful lookup exits zero,
|
|
32
|
+
including when a newer release exists; unavailable, oversized or invalid metadata
|
|
33
|
+
exits nonzero and means availability is unknown. Metadata is not package integrity,
|
|
34
|
+
provenance, review or compatibility proof.
|
|
35
|
+
|
|
36
|
+
Checking requires no Factory state, GitHub/Codex login or npm credentials. It does
|
|
37
|
+
not download, install or activate a release, touch native history, or call a model.
|
|
38
|
+
|
|
39
|
+
## Optional Linux release-check timer
|
|
40
|
+
|
|
41
|
+
Use the OS for periodic checking. After selecting an installed release that
|
|
42
|
+
supports the command, create the following **new** files in your user systemd
|
|
43
|
+
directory (`$XDG_CONFIG_HOME/systemd/user`, normally `~/.config/systemd/user`).
|
|
44
|
+
Inspect existing files first; do not overwrite another operator's units.
|
|
45
|
+
|
|
46
|
+
`factory-release-check.service`:
|
|
47
|
+
|
|
48
|
+
```ini
|
|
49
|
+
[Unit]
|
|
50
|
+
Description=Check the selected Factory release channel
|
|
51
|
+
|
|
52
|
+
[Service]
|
|
53
|
+
Type=oneshot
|
|
54
|
+
ExecStart="/absolute/node" "/absolute/installed/package/bin/software-defence-factory.mjs" updates check --channel next
|
|
55
|
+
TimeoutStartSec=30
|
|
56
|
+
UMask=0077
|
|
57
|
+
NoNewPrivileges=true
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Replace both executable paths with the selected Node and installed package paths;
|
|
61
|
+
`factory runtime` reports the package directory as `entrypoint`; append
|
|
62
|
+
`/bin/software-defence-factory.mjs` for the script path and confirm
|
|
63
|
+
`source_checkout` is false. A version-pinned package can be used instead of the
|
|
64
|
+
global installation. Keep the chosen channel explicit. This unit
|
|
65
|
+
only reads metadata; it never invokes `npm install` or `factory service restart`.
|
|
66
|
+
|
|
67
|
+
`factory-release-check.timer`:
|
|
68
|
+
|
|
69
|
+
```ini
|
|
70
|
+
[Unit]
|
|
71
|
+
Description=Daily Factory release check
|
|
72
|
+
|
|
73
|
+
[Timer]
|
|
74
|
+
OnCalendar=daily
|
|
75
|
+
RandomizedDelaySec=15m
|
|
76
|
+
Persistent=true
|
|
77
|
+
|
|
78
|
+
[Install]
|
|
79
|
+
WantedBy=timers.target
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Validate both files, run one actual lookup, inspect its result, then opt in:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
systemd-analyze --user verify /absolute/path/factory-release-check.service /absolute/path/factory-release-check.timer
|
|
86
|
+
systemctl --user daemon-reload
|
|
87
|
+
systemctl --user start factory-release-check.service
|
|
88
|
+
journalctl --user -u factory-release-check.service -n 20 --no-pager
|
|
89
|
+
systemctl --user enable --now factory-release-check.timer
|
|
90
|
+
systemctl --user list-timers factory-release-check.timer
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The result and errors remain in the OS journal; this is not a dashboard alert or
|
|
94
|
+
an automatic updater. The user service manager must be running; boot without login
|
|
95
|
+
depends on the host's lingering and disk-unlock policy. `Persistent` catches up a
|
|
96
|
+
missed calendar check, subject to the configured random delay; it does not replay
|
|
97
|
+
agent work. See the [systemd timer reference](https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html).
|
|
98
|
+
|
|
99
|
+
To opt out, disable and stop `factory-release-check.timer`, then remove only the
|
|
100
|
+
two files you created and run `systemctl --user daemon-reload`. This does not stop
|
|
101
|
+
the separate Factory Inbox service or modify native credentials and history.
|
|
102
|
+
Other OS scheduling recipes require separate qualification. No Factory scheduler
|
|
103
|
+
or background loop is installed by the CLI.
|
|
104
|
+
|
|
18
105
|
## Update deliberately
|
|
19
106
|
|
|
20
107
|
0.18 uses `next` so old auto-updaters following `latest` do not silently activate a
|
|
@@ -27,8 +114,8 @@ then perform the supported service replacement and verify readiness/history/UI.
|
|
|
27
114
|
Keep access/profile changes explicit. An npm upgrade alone does not change a
|
|
28
115
|
pinned running service. See [migration](migration.md) and [recovery](recovery.md).
|
|
29
116
|
|
|
30
|
-
|
|
31
|
-
|
|
117
|
+
The optional timer above checks only. Unattended activation remains deferred
|
|
118
|
+
until safe maintenance and rollback are qualified.
|
|
32
119
|
Do not describe a manual update procedure as an automatic updater.
|
|
33
120
|
|
|
34
121
|
## Repository delivery
|
package/docs/recovery.md
CHANGED
|
@@ -18,6 +18,36 @@ bridge. Native Codex owns the full history. Another app-server may read persiste
|
|
|
18
18
|
history without knowing a different process's live state; that read alone cannot
|
|
19
19
|
authorize a competing writer or stopping the original process.
|
|
20
20
|
|
|
21
|
+
## Native Codex login recovery
|
|
22
|
+
|
|
23
|
+
For an expired or revoked login, first inspect work and the selected service:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
factory status --state /absolute/private/factory-state
|
|
27
|
+
factory service status --state /absolute/private/factory-state
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Keep unknown outcomes unknown. Preserve work and reconcile ownership through the
|
|
31
|
+
existing [service operation](#service-operation) rules; do not kill work to
|
|
32
|
+
repair login. Once work is idle and ownership is reconciled, run:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
factory login --state /absolute/private/factory-state
|
|
36
|
+
factory doctor --state /absolute/private/factory-state
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Login is native to the selected Factory Codex home; it does not replace personal
|
|
40
|
+
Codex login. Doctor alone does not prove live inference or token refresh. Do not
|
|
41
|
+
fall back to personal context or duplicate work if authentication remains
|
|
42
|
+
unavailable. For session visibility and account boundaries, see [setup](setup.md#native-codex-session-visibility).
|
|
43
|
+
|
|
44
|
+
A usage-limit response is different from an expired login. A valid account and a
|
|
45
|
+
passing doctor do not establish remaining inference capacity. Preserve the
|
|
46
|
+
current result and wait until native capacity is available; logging in again
|
|
47
|
+
is not a remedy for exhausted usage. Continue a reconciled terminal thread
|
|
48
|
+
explicitly when appropriate, rather than creating a replacement job or switching
|
|
49
|
+
accounts/providers automatically.
|
|
50
|
+
|
|
21
51
|
## Service operation
|
|
22
52
|
|
|
23
53
|
```sh
|
package/docs/setup.md
CHANGED
|
@@ -40,6 +40,33 @@ is not a real execution or sandbox proof. Model preferences belong in the native
|
|
|
40
40
|
configuration; access changes require deliberate requalification. Factory refuses
|
|
41
41
|
an unexplained change to its pinned configuration or skill catalog.
|
|
42
42
|
|
|
43
|
+
## Native Codex session visibility
|
|
44
|
+
|
|
45
|
+
Codex stores configuration, authentication and history under `CODEX_HOME`
|
|
46
|
+
([configuration and state locations](https://learn.chatgpt.com/docs/config-file/config-advanced#config-and-state-locations)).
|
|
47
|
+
Factory uses its dedicated Codex home, so the same ChatGPT account does not
|
|
48
|
+
combine local configuration or history. The supported Factory surface is the
|
|
49
|
+
project Inbox and these commands through its owning bridge:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
factory status --state /absolute/private/factory-state
|
|
53
|
+
factory result ID --state /absolute/private/factory-state
|
|
54
|
+
factory continue ID --turn TURN_ID --feedback TEXT --state /absolute/private/factory-state
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
A separate personal Codex Desktop or remote connection must not be expected to
|
|
58
|
+
show Factory sessions. Desktop remote connections start their server in the
|
|
59
|
+
remote user's login shell ([remote connection documentation](https://learn.chatgpt.com/docs/remote-connections#connect-to-an-ssh-host)).
|
|
60
|
+
Do not copy or symlink authentication, session or database files, or enable
|
|
61
|
+
personal connections to expose Factory work. A persisted native read does not
|
|
62
|
+
authorize another writer. Desktop visibility or resume requires qualification
|
|
63
|
+
for that deployment and is not needed for Factory's current surface.
|
|
64
|
+
|
|
65
|
+
Local-home separation is not account or plan separation. API authentication and
|
|
66
|
+
subscription login are distinct; do not infer plan or quota behavior from local
|
|
67
|
+
state or promise automatic token refresh or indefinite coexistence. For expired
|
|
68
|
+
or revoked login, follow [native Codex login recovery](recovery.md#native-codex-login-recovery).
|
|
69
|
+
|
|
43
70
|
## Start and reach the Inbox
|
|
44
71
|
|
|
45
72
|
```sh
|
|
@@ -71,6 +98,41 @@ Login normally starts a user service; boot without login needs the host's user
|
|
|
71
98
|
lingering policy. Record disk-unlock and network prerequisites. Do not claim a
|
|
72
99
|
reboot was tested merely because a service is enabled.
|
|
73
100
|
|
|
101
|
+
## Create and deliver an issue
|
|
102
|
+
|
|
103
|
+
In the Inbox, choose **New issue** and select a repository template or **Blank
|
|
104
|
+
issue**. Complete every required field. Review the compiled title and description,
|
|
105
|
+
then check the repository and acting GitHub identity shown before choosing **Create
|
|
106
|
+
issue**. The receipt confirms the GitHub issue; creation does not start Codex.
|
|
107
|
+
**Done** returns to the Inbox, which refreshes its issue list.
|
|
108
|
+
|
|
109
|
+
Once the UI shows **Issue #N created**, GitHub creation is confirmed, even if the
|
|
110
|
+
browser closes before **Done**. Do not create a replacement issue. If the POST
|
|
111
|
+
response disappears before confirmation, treat the upstream outcome as uncertain
|
|
112
|
+
until that same submission is reconciled. The composer checks its receipt after a
|
|
113
|
+
lost response; use **Check submission** when an uncertain receipt is listed. From
|
|
114
|
+
the CLI, inspect the submission and reconcile its existing ID:
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
factory issues submissions --state PATH
|
|
118
|
+
factory issues recover REQUEST_ID --state PATH
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Keep the original request ID; do not submit the same content again with a new ID
|
|
122
|
+
while its outcome is uncertain. Reloading the browser is not a way to preserve an
|
|
123
|
+
unsent form. **Check submission** can recover an earlier issue without replacing
|
|
124
|
+
the draft currently in the composer; follow its recovered-issue link. When the
|
|
125
|
+
recovered submission matches the current content, the form confirms it as created
|
|
126
|
+
and prevents another submission.
|
|
127
|
+
|
|
128
|
+
After the issue appears in the Inbox, open it, review its current content and
|
|
129
|
+
readiness, then choose **Start work** deliberately. The result shows the native
|
|
130
|
+
Codex response and thread identity. A completed turn needs project checks and an
|
|
131
|
+
independent review of the exact candidate. Use **Continue** to send bounded
|
|
132
|
+
feedback to that same thread. Prepare a protected pull request through the
|
|
133
|
+
project's normal GitHub process, then wait for its required CI checks and review;
|
|
134
|
+
Factory does not treat a completed turn as acceptance or publish a PR for you.
|
|
135
|
+
|
|
74
136
|
## Qualify one bounded issue
|
|
75
137
|
|
|
76
138
|
1. Inspect readiness and verify a permitted workspace write plus denial of a
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const packageName='software-defence-factory';
|
|
2
|
+
const versionParts=value=>{
|
|
3
|
+
if(typeof value!=='string'||!/^0\.(0|[1-9]\d{0,5})\.(0|[1-9]\d{0,5})$/.test(value))
|
|
4
|
+
throw new Error('Release metadata has an unsupported Factory version; inspect the migration manually.');
|
|
5
|
+
return value.split('.').map(Number);
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
// Read public metadata only. npm credentials, lifecycle scripts and native
|
|
9
|
+
// accounts are not needed; neither the installed package nor service is changed.
|
|
10
|
+
export async function checkRelease({version,channel,request=fetch}) {
|
|
11
|
+
if(!['latest','next'].includes(channel))throw new Error('Choose the release channel explicitly: --channel latest or --channel next.');
|
|
12
|
+
const installed=versionParts(version);
|
|
13
|
+
const response=await request(`https://registry.npmjs.org/${packageName}/${channel}`,{
|
|
14
|
+
headers:{Accept:'application/json'},redirect:'error',signal:AbortSignal.timeout(10000),
|
|
15
|
+
});
|
|
16
|
+
if(!response.ok)throw new Error(`Release lookup failed (HTTP ${response.status}); availability is unknown.`);
|
|
17
|
+
let size=0;const chunks=[];
|
|
18
|
+
if(!response.body)throw new Error('Release lookup returned no metadata; availability is unknown.');
|
|
19
|
+
for await (const chunk of response.body) {
|
|
20
|
+
size+=chunk.byteLength;
|
|
21
|
+
if(size>256000)throw new Error('Release metadata exceeds 256 KB; availability is unknown.');
|
|
22
|
+
chunks.push(chunk);
|
|
23
|
+
}
|
|
24
|
+
let candidate;
|
|
25
|
+
try {candidate=JSON.parse(Buffer.concat(chunks).toString('utf8'));}
|
|
26
|
+
catch {throw new Error('Release metadata is not valid JSON; availability is unknown.');}
|
|
27
|
+
if(candidate?.name!==packageName)throw new Error('Release metadata has a different package identity; availability is unknown.');
|
|
28
|
+
const available=versionParts(candidate.version);
|
|
29
|
+
const difference=available.findIndex((part,index)=>part!==installed[index]);
|
|
30
|
+
const relation=difference<0?'current':available[difference]>installed[difference]?'newer':'older';
|
|
31
|
+
return {package:packageName,channel,checked_at:new Date().toISOString(),installed_version:version,
|
|
32
|
+
available_version:candidate.version,relation,update_available:relation==='newer',
|
|
33
|
+
same_version_line:available[1]===installed[1],verification:'public metadata only',activation:'manual'};
|
|
34
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:"Geist Variable", Geist, ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", Geist, ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sticky{position:sticky}.top-0{top:0}.z-20{z-index:20}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mb-px{margin-bottom:-1px}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.max-h-\[32rem\]{max-height:32rem}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-hidden{overflow-y:hidden}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border,.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-sidebar{background-color:var(--sidebar)}.bg-surface{background-color:var(--surface)}.bg-transparent{background-color:#0000}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.font-sans{font-family:Geist Variable,Geist,ui-sans-serif,system-ui,sans-serif}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,1.25rem)}.text-xs{font-size:.75rem;line-height:var(--tw-leading,1rem)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-danger{color:var(--danger)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.capitalize{text-transform:capitalize}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:p-6{padding:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-screen{height:100vh}.md\:w-\[203px\]{width:203px}.md\:flex-col{flex-direction:column}.md\:items-stretch{align-items:stretch}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:py-5{padding-block:calc(var(--spacing) * 5)}}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#fff;--foreground:#0a0a0a;--surface:#fff;--sidebar:#fff;--muted:#f4f4f5;--muted-foreground:#737373;--border:#e5e5e5;--primary:#0a0a0a;--primary-foreground:#fff;--success:#15803d;--warning:#a16207;--danger:#b91c1c;--ring:#525252}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#09090b;--foreground:#f5f5f5;--surface:#0f0f10;--sidebar:#09090b;--muted:#18181b;--muted-foreground:#a1a1aa;--border:#27272a;--primary:#f5f5f5;--primary-foreground:#09090b;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--ring:#a1a1aa}*{border-color:var(--border)}html{background:var(--background)}body{background:var(--background);min-width:320px;min-height:100vh;color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}button,input,textarea,select{font:inherit}button,a,summary,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed}::selection{background:var(--foreground)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--foreground) 16%, transparent)}}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.app-shell{min-height:100vh}.app-sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;align-items:stretch;width:203px;height:100vh;padding:20px 14px 14px;display:flex;position:sticky;top:0}.brand-lockup{gap:9px;height:36px;padding:0 4px}.brand-wordmark{letter-spacing:-.025em;font-size:15px;font-weight:600}.desktop-nav{gap:2px;margin-top:30px;display:grid}.mobile-nav{display:none}.nav-item{height:36px;color:var(--muted-foreground);border-radius:6px;align-items:center;gap:10px;padding:0 10px;font-size:13px;line-height:20px;text-decoration:none;transition:background-color .15s,color .15s;display:flex;position:relative}.nav-item:hover{background:var(--muted);color:var(--foreground)}.nav-item-active{background:var(--muted);color:var(--foreground);font-weight:500}.nav-count{color:var(--muted-foreground);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.sidebar-bottom{border-top:1px solid var(--border);gap:4px;margin-top:auto;padding-top:12px;display:grid}.mobile-settings{border-top:1px solid var(--border);margin-top:5px;padding-top:5px}.theme-switch{text-align:left;background:0 0;border:0;width:100%}.mobile-theme{display:none}.workshop{background:var(--background);flex:1;min-width:0}.project-header{border-bottom:1px solid var(--border);background:var(--background);padding:36px 56px 22px}.project-heading{justify-content:space-between;align-items:flex-start;gap:24px;min-width:0;max-width:1500px;margin:0 auto;display:flex}.project-heading-copy{flex:1;min-width:0}.project-eyebrow{color:var(--muted-foreground);margin-bottom:5px;font-size:12px;line-height:16px;display:block}.project-header h1{overflow-wrap:anywhere;max-width:100%;color:var(--foreground);letter-spacing:-.035em;margin:0;font-size:36px;font-weight:600;line-height:40px}.project-freshness{color:var(--muted-foreground);margin-top:7px;font-size:11px;line-height:16px;display:block}.project-freshness.is-stale{color:var(--warning)}.project-new-task{flex:none;margin-top:17px;border-radius:7px!important;font-size:13px!important}.runs-page{gap:22px;max-width:1500px;margin:0 auto;padding:27px 56px 56px;display:grid}.tasks-toolbar{justify-content:space-between;align-items:flex-end;gap:24px;min-width:0;display:flex}.tasks-tools{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:flex}.task-search{border:1px solid var(--border);background:var(--surface);width:min(320px,34vw);min-width:180px;height:36px;color:var(--muted-foreground);border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.task-search:focus-within{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.task-search:focus-within{border-color:color-mix(in srgb, var(--foreground) 45%, var(--border))}}.task-search input{width:100%;min-width:0;height:100%;color:var(--foreground);background:0 0;border:0;outline:0;padding:0;font-size:13px}.task-search input::placeholder{color:var(--muted-foreground)}.task-search input::-webkit-search-cancel-button{display:none}.clear-search{width:22px;height:22px;color:var(--muted-foreground);background:0 0;border:0;border-radius:4px;flex:none;place-items:center;display:grid}.clear-search:hover{background:var(--muted);color:var(--foreground)}.view-toggle{border:1px solid var(--border);border-radius:8px;flex:none;align-items:center;gap:2px;height:36px;padding:3px;display:flex}.view-toggle button{border-radius:5px;height:28px;padding:0 9px;font-size:12px}.view-toggle .view-active{background:var(--muted);color:var(--foreground)}.run-workspace{grid-template-columns:212px minmax(0,1fr);align-items:start;gap:48px;min-width:0;display:grid}.task-filter-rail{gap:8px;min-width:0;display:grid}.task-filter-rail>h2{color:var(--muted-foreground);letter-spacing:.04em;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:500;line-height:16px}.filter-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;overflow:hidden}.filter-card-main{width:100%;color:var(--foreground);text-align:left;background:0 0;border:0;padding:10px 11px 9px;display:block}.filter-card-main:hover,.filter-card-main[aria-pressed=true]{background:var(--muted)}.filter-card-main:disabled,.filter-substate:disabled{cursor:default;opacity:.7}.filter-card-heading{justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:18px;display:flex}.filter-card-count{color:var(--foreground);font-variant-numeric:tabular-nums;font-size:13px}.filter-card-description{color:var(--muted-foreground);margin-top:2px;font-size:11px;line-height:15px;display:block}.filter-card-children{border-top:1px solid var(--border);gap:1px;padding:4px 7px 6px;display:grid}.filter-substate{min-width:0;min-height:25px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:3px 5px;font-size:11px;line-height:16px;display:flex}.filter-substate:hover,.filter-substate[aria-pressed=true]{background:var(--muted);color:var(--foreground)}.filter-substate span:first-child{overflow-wrap:anywhere;min-width:0}.filter-substate span:last-child{font-variant-numeric:tabular-nums;flex:none}.filter-substate.is-subset{border-left:1px solid var(--border);margin-left:4px;padding-left:8px}.task-results{min-width:0}.task-list{border-top:1px solid var(--border);min-width:0}.task-row{border-bottom:1px solid var(--border);min-width:0}.task-row-link{min-width:0;color:var(--foreground);border-radius:4px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:12px 4px 13px;text-decoration:none;display:grid}@supports (color:color-mix(in lab, red, red)){.task-row-link:hover{background:color-mix(in srgb, var(--muted) 68%, transparent)}}.task-row-content{min-width:0}.task-row-title{overflow-wrap:anywhere;margin:0;font-size:14px;font-weight:500;line-height:20px}.task-row-meta{min-width:0;color:var(--muted-foreground);flex-wrap:wrap;align-items:baseline;gap:2px 14px;margin-top:4px;font-size:11px;line-height:16px;display:flex}.task-row-meta>*{overflow-wrap:anywhere;min-width:0}.work-meta-part{align-items:baseline;display:inline-flex}.task-state{border-radius:5px;flex:none;padding:2px 8px;font-size:11px;font-weight:500;line-height:16px}.run-column{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;overflow:hidden}.run-card-link{min-width:0;color:var(--foreground);padding:12px;text-decoration:none;display:block}.run-card-link:hover{background:var(--muted)}.run-card-title{overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:19px}.run-card-meta{color:var(--muted-foreground);margin:6px 0 0;font-size:11px;line-height:16px}.run-card-status{flex-wrap:wrap;align-items:center;gap:7px;margin-top:9px;display:flex}.run-card-status>span:last-child{color:var(--muted-foreground);font-size:11px}.empty-tasks,.task-message{border:1px dashed var(--border);text-align:center;border-radius:8px;align-content:center;justify-items:center;gap:7px;min-height:230px;padding:28px 18px;display:grid}.empty-tasks h3,.task-message h3{margin:0;font-size:14px;font-weight:600;line-height:20px}.empty-tasks p,.task-message p{max-width:32rem;color:var(--muted-foreground);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.empty-tasks button,.task-message button{margin-top:6px}.task-message-error{border-style:solid;border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.task-message-error{border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}}.task-message-error h3{color:var(--danger)}.stale-banner{border:1px solid var(--warning);justify-content:space-between;align-items:center;gap:14px;padding:9px 12px;display:flex}@supports (color:color-mix(in lab, red, red)){.stale-banner{border:1px solid color-mix(in srgb, var(--warning) 32%, var(--border))}}.stale-banner{color:var(--muted-foreground);border-radius:7px;font-size:12px;line-height:18px}.stale-banner strong{color:var(--warning)}.stale-banner button{flex:none}.form-error{border:1px solid var(--danger);padding:9px 12px}@supports (color:color-mix(in lab, red, red)){.form-error{border:1px solid color-mix(in srgb, var(--danger) 35%, var(--border))}}.form-error{background:var(--danger);border-radius:7px}@supports (color:color-mix(in lab, red, red)){.form-error{background:color-mix(in srgb, var(--danger) 8%, var(--background))}}.form-error{color:var(--danger);font-size:13px}.field-label{color:var(--muted-foreground);margin-bottom:5px;font-size:12px;font-weight:500;line-height:17px;display:block}.field-control{border:1px solid var(--border);background:var(--background);width:100%;min-height:36px;color:var(--foreground);border-radius:7px;outline:none;padding:7px 10px;font-size:13px;line-height:20px;transition:border-color .15s,box-shadow .15s}.field-control::placeholder{color:var(--muted-foreground);opacity:.78}.field-control:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.field-control:focus{border-color:color-mix(in srgb, var(--foreground) 50%, var(--border))}}.field-control:focus{box-shadow:0 0 0 2px var(--foreground)}@supports (color:color-mix(in lab, red, red)){.field-control:focus{box-shadow:0 0 0 2px color-mix(in srgb, var(--foreground) 12%, transparent)}}@media (width<=1199px) and (width>=961px){.project-header,.runs-page{padding-left:38px;padding-right:38px}.run-workspace{gap:24px}}@media (width<=960px){.task-filter-rail{display:none}.run-workspace{display:block}}@media (width<=767px){.app-shell{display:block}.app-sidebar{z-index:40;border-right:0;border-bottom:1px solid var(--border);flex-direction:row;align-items:center;gap:8px;width:100%;height:56px;padding:0 12px}.brand-lockup{gap:8px}.brand-wordmark{font-size:14px;display:inline}.desktop-nav,.sidebar-bottom{display:none}.mobile-nav{margin-left:auto;display:block;position:relative}.mobile-nav summary{border:1px solid var(--border);height:36px;color:var(--foreground);cursor:pointer;border-radius:7px;align-items:center;gap:7px;padding:0 9px;font-size:12px;list-style:none;display:flex}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav nav{z-index:50;border:1px solid var(--border);background:var(--surface);border-radius:9px;gap:3px;width:min(260px,100vw - 24px);padding:8px;display:grid;position:absolute;top:42px;right:0;box-shadow:0 12px 30px #00000024}.mobile-nav nav .nav-item{width:100%}.mobile-theme{color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:7px;flex:none;place-items:center;display:grid}.mobile-theme:hover{border-color:var(--border);color:var(--foreground)}.project-header{padding:25px 20px 17px}.project-heading{flex-direction:column;align-items:stretch;gap:12px}.project-header h1{letter-spacing:-.03em;font-size:30px;line-height:34px}.project-new-task{align-self:flex-start;margin-top:0}.runs-page{gap:18px;padding:21px 20px 36px}.tasks-toolbar{align-items:start;gap:14px;display:grid}.tasks-tools{flex-wrap:wrap;justify-content:space-between;gap:8px;width:100%}.task-search{width:100%;min-width:0}.view-toggle{margin-left:auto}.task-row-link{flex-direction:column;align-items:flex-start;gap:7px;padding:12px 2px;display:flex}.task-row-content{width:100%}.task-row-title{font-size:14px;line-height:20px}.task-row-meta{margin-top:4px}.task-state{align-self:flex-start}.run-column{border-radius:7px}.stale-banner{flex-direction:column;align-items:flex-start}.stale-banner button{align-self:flex-start}}@media (width<=390px){.project-header{padding-left:16px;padding-right:16px}.project-heading{flex-wrap:wrap}.project-heading-copy{width:100%}.project-header h1{font-size:28px;line-height:32px}.project-new-task{margin-top:0}.runs-page{padding-left:16px;padding-right:16px}.tasks-tools{align-items:stretch}.view-toggle{margin-left:0}.filter-control{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{--border:#e7e7e7;--divider:#ededed;--primary:#0077ed;--primary-foreground:#fff;--surface-subtle:#fafafa}.dark{--background:#101012;--sidebar:#101012;--surface:#101012;--surface-subtle:#141416;--border:#27272b;--divider:#242427;--primary:#0787ff;--primary-foreground:#fff}body{font-size:14px}.app-sidebar{padding:18px 12px 14px}.brand-lockup{height:30px;padding:0 8px}.brand-wordmark{color:var(--foreground);letter-spacing:-.06em;font-size:19px;font-weight:650;text-decoration:none}.brand-period{color:var(--muted-foreground)}.desktop-nav{margin-top:18px}.nav-item{gap:9px;height:32px;padding:0 8px;font-size:14px}.nav-count{font-size:12px}.project-header{border-bottom:0;padding:38px 56px 22px}.project-heading{border-bottom:1px solid var(--border);align-items:center;padding-bottom:24px}.project-context-line{flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px;display:flex}.project-freshness{align-items:center;gap:5px;margin:0;font-size:11px;display:inline-flex}.freshness-dot{background:#10a880;border-radius:50%;width:5px;height:5px}.is-stale .freshness-dot{background:var(--warning)}.project-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.repo-action{border:1px solid var(--border);height:32px;color:var(--foreground);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:13px;text-decoration:none;display:inline-flex}.repo-action:hover{background:var(--muted)}.project-new-task{height:32px;margin:0;padding:0 11px;font-size:13px!important}.runs-page{gap:16px;padding-top:0}.tasks-toolbar{align-items:center;gap:18px}.task-facets{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.task-search{width:min(320px,28vw);min-width:150px}.tasks-tools{gap:12px}.view-toggle{border:0;gap:0;padding:0}.view-toggle button{width:28px;padding:0 5px}.active-filters{color:var(--muted-foreground);justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;display:flex}.active-filters span{overflow-wrap:anywhere;min-width:0}.active-filters button{color:var(--foreground);flex:none;align-items:center;gap:4px;display:flex}.synthetic-note{color:var(--muted-foreground);margin:0;font-size:12px}.run-workspace{gap:48px}.task-filter-rail{gap:16px}.all-tasks-filter{text-align:left;width:100%;color:var(--muted-foreground);justify-content:space-between;padding:0 2px;font-size:12px;display:flex}.all-tasks-filter[aria-pressed=true]{color:var(--foreground)}.tone-violet{--tone:#6e63d8}.tone-cyan{--tone:#058299}.tone-pink{--tone:#b6417a}.tone-green{--tone:#058263}.tone-amber{--tone:#a66b18}.tone-neutral{--tone:#71717a}.dark .tone-violet{--tone:#9180f4}.dark .tone-cyan{--tone:#39b4c9}.dark .tone-pink{--tone:#d768a4}.dark .tone-green{--tone:#32b991}.dark .tone-amber{--tone:#d3a357}.dark .tone-neutral{--tone:#a1a1aa}.filter-card{border-color:var(--tone)}@supports (color:color-mix(in lab, red, red)){.filter-card{border-color:color-mix(in srgb, var(--tone) 16%, var(--border))}}.filter-card{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.filter-card{background:color-mix(in srgb, var(--background) 95%, var(--tone))}}.filter-card{box-shadow:0 5px 12px -7px var(--tone);border-radius:8px}@supports (color:color-mix(in lab, red, red)){.filter-card{box-shadow:0 5px 12px -7px color-mix(in srgb, var(--tone) 38%, transparent)}}.dark .filter-card{background:#0b0b0d}.filter-card-main{padding:12px 11px 10px}.filter-card-main[aria-pressed=true]{background:var(--tone)}@supports (color:color-mix(in lab, red, red)){.filter-card-main[aria-pressed=true]{background:color-mix(in srgb, var(--tone) 9%, transparent)}}.filter-card-heading{gap:6px;font-size:14px;font-weight:400}.filter-card-heading>svg{color:var(--tone);flex:none}.filter-card-heading>span:first-of-type{overflow-wrap:anywhere;flex:1;min-width:0}.filter-card-count{color:var(--tone);font-size:14px;font-weight:550}.filter-disclosure{width:100%;color:var(--muted-foreground);justify-content:space-between;align-items:center;padding:0 11px 8px;font-size:12px;display:flex}.filter-disclosure[aria-expanded=true]>svg{transform:rotate(180deg)}.filter-card-children{border:0;gap:5px;padding:0 9px 10px}.filter-card-children[hidden]{display:none}.filter-substate{border:1px solid var(--border);min-height:24px;padding:2px 5px;font-size:12px}.filter-substate[aria-pressed=true]{border-color:var(--tone)}.task-list{border:0}.task-row{border-bottom:1px solid var(--divider);grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 0;display:grid}.task-row:first-child{padding-top:9px}.task-row:hover{background:var(--muted)}@supports (color:color-mix(in lab, red, red)){.task-row:hover{background:color-mix(in srgb, var(--muted) 32%, transparent)}}.task-row-link{min-width:0;padding:0;display:block}.task-row-link:hover{background:0 0}.task-row-title{font-size:14px;font-weight:450;line-height:21px}.task-row-meta{flex-wrap:wrap;gap:2px 8px;margin-top:3px;font-size:12px;line-height:18px;display:flex}.task-row-meta>.work-meta-part+.work-meta-part:before{content:"·";color:var(--muted-foreground);margin-right:8px}.task-status-icon{background:var(--tone);border-radius:7px;flex:none;place-items:center;width:24px;height:24px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.task-status-icon{background:color-mix(in srgb, var(--tone) 13%, transparent)}}.task-status-icon{color:var(--tone)}.task-state{white-space:nowrap;border:1px solid var(--tone);align-items:center;gap:5px;padding:2px 6px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.task-state{border:1px solid color-mix(in srgb, var(--tone) 23%, var(--border))}}.task-state{background:var(--tone);border-radius:5px}@supports (color:color-mix(in lab, red, red)){.task-state{background:color-mix(in srgb, var(--tone) 5%, var(--background))}}.task-state{color:var(--foreground);font-size:11px;font-weight:400;line-height:16px}.state-dot{border:1px solid var(--tone);background:var(--tone);border-radius:50%;width:5px;height:5px}.row-badge-filter{text-align:left;background:0 0;border:0;padding:0}.row-badge-filter:hover .task-state{border-color:var(--tone)}.project-header-compact{padding:18px 30px 0}.project-header-compact .project-heading{padding-bottom:14px}.project-header-compact h1{letter-spacing:-.015em;font-size:15px;line-height:22px}.project-header-compact .project-context-line{gap:10px;margin-top:4px}.task-detail-layout{grid-template-columns:minmax(0,1fr) 288px;align-items:stretch;min-height:calc(100vh - 56px);display:grid}.task-detail-main{min-width:0;padding:24px 32px 56px}.detail-toolbar{color:var(--muted-foreground);justify-content:space-between;align-items:center;margin-bottom:30px;display:flex}.detail-position,.detail-toolbar-actions{align-items:center;gap:12px;font-size:12px;display:flex}.detail-position>div{gap:0;display:grid}.detail-position a,.detail-position span[aria-label]{display:flex}.detail-position span[aria-label]{opacity:.3}.detail-toolbar-actions a,.detail-toolbar-actions button{border-radius:4px;place-items:center;width:28px;height:28px;display:grid}.detail-toolbar-actions a:hover,.detail-toolbar-actions button:hover{background:var(--muted);color:var(--foreground)}.copy-status{font-size:11px}.task-detail-heading{flex-wrap:wrap;align-items:flex-start;gap:12px;margin-bottom:26px;display:flex}.task-detail-heading h2{overflow-wrap:anywhere;flex:1;min-width:0;margin:0;font-size:18px;font-weight:600;line-height:26px}.task-detail-heading>p{flex-basis:100%}.task-detail-main [role=tablist]{gap:22px;margin-bottom:24px}.task-detail-main [role=tab]{padding-top:8px;padding-bottom:10px;font-size:13px}.task-result{border:0;border-left:1px solid var(--border);box-shadow:none;background:0 0;border-radius:0;margin-left:11px;padding:0 0 0 20px}.task-detail-main [role=tabpanel]{overflow-wrap:anywhere;min-width:0}.task-detail-main [role=tabpanel] .break-words{overflow-wrap:anywhere}.task-result>h2{font-size:14px}.task-metadata{border-left:1px solid var(--border);background:var(--surface-subtle);min-width:0;padding:24px}.task-metadata h3{align-items:center;gap:8px;margin:0 0 24px;font-size:14px;font-weight:600;display:flex}.task-metadata dl{gap:22px;display:grid}.task-metadata dt{color:var(--muted-foreground);align-items:center;gap:5px;margin-bottom:7px;font-size:12px;display:flex}.task-metadata dd{overflow-wrap:anywhere;margin:0;font-size:13px}.source-revision-sha{overflow-wrap:anywhere;word-break:break-all;font-size:11px;line-height:17px;display:block}.task-metadata .metadata-hint{color:var(--muted-foreground);margin-top:5px;font-size:11px;line-height:17px}.metadata-link{border:1px solid var(--border);border-radius:5px;align-items:center;gap:6px;padding:3px 6px;text-decoration:none;display:inline-flex}.metadata-link:hover{background:var(--muted)}.task-metadata .task-state{color:var(--tone);background:var(--tone);border-radius:20px;padding:5px 9px}@supports (color:color-mix(in lab, red, red)){.task-metadata .task-state{background:color-mix(in srgb, var(--tone) 15%, transparent)}}.workshop>.secondary-page{max-width:1500px;padding:0 56px 56px}@media (width<=1200px){.project-header,.runs-page,.workshop>.secondary-page{padding-left:36px;padding-right:36px}.project-actions{max-width:250px}.tasks-toolbar{flex-wrap:wrap}.tasks-tools{flex:1}.task-search{width:min(320px,100%)}.task-detail-layout{grid-template-columns:minmax(0,1fr) 248px}.task-detail-main{padding-left:26px;padding-right:26px}.task-metadata{padding:24px 18px}}@media (width<=900px){.run-workspace{grid-template-columns:190px minmax(0,1fr);gap:24px}.task-row{grid-template-columns:24px minmax(0,1fr);gap:9px}.row-badge-filter{grid-column:2}.task-detail-layout{grid-template-columns:minmax(0,1fr)}.task-metadata{border-left:0;border-top:1px solid var(--border)}.task-metadata dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}@media (width<=767px){.app-sidebar{width:100%;height:auto;padding:10px 16px}.brand-lockup{padding:0}.project-header{padding:24px 20px 18px}.project-heading{flex-direction:column;align-items:flex-start;gap:18px;padding-bottom:20px}.project-header h1{font-size:28px;line-height:34px}.project-actions{justify-content:flex-start;gap:6px;max-width:100%}.project-new-task{margin:0}.runs-page,.workshop>.secondary-page{padding:0 20px 32px}.tasks-toolbar{flex-direction:column;align-items:stretch;gap:12px}.task-facets{gap:6px}.tasks-tools{width:100%}.task-search{flex:1;width:auto;min-width:0}.run-workspace{display:block}.task-row-title{font-size:14px}.task-row-meta{font-size:12px}.project-header-compact{padding:14px 20px 0}.project-header-compact h1{font-size:14px;line-height:20px}.project-header-compact .project-heading{flex-direction:row;align-items:center;gap:10px;padding-bottom:12px}.project-header-compact .project-actions .repo-action{gap:0;padding:0 7px;font-size:0}.project-header-compact .project-actions .repo-action>svg:last-child{display:none}.task-detail-main{padding:16px 20px 32px}.detail-toolbar{margin-bottom:24px}.task-detail-heading{gap:8px}.task-detail-heading h2{font-size:17px;line-height:24px}.task-detail-main [role=tablist]{gap:18px}.task-metadata{padding:24px 20px}}.brand-wordmark{flex-direction:column;gap:3px;font-size:23px;line-height:24px;display:flex}.brand-descriptor{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);font-size:8px;font-weight:550;line-height:12px}.project-path{color:var(--muted-foreground);font-size:11px;position:relative}.project-path>button{cursor:help;align-items:center;gap:4px;display:flex}.project-path [role=tooltip]{z-index:60;border:1px solid var(--border);background:var(--surface);width:240px;max-width:calc(100vw - 48px);color:var(--foreground);overflow-wrap:anywhere;border-radius:7px;padding:12px;line-height:18px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 8px 24px #0002}.project-path [role=tooltip][hidden]{display:none}.project-path code{font-size:11px}.repo-action.new-issue-action{border-color:var(--primary);background:var(--primary);color:var(--primary-foreground)}.facet-container{min-width:0;position:relative}.task-facet{border:1px solid var(--border);background:0 0;border-radius:7px;align-items:center;gap:6px;height:36px;padding:0 10px;font-size:13px;display:flex}.task-facet>svg{color:var(--muted-foreground);flex:none}.task-facet.is-selected{border-color:var(--muted-foreground);background:var(--muted)}.task-facet:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.facet-count{background:var(--border);text-align:center;border-radius:4px;min-width:17px;padding:0 3px;font-size:10px}.facet-popover{z-index:50;border:1px solid var(--border);background:var(--surface);border-radius:9px;width:256px;max-width:calc(100vw - 40px);padding:6px;font-size:13px;position:absolute;top:calc(100% + 7px);left:0;box-shadow:0 10px 26px #0002}.facet-popover-heading{justify-content:space-between;align-items:center;padding:6px 8px 10px;font-size:12px;font-weight:550;display:flex}.facet-popover-heading button{color:var(--muted-foreground);font-weight:400}.facet-popover-heading button:disabled{opacity:.4}.facet-options{overscroll-behavior:contain;max-height:240px;overflow-y:auto}.facet-option{cursor:pointer;border-radius:4px;align-items:center;gap:9px;padding:8px;display:flex}.facet-option:hover,.facet-option:focus-within{background:var(--muted)}.facet-option span{overflow-wrap:anywhere}.facet-select-all{border-bottom:1px solid var(--border);border-radius:0;margin-bottom:4px}.facet-empty{color:var(--muted-foreground);padding:14px 8px}.active-filters{align-items:center;min-height:28px}.task-list-actions{align-items:center;gap:18px;display:flex}.task-list-actions button:disabled{opacity:.35;cursor:default}.run-workspace.is-board{display:block}.is-board .task-filter-rail{display:none}.kanban-scroll{overscroll-behavior-x:contain;scrollbar-width:auto;scrollbar-color:var(--muted-foreground) var(--muted);max-width:100%;padding-bottom:14px;overflow-x:scroll}.kanban-scroll::-webkit-scrollbar{height:11px}.kanban-scroll::-webkit-scrollbar-track{background:var(--muted);border-radius:8px}.kanban-scroll::-webkit-scrollbar-thumb{background:var(--muted-foreground);border:3px solid var(--muted);border-radius:8px}.kanban-board{grid-auto-columns:290px;grid-auto-flow:column;align-items:start;gap:16px;width:max-content;min-width:100%;display:grid}.kanban-board .run-column{min-height:360px}@media (width<=767px){.brand-wordmark{font-size:20px;line-height:22px}.brand-descriptor{font-size:7px}.task-facet{gap:4px;padding:0 7px;font-size:12px}.task-facet>svg:first-child{display:none}.facet-container:last-child .facet-popover{left:auto;right:0}.facet-container:nth-child(2) .facet-popover{left:50%;transform:translate(-50%)}.kanban-board{grid-auto-columns:min(290px,100vw - 60px)}.project-path [role=tooltip]{left:auto;right:0}}.work-dialog{color:var(--foreground);background:var(--surface);border:1px solid var(--border);border-radius:12px;width:min(660px,100vw - 32px);max-height:calc(100dvh - 40px);margin:auto;padding:0;overflow-y:auto;box-shadow:0 24px 80px #0005}.work-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0008}.work-dialog-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding:24px;display:flex}.work-dialog-header h2{font-size:20px;font-weight:600}.work-dialog-header p{color:var(--muted-foreground);overflow-wrap:anywhere;margin-top:6px;font-size:12px}.work-dialog-body{gap:20px;min-width:0;padding:24px;display:grid}.work-source{border-bottom:1px solid var(--border);gap:24px;display:flex}.work-source button{color:var(--muted-foreground);border-bottom:2px solid #0000;padding-bottom:10px;font-size:13px}.work-source button[aria-pressed=true]{color:var(--foreground);border-bottom-color:var(--foreground)}.work-brief{resize:vertical;min-height:180px;max-height:45vh}.issue-picker{gap:12px;min-width:0;display:grid}.issue-list{border:1px solid var(--border);border-radius:8px;max-height:310px;overflow-y:auto}.issue-list>p{padding:16px}.issue-choice{text-align:left;border-bottom:1px solid var(--border);align-items:center;gap:12px;width:100%;padding:14px;display:flex}.issue-choice:last-child{border-bottom:0}.issue-choice:hover,.issue-choice:focus-visible{background:var(--muted)}.issue-choice:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.issue-choice:disabled{opacity:.55}.issue-choice>svg,.issue-number{flex:none}.issue-number{color:var(--muted-foreground);font-size:12px}.issue-choice-copy{overflow-wrap:anywhere;flex:1;min-width:0}.issue-choice-copy strong{font-size:13px;font-weight:500;display:block}.issue-choice-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.issue-choice-meta .issue-number{margin-right:3px}.issue-open-icon{color:#3c925d;align-self:flex-start;margin-top:2px}.issue-label{border:1px solid var(--label-color);border-radius:20px;padding:1px 7px;font-size:10px;font-weight:500;line-height:17px}@supports (color:color-mix(in lab, red, red)){.issue-label{border:1px solid color-mix(in srgb, var(--label-color) 28%, transparent)}}.issue-label{color:var(--label-color);background:var(--label-color)}@supports (color:color-mix(in lab, red, red)){.issue-label{background:color-mix(in srgb, var(--label-color) 8%, var(--surface))}}.label-neutral{--label-color:#646b77}.label-red{--label-color:#af4048}.label-orange{--label-color:#9f5a2a}.label-yellow{--label-color:#846b12}.label-green{--label-color:#3d764d}.label-cyan{--label-color:#20757b}.label-blue{--label-color:#366faa}.label-purple{--label-color:#8254a8}.dark .label-neutral{--label-color:#acb2bc}.dark .label-red{--label-color:#eb969b}.dark .label-orange{--label-color:#ebb182}.dark .label-yellow{--label-color:#d7c678}.dark .label-green{--label-color:#8bc99d}.dark .label-cyan{--label-color:#80c8ce}.dark .label-blue{--label-color:#8bb4e5}.dark .label-purple{--label-color:#bea0df}.issue-search{border:1px solid var(--border);color:var(--muted-foreground);border-radius:7px;align-items:center;gap:9px;padding:10px 12px;display:flex}.issue-search:focus-within{outline:2px solid var(--ring);outline-offset:2px}.issue-search input{width:100%;min-width:0;color:var(--foreground);background:0 0;border:0;outline:0;font-size:12px}.issue-picker-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.work-recommendation{background:var(--muted);border:1px solid var(--border);border-radius:8px;gap:12px;padding:16px;display:grid}.work-recommendation h3{font-size:14px;font-weight:600}.work-help{color:var(--muted-foreground);font-size:12px;line-height:20px}.work-help a{text-decoration:underline}.work-options summary{cursor:pointer;color:var(--muted-foreground);font-size:12px}.work-options-fields{gap:14px;margin-top:16px;display:grid}.work-dialog-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;padding:18px 24px;display:flex}.work-dialog-footer p{color:var(--muted-foreground);max-width:320px;font-size:11px;line-height:17px}.work-dialog-footer button{flex:none}@media (width<=480px){.work-dialog-header,.work-dialog-body,.work-dialog-footer{padding:18px}.work-dialog-footer{flex-direction:column;align-items:flex-start;gap:12px}.work-dialog-footer button{align-self:flex-end}}.project-header:not(.project-header-compact),.runs-page,.inbox-page,.workshop>.secondary-page{width:calc(100% - 112px);max-width:1500px;margin-inline:auto;padding-left:0;padding-right:0}.facet-option{text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:0}.facet-option:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.facet-check{border:1px solid var(--border);border-radius:3px;flex:none;place-items:center;width:14px;height:14px;display:grid}.facet-option[aria-checked=true] .facet-check{color:var(--background);background:var(--foreground);border-color:var(--foreground)}.facet-popover-heading button[aria-disabled=true]{opacity:.4}.run-column{border:1px solid var(--border);background:var(--surface);border-radius:6px;overflow:hidden}.run-column>header{color:var(--tone);background:var(--tone)}@supports (color:color-mix(in lab, red, red)){.run-column>header{background:color-mix(in srgb, var(--tone) 7%, var(--background))}}.repo-action:disabled{opacity:.5;cursor:not-allowed}@media (width<=1150px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 72px)}}@media (width<=767px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 40px)}}@media (width<=359px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 32px)}}.template-chooser,.issue-form-fields{gap:14px;display:grid}.template-choice{border:1px solid var(--border);border-radius:8px;overflow:hidden}.template-choice>button{text-align:left;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:16px;display:flex}.template-choice>button:hover,.template-choice>button:focus-visible{background:var(--muted)}.template-choice>button>span{gap:5px;display:grid}.template-choice strong,.template-contact strong,.template-form-name{font-size:13px;font-weight:600}.template-choice span>span,.template-contact>span{color:var(--muted-foreground);font-size:12px;line-height:18px}.template-choice>strong,.template-choice>p,.template-choice>a{margin:12px 16px;display:block}.template-choice>a{font-size:12px;text-decoration:underline}.template-contact{gap:5px;padding:8px 0;display:grid}.template-note{white-space:pre-wrap;color:var(--muted-foreground);border:1px solid var(--border);border-radius:6px;padding:12px;font-size:12px;line-height:19px}.field-description{margin:4px 0 8px;display:block}.issue-form-textarea{resize:vertical;min-height:100px}.issue-form-options{gap:8px;display:grid}.issue-form-options>label{align-items:flex-start;gap:8px;font-size:12px;display:flex}.issue-form-options input{margin-top:3px}.issue-publish,.issue-created{padding:0 24px 20px}.issue-publish-actions{justify-content:flex-end;gap:12px;margin-top:16px;display:flex}.issue-receipt{border:1px solid var(--border);border-radius:8px;margin:12px 0;padding:12px}.issue-publish strong,.issue-created a{overflow-wrap:anywhere}@media (width<=480px){.issue-publish-actions{flex-direction:column}}.revision-error{overflow-wrap:anywhere}.inbox-page{min-width:0;padding-bottom:32px}.inbox-page>.runs-page{width:100%;margin-inline:0;padding-inline:0}.inbox-attempts{gap:10px;padding:10px 0;display:grid}.inbox-attempts a{font-size:13px;text-decoration:underline;display:grid}.inbox-attempts small{color:var(--muted-foreground);font-size:11px}.inbox-body{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:14px}.inbox-start{gap:16px;min-width:0;max-width:680px;display:grid}.inbox-start label{gap:6px;display:grid}.active-filters{gap:8px;position:relative}.active-filters>[role=status]{flex:1;line-height:16px}.active-filters .repository-trigger{text-align:left;border-radius:6px;justify-items:start;gap:0;min-height:44px;padding:3px 6px;display:grid}.repository-trigger:hover,.repository-trigger[aria-expanded=true]{background:var(--muted)}.repository-trigger>span:first-child{align-items:center;gap:4px;display:flex}.repository-scope{color:var(--muted-foreground);font-size:12px;line-height:16px}.repository-popover{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:12px;width:min(340px,100%);max-height:min(440px,65vh);padding:12px;display:grid;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.source-controls{color:var(--muted-foreground);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.source-controls label{align-items:center;gap:6px;display:flex}.source-controls select{background:var(--background);max-width:100%;min-height:36px;color:var(--foreground);border:1px solid var(--border);border-radius:6px;padding:4px}.repository-popover button{white-space:normal;height:auto;min-height:36px}.source-boundary{color:var(--muted-foreground);overflow-wrap:anywhere;font-size:12px;line-height:18px}.task-row-link>.issue-choice-meta,.run-card-link>.issue-choice-meta{margin-top:5px}.facet-search{border:1px solid var(--border);background:var(--background);width:calc(100% - 16px);color:var(--foreground);border-radius:4px;margin:4px 8px;padding:6px}.issue-context{gap:16px;min-width:0;margin-bottom:24px;display:grid}.issue-context summary{cursor:pointer;margin-block:10px;font-size:14px;font-weight:500}.issue-context .form-error,.inbox-attempts a{overflow-wrap:anywhere}.issue-context .inbox-start{padding-block:12px}.issue-context .inbox-start details label{margin-top:12px}@media (width<=480px){.task-facets{position:relative}.facet-container{position:static}.task-facets .facet-container .facet-popover{left:0;right:auto;transform:none}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
1
|
+
@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:"Geist Variable", Geist, ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", Geist, ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sticky{position:sticky}.top-0{top:0}.z-20{z-index:20}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mb-px{margin-bottom:-1px}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.max-h-\[32rem\]{max-height:32rem}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-hidden{overflow-y:hidden}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border,.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-primary{border-color:var(--primary)}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-primary{background-color:var(--primary)}.bg-sidebar{background-color:var(--sidebar)}.bg-surface{background-color:var(--surface)}.bg-transparent{background-color:#0000}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.font-sans{font-family:Geist Variable,Geist,ui-sans-serif,system-ui,sans-serif}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,1.25rem)}.text-xs{font-size:.75rem;line-height:var(--tw-leading,1rem)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-danger{color:var(--danger)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.capitalize{text-transform:capitalize}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:p-6{padding:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-screen{height:100vh}.md\:w-\[203px\]{width:203px}.md\:flex-col{flex-direction:column}.md\:items-stretch{align-items:stretch}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:py-5{padding-block:calc(var(--spacing) * 5)}}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#fff;--foreground:#0a0a0a;--surface:#fff;--sidebar:#fff;--muted:#f4f4f5;--muted-foreground:#737373;--border:#e5e5e5;--primary:#0a0a0a;--primary-foreground:#fff;--success:#15803d;--warning:#a16207;--danger:#b91c1c;--ring:#525252}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#09090b;--foreground:#f5f5f5;--surface:#0f0f10;--sidebar:#09090b;--muted:#18181b;--muted-foreground:#a1a1aa;--border:#27272a;--primary:#f5f5f5;--primary-foreground:#09090b;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--ring:#a1a1aa}*{border-color:var(--border)}html{background:var(--background)}body{background:var(--background);min-width:320px;min-height:100vh;color:var(--foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}button,input,textarea,select{font:inherit}button,a,summary,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed}::selection{background:var(--foreground)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--foreground) 16%, transparent)}}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.app-shell{min-height:100vh}.app-sidebar{background:var(--sidebar);border-right:1px solid var(--border);flex-direction:column;align-items:stretch;width:203px;height:100vh;padding:20px 14px 14px;display:flex;position:sticky;top:0}.brand-lockup{gap:9px;height:36px;padding:0 4px}.brand-wordmark{letter-spacing:-.025em;font-size:15px;font-weight:600}.desktop-nav{gap:2px;margin-top:30px;display:grid}.mobile-nav{display:none}.nav-item{height:36px;color:var(--muted-foreground);border-radius:6px;align-items:center;gap:10px;padding:0 10px;font-size:13px;line-height:20px;text-decoration:none;transition:background-color .15s,color .15s;display:flex;position:relative}.nav-item:hover{background:var(--muted);color:var(--foreground)}.nav-item-active{background:var(--muted);color:var(--foreground);font-weight:500}.nav-count{color:var(--muted-foreground);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.sidebar-bottom{border-top:1px solid var(--border);gap:4px;margin-top:auto;padding-top:12px;display:grid}.mobile-settings{border-top:1px solid var(--border);margin-top:5px;padding-top:5px}.theme-switch{text-align:left;background:0 0;border:0;width:100%}.mobile-theme{display:none}.workshop{background:var(--background);flex:1;min-width:0}.project-header{border-bottom:1px solid var(--border);background:var(--background);padding:36px 56px 22px}.project-heading{justify-content:space-between;align-items:flex-start;gap:24px;min-width:0;max-width:1500px;margin:0 auto;display:flex}.project-heading-copy{flex:1;min-width:0}.project-eyebrow{color:var(--muted-foreground);margin-bottom:5px;font-size:12px;line-height:16px;display:block}.project-header h1{overflow-wrap:anywhere;max-width:100%;color:var(--foreground);letter-spacing:-.035em;margin:0;font-size:36px;font-weight:600;line-height:40px}.project-freshness{color:var(--muted-foreground);margin-top:7px;font-size:11px;line-height:16px;display:block}.project-freshness.is-stale{color:var(--warning)}.project-new-task{flex:none;margin-top:17px;border-radius:7px!important;font-size:13px!important}.runs-page{gap:22px;max-width:1500px;margin:0 auto;padding:27px 56px 56px;display:grid}.tasks-toolbar{justify-content:space-between;align-items:flex-end;gap:24px;min-width:0;display:flex}.tasks-tools{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:flex}.task-search{border:1px solid var(--border);background:var(--surface);width:min(320px,34vw);min-width:180px;height:36px;color:var(--muted-foreground);border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.task-search:focus-within{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.task-search:focus-within{border-color:color-mix(in srgb, var(--foreground) 45%, var(--border))}}.task-search input{width:100%;min-width:0;height:100%;color:var(--foreground);background:0 0;border:0;outline:0;padding:0;font-size:13px}.task-search input::placeholder{color:var(--muted-foreground)}.task-search input::-webkit-search-cancel-button{display:none}.clear-search{width:22px;height:22px;color:var(--muted-foreground);background:0 0;border:0;border-radius:4px;flex:none;place-items:center;display:grid}.clear-search:hover{background:var(--muted);color:var(--foreground)}.view-toggle{border:1px solid var(--border);border-radius:8px;flex:none;align-items:center;gap:2px;height:36px;padding:3px;display:flex}.view-toggle button{border-radius:5px;height:28px;padding:0 9px;font-size:12px}.view-toggle .view-active{background:var(--muted);color:var(--foreground)}.run-workspace{grid-template-columns:212px minmax(0,1fr);align-items:start;gap:48px;min-width:0;display:grid}.task-filter-rail{gap:8px;min-width:0;display:grid}.task-filter-rail>h2{color:var(--muted-foreground);letter-spacing:.04em;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:500;line-height:16px}.filter-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;overflow:hidden}.filter-card-main{width:100%;color:var(--foreground);text-align:left;background:0 0;border:0;padding:10px 11px 9px;display:block}.filter-card-main:hover,.filter-card-main[aria-pressed=true]{background:var(--muted)}.filter-card-main:disabled,.filter-substate:disabled{cursor:default;opacity:.7}.filter-card-heading{justify-content:space-between;align-items:center;gap:8px;font-size:13px;font-weight:500;line-height:18px;display:flex}.filter-card-count{color:var(--foreground);font-variant-numeric:tabular-nums;font-size:13px}.filter-card-description{color:var(--muted-foreground);margin-top:2px;font-size:11px;line-height:15px;display:block}.filter-card-children{border-top:1px solid var(--border);gap:1px;padding:4px 7px 6px;display:grid}.filter-substate{min-width:0;min-height:25px;color:var(--muted-foreground);text-align:left;background:0 0;border:0;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:3px 5px;font-size:11px;line-height:16px;display:flex}.filter-substate:hover,.filter-substate[aria-pressed=true]{background:var(--muted);color:var(--foreground)}.filter-substate span:first-child{overflow-wrap:anywhere;min-width:0}.filter-substate span:last-child{font-variant-numeric:tabular-nums;flex:none}.filter-substate.is-subset{border-left:1px solid var(--border);margin-left:4px;padding-left:8px}.task-results{min-width:0}.task-list{border-top:1px solid var(--border);min-width:0}.task-row{border-bottom:1px solid var(--border);min-width:0}.task-row-link{min-width:0;color:var(--foreground);border-radius:4px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:12px 4px 13px;text-decoration:none;display:grid}@supports (color:color-mix(in lab, red, red)){.task-row-link:hover{background:color-mix(in srgb, var(--muted) 68%, transparent)}}.task-row-content{min-width:0}.task-row-title{overflow-wrap:anywhere;margin:0;font-size:14px;font-weight:500;line-height:20px}.task-row-meta{min-width:0;color:var(--muted-foreground);flex-wrap:wrap;align-items:baseline;gap:2px 14px;margin-top:4px;font-size:11px;line-height:16px;display:flex}.task-row-meta>*{overflow-wrap:anywhere;min-width:0}.work-meta-part{align-items:baseline;display:inline-flex}.task-state{border-radius:5px;flex:none;padding:2px 8px;font-size:11px;font-weight:500;line-height:16px}.run-column{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;overflow:hidden}.run-card-link{min-width:0;color:var(--foreground);padding:12px;text-decoration:none;display:block}.run-card-link:hover{background:var(--muted)}.run-card-title{overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:19px}.run-card-meta{color:var(--muted-foreground);margin:6px 0 0;font-size:11px;line-height:16px}.run-card-status{flex-wrap:wrap;align-items:center;gap:7px;margin-top:9px;display:flex}.run-card-status>span:last-child{color:var(--muted-foreground);font-size:11px}.empty-tasks,.task-message{border:1px dashed var(--border);text-align:center;border-radius:8px;align-content:center;justify-items:center;gap:7px;min-height:230px;padding:28px 18px;display:grid}.empty-tasks h3,.task-message h3{margin:0;font-size:14px;font-weight:600;line-height:20px}.empty-tasks p,.task-message p{max-width:32rem;color:var(--muted-foreground);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.empty-tasks button,.task-message button{margin-top:6px}.task-message-error{border-style:solid;border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.task-message-error{border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}}.task-message-error h3{color:var(--danger)}.stale-banner{border:1px solid var(--warning);justify-content:space-between;align-items:center;gap:14px;padding:9px 12px;display:flex}@supports (color:color-mix(in lab, red, red)){.stale-banner{border:1px solid color-mix(in srgb, var(--warning) 32%, var(--border))}}.stale-banner{color:var(--muted-foreground);border-radius:7px;font-size:12px;line-height:18px}.stale-banner strong{color:var(--warning)}.stale-banner button{flex:none}.form-error{border:1px solid var(--danger);padding:9px 12px}@supports (color:color-mix(in lab, red, red)){.form-error{border:1px solid color-mix(in srgb, var(--danger) 35%, var(--border))}}.form-error{background:var(--danger);border-radius:7px}@supports (color:color-mix(in lab, red, red)){.form-error{background:color-mix(in srgb, var(--danger) 8%, var(--background))}}.form-error{color:var(--danger);font-size:13px}.field-label{color:var(--muted-foreground);margin-bottom:5px;font-size:12px;font-weight:500;line-height:17px;display:block}.field-control{border:1px solid var(--border);background:var(--background);width:100%;min-height:36px;color:var(--foreground);border-radius:7px;outline:none;padding:7px 10px;font-size:13px;line-height:20px;transition:border-color .15s,box-shadow .15s}.field-control::placeholder{color:var(--muted-foreground);opacity:.78}.field-control:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.field-control:focus{border-color:color-mix(in srgb, var(--foreground) 50%, var(--border))}}.field-control:focus{box-shadow:0 0 0 2px var(--foreground)}@supports (color:color-mix(in lab, red, red)){.field-control:focus{box-shadow:0 0 0 2px color-mix(in srgb, var(--foreground) 12%, transparent)}}@media (width<=1199px) and (width>=961px){.project-header,.runs-page{padding-left:38px;padding-right:38px}.run-workspace{gap:24px}}@media (width<=960px){.task-filter-rail{display:none}.run-workspace{display:block}}@media (width<=767px){.app-shell{display:block}.app-sidebar{z-index:40;border-right:0;border-bottom:1px solid var(--border);flex-direction:row;align-items:center;gap:8px;width:100%;height:56px;padding:0 12px}.brand-lockup{gap:8px}.brand-wordmark{font-size:14px;display:inline}.desktop-nav,.sidebar-bottom{display:none}.mobile-nav{margin-left:auto;display:block;position:relative}.mobile-nav summary{border:1px solid var(--border);height:36px;color:var(--foreground);cursor:pointer;border-radius:7px;align-items:center;gap:7px;padding:0 9px;font-size:12px;list-style:none;display:flex}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav nav{z-index:50;border:1px solid var(--border);background:var(--surface);border-radius:9px;gap:3px;width:min(260px,100vw - 24px);padding:8px;display:grid;position:absolute;top:42px;right:0;box-shadow:0 12px 30px #00000024}.mobile-nav nav .nav-item{width:100%}.mobile-theme{color:var(--muted-foreground);background:0 0;border:1px solid #0000;border-radius:7px;flex:none;place-items:center;display:grid}.mobile-theme:hover{border-color:var(--border);color:var(--foreground)}.project-header{padding:25px 20px 17px}.project-heading{flex-direction:column;align-items:stretch;gap:12px}.project-header h1{letter-spacing:-.03em;font-size:30px;line-height:34px}.project-new-task{align-self:flex-start;margin-top:0}.runs-page{gap:18px;padding:21px 20px 36px}.tasks-toolbar{align-items:start;gap:14px;display:grid}.tasks-tools{flex-wrap:wrap;justify-content:space-between;gap:8px;width:100%}.task-search{width:100%;min-width:0}.view-toggle{margin-left:auto}.task-row-link{flex-direction:column;align-items:flex-start;gap:7px;padding:12px 2px;display:flex}.task-row-content{width:100%}.task-row-title{font-size:14px;line-height:20px}.task-row-meta{margin-top:4px}.task-state{align-self:flex-start}.run-column{border-radius:7px}.stale-banner{flex-direction:column;align-items:flex-start}.stale-banner button{align-self:flex-start}}@media (width<=390px){.project-header{padding-left:16px;padding-right:16px}.project-heading{flex-wrap:wrap}.project-heading-copy{width:100%}.project-header h1{font-size:28px;line-height:32px}.project-new-task{margin-top:0}.runs-page{padding-left:16px;padding-right:16px}.tasks-tools{align-items:stretch}.view-toggle{margin-left:0}.filter-control{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}:root{--border:#e7e7e7;--divider:#ededed;--primary:#0077ed;--primary-foreground:#fff;--surface-subtle:#fafafa}.dark{--background:#101012;--sidebar:#101012;--surface:#101012;--surface-subtle:#141416;--border:#27272b;--divider:#242427;--primary:#0787ff;--primary-foreground:#fff}body{font-size:14px}.app-sidebar{padding:18px 12px 14px}.brand-lockup{height:30px;padding:0 8px}.brand-wordmark{color:var(--foreground);letter-spacing:-.06em;font-size:19px;font-weight:650;text-decoration:none}.brand-period{color:var(--muted-foreground)}.desktop-nav{margin-top:18px}.nav-item{gap:9px;height:32px;padding:0 8px;font-size:14px}.nav-count{font-size:12px}.project-header{border-bottom:0;padding:38px 56px 22px}.project-heading{border-bottom:1px solid var(--border);align-items:center;padding-bottom:24px}.project-context-line{flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px;display:flex}.project-freshness{align-items:center;gap:5px;margin:0;font-size:11px;display:inline-flex}.freshness-dot{background:#10a880;border-radius:50%;width:5px;height:5px}.is-stale .freshness-dot{background:var(--warning)}.project-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.repo-action{border:1px solid var(--border);height:32px;color:var(--foreground);white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:13px;text-decoration:none;display:inline-flex}.repo-action:hover{background:var(--muted)}.project-new-task{height:32px;margin:0;padding:0 11px;font-size:13px!important}.runs-page{gap:16px;padding-top:0}.tasks-toolbar{align-items:center;gap:18px}.task-facets{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.task-search{width:min(320px,28vw);min-width:150px}.tasks-tools{gap:12px}.view-toggle{border:0;gap:0;padding:0}.view-toggle button{width:28px;padding:0 5px}.active-filters{color:var(--muted-foreground);justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;display:flex}.active-filters span{overflow-wrap:anywhere;min-width:0}.active-filters button{color:var(--foreground);flex:none;align-items:center;gap:4px;display:flex}.synthetic-note{color:var(--muted-foreground);margin:0;font-size:12px}.run-workspace{gap:48px}.task-filter-rail{gap:16px}.all-tasks-filter{text-align:left;width:100%;color:var(--muted-foreground);justify-content:space-between;padding:0 2px;font-size:12px;display:flex}.all-tasks-filter[aria-pressed=true]{color:var(--foreground)}.tone-violet{--tone:#6e63d8}.tone-cyan{--tone:#058299}.tone-pink{--tone:#b6417a}.tone-green{--tone:#058263}.tone-amber{--tone:#a66b18}.tone-neutral{--tone:#71717a}.dark .tone-violet{--tone:#9180f4}.dark .tone-cyan{--tone:#39b4c9}.dark .tone-pink{--tone:#d768a4}.dark .tone-green{--tone:#32b991}.dark .tone-amber{--tone:#d3a357}.dark .tone-neutral{--tone:#a1a1aa}.filter-card{border-color:var(--tone)}@supports (color:color-mix(in lab, red, red)){.filter-card{border-color:color-mix(in srgb, var(--tone) 16%, var(--border))}}.filter-card{background:var(--background)}@supports (color:color-mix(in lab, red, red)){.filter-card{background:color-mix(in srgb, var(--background) 95%, var(--tone))}}.filter-card{box-shadow:0 5px 12px -7px var(--tone);border-radius:8px}@supports (color:color-mix(in lab, red, red)){.filter-card{box-shadow:0 5px 12px -7px color-mix(in srgb, var(--tone) 38%, transparent)}}.dark .filter-card{background:#0b0b0d}.filter-card-main{padding:12px 11px 10px}.filter-card-main[aria-pressed=true]{background:var(--tone)}@supports (color:color-mix(in lab, red, red)){.filter-card-main[aria-pressed=true]{background:color-mix(in srgb, var(--tone) 9%, transparent)}}.filter-card-heading{gap:6px;font-size:14px;font-weight:400}.filter-card-heading>svg{color:var(--tone);flex:none}.filter-card-heading>span:first-of-type{overflow-wrap:anywhere;flex:1;min-width:0}.filter-card-count{color:var(--tone);font-size:14px;font-weight:550}.filter-disclosure{width:100%;color:var(--muted-foreground);justify-content:space-between;align-items:center;padding:0 11px 8px;font-size:12px;display:flex}.filter-disclosure[aria-expanded=true]>svg{transform:rotate(180deg)}.filter-card-children{border:0;gap:5px;padding:0 9px 10px}.filter-card-children[hidden]{display:none}.filter-substate{border:1px solid var(--border);min-height:24px;padding:2px 5px;font-size:12px}.filter-substate[aria-pressed=true]{border-color:var(--tone)}.task-list{border:0}.task-row{border-bottom:1px solid var(--divider);grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 0;display:grid}.task-row:first-child{padding-top:9px}.task-row:hover{background:var(--muted)}@supports (color:color-mix(in lab, red, red)){.task-row:hover{background:color-mix(in srgb, var(--muted) 32%, transparent)}}.task-row-link{min-width:0;padding:0;display:block}.task-row-link:hover{background:0 0}.task-row-title{font-size:14px;font-weight:450;line-height:21px}.task-row-meta{flex-wrap:wrap;gap:2px 8px;margin-top:3px;font-size:12px;line-height:18px;display:flex}.task-row-meta>.work-meta-part+.work-meta-part:before{content:"·";color:var(--muted-foreground);margin-right:8px}.task-status-icon{background:var(--tone);border-radius:7px;flex:none;place-items:center;width:24px;height:24px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.task-status-icon{background:color-mix(in srgb, var(--tone) 13%, transparent)}}.task-status-icon{color:var(--tone)}.task-state{white-space:nowrap;border:1px solid var(--tone);align-items:center;gap:5px;padding:2px 6px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.task-state{border:1px solid color-mix(in srgb, var(--tone) 23%, var(--border))}}.task-state{background:var(--tone);border-radius:5px}@supports (color:color-mix(in lab, red, red)){.task-state{background:color-mix(in srgb, var(--tone) 5%, var(--background))}}.task-state{color:var(--foreground);font-size:11px;font-weight:400;line-height:16px}.state-dot{border:1px solid var(--tone);background:var(--tone);border-radius:50%;width:5px;height:5px}.row-badge-filter{text-align:left;background:0 0;border:0;padding:0}.row-badge-filter:hover .task-state{border-color:var(--tone)}.project-header-compact{padding:18px 30px 0}.project-header-compact .project-heading{padding-bottom:14px}.project-header-compact h1{letter-spacing:-.015em;font-size:15px;line-height:22px}.project-header-compact .project-context-line{gap:10px;margin-top:4px}.task-detail-layout{grid-template-columns:minmax(0,1fr) 288px;align-items:stretch;min-height:calc(100vh - 56px);display:grid}.task-detail-main{min-width:0;padding:24px 32px 56px}.detail-toolbar{color:var(--muted-foreground);justify-content:space-between;align-items:center;margin-bottom:30px;display:flex}.detail-position,.detail-toolbar-actions{align-items:center;gap:12px;font-size:12px;display:flex}.detail-position>div{gap:0;display:grid}.detail-position a,.detail-position span[aria-label]{display:flex}.detail-position span[aria-label]{opacity:.3}.detail-toolbar-actions a,.detail-toolbar-actions button{border-radius:4px;place-items:center;width:28px;height:28px;display:grid}.detail-toolbar-actions a:hover,.detail-toolbar-actions button:hover{background:var(--muted);color:var(--foreground)}.copy-status{font-size:11px}.task-detail-heading{flex-wrap:wrap;align-items:flex-start;gap:12px;margin-bottom:26px;display:flex}.task-detail-heading h2{overflow-wrap:anywhere;flex:1;min-width:0;margin:0;font-size:18px;font-weight:600;line-height:26px}.task-detail-heading>p{flex-basis:100%}.task-detail-main [role=tablist]{gap:22px;margin-bottom:24px}.task-detail-main [role=tab]{padding-top:8px;padding-bottom:10px;font-size:13px}.task-result{border:0;border-left:1px solid var(--border);box-shadow:none;background:0 0;border-radius:0;margin-left:11px;padding:0 0 0 20px}.task-detail-main [role=tabpanel]{overflow-wrap:anywhere;min-width:0}.task-detail-main [role=tabpanel] .break-words{overflow-wrap:anywhere}.task-result>h2{font-size:14px}.task-metadata{border-left:1px solid var(--border);background:var(--surface-subtle);min-width:0;padding:24px}.task-metadata h3{align-items:center;gap:8px;margin:0 0 24px;font-size:14px;font-weight:600;display:flex}.task-metadata dl{gap:22px;display:grid}.task-metadata dt{color:var(--muted-foreground);align-items:center;gap:5px;margin-bottom:7px;font-size:12px;display:flex}.task-metadata dd{overflow-wrap:anywhere;margin:0;font-size:13px}.source-revision-sha{overflow-wrap:anywhere;word-break:break-all;font-size:11px;line-height:17px;display:block}.task-metadata .metadata-hint{color:var(--muted-foreground);margin-top:5px;font-size:11px;line-height:17px}.metadata-link{border:1px solid var(--border);border-radius:5px;align-items:center;gap:6px;padding:3px 6px;text-decoration:none;display:inline-flex}.metadata-link:hover{background:var(--muted)}.task-metadata .task-state{white-space:normal;max-width:100%;color:var(--tone);background:var(--tone);border-radius:20px;padding:5px 9px}@supports (color:color-mix(in lab, red, red)){.task-metadata .task-state{background:color-mix(in srgb, var(--tone) 15%, transparent)}}.workshop>.secondary-page{max-width:1500px;padding:0 56px 56px}@media (width<=1200px){.project-header,.runs-page,.workshop>.secondary-page{padding-left:36px;padding-right:36px}.project-actions{max-width:250px}.tasks-toolbar{flex-wrap:wrap}.tasks-tools{flex:1}.task-search{width:min(320px,100%)}.task-detail-layout{grid-template-columns:minmax(0,1fr) 248px}.task-detail-main{padding-left:26px;padding-right:26px}.task-metadata{padding:24px 18px}}@media (width<=900px){.run-workspace{grid-template-columns:190px minmax(0,1fr);gap:24px}.task-row{grid-template-columns:24px minmax(0,1fr);gap:9px}.row-badge-filter{grid-column:2}.task-detail-layout{grid-template-columns:minmax(0,1fr)}.task-metadata{border-left:0;border-top:1px solid var(--border)}.task-metadata dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}@media (width<=767px){.app-sidebar{width:100%;height:auto;padding:10px 16px}.brand-lockup{padding:0}.project-header{padding:24px 20px 18px}.project-heading{flex-direction:column;align-items:flex-start;gap:18px;padding-bottom:20px}.project-header h1{font-size:28px;line-height:34px}.project-actions{justify-content:flex-start;gap:6px;max-width:100%}.project-new-task{margin:0}.runs-page,.workshop>.secondary-page{padding:0 20px 32px}.tasks-toolbar{flex-direction:column;align-items:stretch;gap:12px}.task-facets{gap:6px}.tasks-tools{width:100%}.task-search{flex:1;width:auto;min-width:0}.run-workspace{display:block}.task-row-title{font-size:14px}.task-row-meta{font-size:12px}.project-header-compact{padding:14px 20px 0}.project-header-compact h1{font-size:14px;line-height:20px}.project-header-compact .project-heading{flex-direction:row;align-items:center;gap:10px;padding-bottom:12px}.project-header-compact .project-actions .repo-action{gap:0;padding:0 7px;font-size:0}.project-header-compact .project-actions .repo-action>svg:last-child{display:none}.task-detail-main{padding:16px 20px 32px}.detail-toolbar{margin-bottom:24px}.task-detail-heading{gap:8px}.task-detail-heading h2{font-size:17px;line-height:24px}.task-detail-main [role=tablist]{gap:18px}.task-metadata{padding:24px 20px}}.brand-wordmark{flex-direction:column;gap:3px;font-size:23px;line-height:24px;display:flex}.brand-descriptor{letter-spacing:.14em;text-transform:uppercase;color:var(--muted-foreground);font-size:8px;font-weight:550;line-height:12px}.project-path{color:var(--muted-foreground);font-size:11px;position:relative}.project-path>button{cursor:help;align-items:center;gap:4px;display:flex}.project-path [role=tooltip]{z-index:60;border:1px solid var(--border);background:var(--surface);width:240px;max-width:calc(100vw - 48px);color:var(--foreground);overflow-wrap:anywhere;border-radius:7px;padding:12px;line-height:18px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 8px 24px #0002}.project-path [role=tooltip][hidden]{display:none}.project-path code{font-size:11px}.repo-action.new-issue-action{border-color:var(--primary);background:var(--primary);color:var(--primary-foreground)}.facet-container{min-width:0;position:relative}.task-facet{border:1px solid var(--border);background:0 0;border-radius:7px;align-items:center;gap:6px;height:36px;padding:0 10px;font-size:13px;display:flex}.task-facet>svg{color:var(--muted-foreground);flex:none}.task-facet.is-selected{border-color:var(--muted-foreground);background:var(--muted)}.task-facet:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.facet-count{background:var(--border);text-align:center;border-radius:4px;min-width:17px;padding:0 3px;font-size:10px}.facet-popover{z-index:50;border:1px solid var(--border);background:var(--surface);border-radius:9px;width:256px;max-width:calc(100vw - 40px);padding:6px;font-size:13px;position:absolute;top:calc(100% + 7px);left:0;box-shadow:0 10px 26px #0002}.facet-popover-heading{justify-content:space-between;align-items:center;padding:6px 8px 10px;font-size:12px;font-weight:550;display:flex}.facet-popover-heading button{color:var(--muted-foreground);font-weight:400}.facet-popover-heading button:disabled{opacity:.4}.facet-options{overscroll-behavior:contain;max-height:240px;overflow-y:auto}.facet-option{cursor:pointer;border-radius:4px;align-items:center;gap:9px;padding:8px;display:flex}.facet-option:hover,.facet-option:focus-within{background:var(--muted)}.facet-option span{overflow-wrap:anywhere}.facet-select-all{border-bottom:1px solid var(--border);border-radius:0;margin-bottom:4px}.facet-empty{color:var(--muted-foreground);padding:14px 8px}.active-filters{align-items:center;min-height:28px}.task-list-actions{align-items:center;gap:18px;display:flex}.task-list-actions button:disabled{opacity:.35;cursor:default}.run-workspace.is-board{display:block}.is-board .task-filter-rail{display:none}.kanban-scroll{overscroll-behavior-x:contain;scrollbar-width:auto;scrollbar-color:var(--muted-foreground) var(--muted);max-width:100%;padding-bottom:14px;overflow-x:scroll}.kanban-scroll::-webkit-scrollbar{height:11px}.kanban-scroll::-webkit-scrollbar-track{background:var(--muted);border-radius:8px}.kanban-scroll::-webkit-scrollbar-thumb{background:var(--muted-foreground);border:3px solid var(--muted);border-radius:8px}.kanban-board{grid-auto-columns:290px;grid-auto-flow:column;align-items:start;gap:16px;width:max-content;min-width:100%;display:grid}.kanban-board .run-column{min-height:360px}@media (width<=767px){.brand-wordmark{font-size:20px;line-height:22px}.brand-descriptor{font-size:7px}.task-facet{gap:4px;padding:0 7px;font-size:12px}.task-facet>svg:first-child{display:none}.facet-container:last-child .facet-popover{left:auto;right:0}.facet-container:nth-child(2) .facet-popover{left:50%;transform:translate(-50%)}.kanban-board{grid-auto-columns:min(290px,100vw - 60px)}.project-path [role=tooltip]{left:auto;right:0}}.work-dialog{color:var(--foreground);background:var(--surface);border:1px solid var(--border);border-radius:12px;width:min(660px,100vw - 32px);max-height:calc(100dvh - 40px);margin:auto;padding:0;overflow-y:auto;box-shadow:0 24px 80px #0005}.work-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0008}.work-dialog-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding:24px;display:flex}.work-dialog-header h2{font-size:20px;font-weight:600}.work-dialog-header p{color:var(--muted-foreground);overflow-wrap:anywhere;margin-top:6px;font-size:12px}.work-dialog-body{gap:20px;min-width:0;padding:24px;display:grid}.work-source{border-bottom:1px solid var(--border);gap:24px;display:flex}.work-source button{color:var(--muted-foreground);border-bottom:2px solid #0000;padding-bottom:10px;font-size:13px}.work-source button[aria-pressed=true]{color:var(--foreground);border-bottom-color:var(--foreground)}.work-brief{resize:vertical;min-height:180px;max-height:45vh}.issue-picker{gap:12px;min-width:0;display:grid}.issue-list{border:1px solid var(--border);border-radius:8px;max-height:310px;overflow-y:auto}.issue-list>p{padding:16px}.issue-choice{text-align:left;border-bottom:1px solid var(--border);align-items:center;gap:12px;width:100%;padding:14px;display:flex}.issue-choice:last-child{border-bottom:0}.issue-choice:hover,.issue-choice:focus-visible{background:var(--muted)}.issue-choice:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.issue-choice:disabled{opacity:.55}.issue-choice>svg,.issue-number{flex:none}.issue-number{color:var(--muted-foreground);font-size:12px}.issue-choice-copy{overflow-wrap:anywhere;flex:1;min-width:0}.issue-choice-copy strong{font-size:13px;font-weight:500;display:block}.issue-choice-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.issue-choice-meta .issue-number{margin-right:3px}.issue-open-icon{color:#3c925d;align-self:flex-start;margin-top:2px}.issue-label{border:1px solid var(--label-color);border-radius:20px;padding:1px 7px;font-size:10px;font-weight:500;line-height:17px}@supports (color:color-mix(in lab, red, red)){.issue-label{border:1px solid color-mix(in srgb, var(--label-color) 28%, transparent)}}.issue-label{color:var(--label-color);background:var(--label-color)}@supports (color:color-mix(in lab, red, red)){.issue-label{background:color-mix(in srgb, var(--label-color) 8%, var(--surface))}}.label-neutral{--label-color:#646b77}.label-red{--label-color:#af4048}.label-orange{--label-color:#9f5a2a}.label-yellow{--label-color:#846b12}.label-green{--label-color:#3d764d}.label-cyan{--label-color:#20757b}.label-blue{--label-color:#366faa}.label-purple{--label-color:#8254a8}.dark .label-neutral{--label-color:#acb2bc}.dark .label-red{--label-color:#eb969b}.dark .label-orange{--label-color:#ebb182}.dark .label-yellow{--label-color:#d7c678}.dark .label-green{--label-color:#8bc99d}.dark .label-cyan{--label-color:#80c8ce}.dark .label-blue{--label-color:#8bb4e5}.dark .label-purple{--label-color:#bea0df}.issue-search{border:1px solid var(--border);color:var(--muted-foreground);border-radius:7px;align-items:center;gap:9px;padding:10px 12px;display:flex}.issue-search:focus-within{outline:2px solid var(--ring);outline-offset:2px}.issue-search input{width:100%;min-width:0;color:var(--foreground);background:0 0;border:0;outline:0;font-size:12px}.issue-picker-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.work-recommendation{background:var(--muted);border:1px solid var(--border);border-radius:8px;gap:12px;padding:16px;display:grid}.work-recommendation h3{font-size:14px;font-weight:600}.work-help{color:var(--muted-foreground);font-size:12px;line-height:20px}.work-help a{text-decoration:underline}.work-options summary{cursor:pointer;color:var(--muted-foreground);font-size:12px}.work-options-fields{gap:14px;margin-top:16px;display:grid}.work-dialog-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:24px;padding:18px 24px;display:flex}.work-dialog-footer p{color:var(--muted-foreground);max-width:320px;font-size:11px;line-height:17px}.work-dialog-footer button{flex:none}@media (width<=480px){.work-dialog-header,.work-dialog-body,.work-dialog-footer{padding:18px}.work-dialog-footer{flex-direction:column;align-items:flex-start;gap:12px}.work-dialog-footer button{align-self:flex-end}}.project-header:not(.project-header-compact),.runs-page,.inbox-page,.workshop>.secondary-page{width:calc(100% - 112px);max-width:1500px;margin-inline:auto;padding-left:0;padding-right:0}.facet-option{text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:0}.facet-option:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.facet-check{border:1px solid var(--border);border-radius:3px;flex:none;place-items:center;width:14px;height:14px;display:grid}.facet-option[aria-checked=true] .facet-check{color:var(--background);background:var(--foreground);border-color:var(--foreground)}.facet-popover-heading button[aria-disabled=true]{opacity:.4}.run-column{border:1px solid var(--border);background:var(--surface);border-radius:6px;overflow:hidden}.run-column>header{color:var(--tone);background:var(--tone)}@supports (color:color-mix(in lab, red, red)){.run-column>header{background:color-mix(in srgb, var(--tone) 7%, var(--background))}}.repo-action:disabled{opacity:.5;cursor:not-allowed}@media (width<=1150px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 72px)}}@media (width<=767px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 40px)}}@media (width<=359px){.project-header:not(.project-header-compact),.runs-page,.inbox-page{width:calc(100% - 32px)}}.template-chooser,.issue-form-fields{gap:14px;display:grid}.template-choice{border:1px solid var(--border);border-radius:8px;overflow:hidden}.template-choice>button{text-align:left;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:16px;display:flex}.template-choice>button:hover,.template-choice>button:focus-visible{background:var(--muted)}.template-choice>button>span{gap:5px;display:grid}.template-choice strong,.template-contact strong,.template-form-name{font-size:13px;font-weight:600}.template-choice span>span,.template-contact>span{color:var(--muted-foreground);font-size:12px;line-height:18px}.template-choice>strong,.template-choice>p,.template-choice>a{margin:12px 16px;display:block}.template-choice>a{font-size:12px;text-decoration:underline}.template-contact{gap:5px;padding:8px 0;display:grid}.template-note{white-space:pre-wrap;color:var(--muted-foreground);border:1px solid var(--border);border-radius:6px;padding:12px;font-size:12px;line-height:19px}.field-description{margin:4px 0 8px;display:block}.issue-form-textarea{resize:vertical;min-height:100px}.issue-form-options{gap:8px;display:grid}.issue-form-options>label{align-items:flex-start;gap:8px;font-size:12px;display:flex}.issue-form-options input{margin-top:3px}.issue-publish,.issue-created{padding:0 24px 20px}.issue-publish-actions{justify-content:flex-end;gap:12px;margin-top:16px;display:flex}.issue-receipt{border:1px solid var(--border);border-radius:8px;margin:12px 0;padding:12px}.issue-publish strong,.issue-created a{overflow-wrap:anywhere}@media (width<=480px){.issue-publish-actions{flex-direction:column}}.revision-error{overflow-wrap:anywhere}.inbox-page{min-width:0;padding-bottom:32px}.inbox-page>.runs-page{width:100%;margin-inline:0;padding-inline:0}.inbox-attempts{gap:10px;padding:10px 0;display:grid}.inbox-attempts a{font-size:13px;text-decoration:underline;display:grid}.inbox-attempts small{color:var(--muted-foreground);font-size:11px}.inbox-body{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:14px}.inbox-start{gap:16px;min-width:0;max-width:680px;display:grid}.inbox-start label{gap:6px;display:grid}.active-filters{gap:8px;position:relative}.active-filters>[role=status]{flex:1;line-height:16px}.active-filters .repository-trigger{text-align:left;border-radius:6px;justify-items:start;gap:0;min-height:44px;padding:3px 6px;display:grid}.repository-trigger:hover,.repository-trigger[aria-expanded=true]{background:var(--muted)}.repository-trigger>span:first-child{align-items:center;gap:4px;display:flex}.repository-scope{color:var(--muted-foreground);font-size:12px;line-height:16px}.repository-popover{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:12px;width:min(340px,100%);max-height:min(440px,65vh);padding:12px;display:grid;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.source-controls{color:var(--muted-foreground);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.source-controls label{align-items:center;gap:6px;display:flex}.source-controls select{background:var(--background);max-width:100%;min-height:36px;color:var(--foreground);border:1px solid var(--border);border-radius:6px;padding:4px}.repository-popover button{white-space:normal;height:auto;min-height:36px}.source-boundary{color:var(--muted-foreground);overflow-wrap:anywhere;font-size:12px;line-height:18px}.task-row-link>.issue-choice-meta,.run-card-link>.issue-choice-meta{margin-top:5px}.facet-search{border:1px solid var(--border);background:var(--background);width:calc(100% - 16px);color:var(--foreground);border-radius:4px;margin:4px 8px;padding:6px}.issue-context{gap:16px;min-width:0;margin-bottom:24px;display:grid}.issue-context summary{cursor:pointer;margin-block:10px;font-size:14px;font-weight:500}.issue-context .form-error,.inbox-attempts a{overflow-wrap:anywhere}.issue-context .inbox-start{padding-block:12px}.issue-context .inbox-start details label{margin-top:12px}@media (width<=480px){.task-facets{position:relative}.facet-container{position:static}.task-facets .facet-container .facet-popover{left:0;right:auto;transform:none}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|