ci / check (push) Failing after 3s
- Settings… lists the folders the agent may work in, with the system's folder dialog, remove, max mode and terminal, all through 'lembas remote … --json' (CLI 1.2.0). Turning the agent on with no folder opens it; the title bar says 'agent: no folders' instead of green. - The content webview's User-Agent carries LLeMbasDesktop/<v> (host=…), so the server can show this computer's device as Local. - The title bar menu pops up at the button (popup_menu_at): Wayland gave the pointer-less popup the middle of the window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
130 lines
4.6 KiB
CSS
130 lines
4.6 KiB
CSS
/* The first-run page. Tokens in tokens.css. */
|
|
* { box-sizing: border-box; }
|
|
|
|
html, body { margin: 0; min-height: 100%; }
|
|
|
|
body {
|
|
display: grid;
|
|
place-items: center;
|
|
min-height: 100vh;
|
|
padding: var(--sp-4);
|
|
background: var(--bg);
|
|
color: var(--ink);
|
|
font: var(--text-base) / 1.6 var(--font-body);
|
|
}
|
|
|
|
.card {
|
|
width: min(100%, var(--card-max));
|
|
display: grid;
|
|
gap: var(--sp-6);
|
|
padding: var(--sp-8);
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
box-shadow: var(--shadow-card);
|
|
}
|
|
|
|
.brand { display: grid; grid-template-columns: 40px 1fr; gap: var(--sp-3); align-items: center; }
|
|
h1 { margin: 0; font: 600 var(--text-xl) / 1.2 var(--font-ui); }
|
|
h1 b { color: var(--leaf); font-weight: 700; }
|
|
h2 { margin: 0 0 var(--sp-3); font: 600 var(--text-sm) / 1.2 var(--font-ui); letter-spacing: 0.08em; color: var(--accent); }
|
|
p { margin: 0; }
|
|
.muted { color: var(--ink-muted); font-size: var(--text-sm); }
|
|
|
|
/* A field is three stacked parts on fixed rows: label, control row, hint. */
|
|
.field { display: grid; grid-template-rows: auto var(--control-h) auto; gap: var(--sp-2); }
|
|
label, .label { font: var(--text-sm) / 1.4 var(--font-ui); color: var(--ink-muted); }
|
|
.hint { font-size: var(--text-sm); color: var(--ink-muted); min-height: 1.4em; }
|
|
.hint.is-error, .status.is-error { color: var(--warning); }
|
|
|
|
.row { display: grid; grid-template-columns: 1fr auto; gap: var(--sp-2); }
|
|
.row--buttons { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); margin-top: var(--sp-3); }
|
|
|
|
input {
|
|
height: var(--control-h);
|
|
min-width: 0;
|
|
padding: 0 var(--sp-3);
|
|
font: var(--text-base) var(--font-ui);
|
|
color: var(--ink);
|
|
background: var(--bg);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius);
|
|
}
|
|
input:focus-visible, .btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
|
|
.btn {
|
|
height: var(--control-h);
|
|
padding: 0 var(--sp-4);
|
|
font: 600 var(--text-sm) var(--font-ui);
|
|
color: var(--ink);
|
|
background: var(--surface);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius);
|
|
box-shadow: var(--press) var(--press) 0 rgba(0, 0, 0, 0.45);
|
|
cursor: pointer;
|
|
}
|
|
.btn:hover { background: var(--surface-hover); }
|
|
.btn:active { transform: translate(var(--press), var(--press)); box-shadow: none; }
|
|
.btn:disabled { opacity: 0.55; cursor: default; }
|
|
.btn--primary { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); }
|
|
.btn--primary:hover { background: var(--accent-hover); }
|
|
|
|
.status { font: var(--text-sm) / 1.4 var(--font-ui); margin-top: var(--sp-3); }
|
|
.status.is-ok { color: var(--leaf); }
|
|
|
|
@media (max-width: 30rem) {
|
|
.card { padding: var(--sp-4); gap: var(--sp-4); }
|
|
.row { grid-template-columns: 1fr; grid-template-rows: var(--control-h) var(--control-h); }
|
|
.field { grid-template-rows: auto auto auto; }
|
|
}
|
|
|
|
/* The folder list: every row the same two tracks, the path cut from the left (its end is the
|
|
part that tells folders apart), the full path in the title. */
|
|
.folders { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
|
|
.folders li {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: var(--sp-2);
|
|
align-items: center;
|
|
min-height: var(--control-h);
|
|
padding: 0 0 0 var(--sp-3);
|
|
background: var(--bg);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
}
|
|
.folders .path {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
direction: rtl;
|
|
text-align: left;
|
|
font: var(--text-sm) var(--font-ui);
|
|
}
|
|
.folders .path bdi { direction: ltr; unicode-bidi: isolate; }
|
|
.folders .btn { height: calc(var(--control-h) - 2px); box-shadow: none; border-width: 0 0 0 1px; }
|
|
.folders .empty { padding: var(--sp-3); color: var(--warning); font-size: var(--text-sm); }
|
|
|
|
.settings-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
|
|
grid-auto-rows: auto var(--control-h) auto;
|
|
column-gap: var(--sp-4);
|
|
row-gap: var(--sp-2);
|
|
margin-top: var(--sp-4);
|
|
}
|
|
/* Each field spans three shared rows (label, control, hint), so the controls of side-by-side
|
|
fields sit on one line whatever their labels and hints do. */
|
|
.settings-grid .field { grid-row: span 3; grid-template-rows: subgrid; }
|
|
select {
|
|
height: var(--control-h);
|
|
min-width: 0;
|
|
padding: 0 var(--sp-2);
|
|
font: var(--text-sm) var(--font-ui);
|
|
color: var(--ink);
|
|
background: var(--bg);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius);
|
|
}
|
|
.check { display: flex; align-items: center; gap: var(--sp-2); color: var(--ink); }
|
|
.check input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--accent); }
|