ouroboros/web/onboarding.css
Ouroboros 7dfbb0c81b feat: add draft per-subagent enable checkbox
Preserve disabled configuration, reject new selections and reviewer references, and retain captured task snapshots. Save through the existing settings transaction; omit enabled=true for compatible canonical bytes.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-09-21 01:59:32 +03:00

1321 lines
27 KiB
CSS

:root {
--bg: rgb(var(--wizard-rgb));
--panel: rgba(var(--wizard-panel-rgb), 0.92);
--panel-2: rgba(var(--neutral-rgb), 0.04);
--panel-3: rgba(var(--neutral-rgb), 0.03);
--border: rgba(var(--neutral-rgb), 0.10);
--border-strong: rgba(201, 53, 69, 0.35);
--text: var(--text-primary);
--muted: var(--text-meta);
--ghost: rgba(var(--neutral-rgb), 0.28);
--shadow: 0 28px 64px rgba(0, 0, 0, 0.45);
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
min-height: 100%;
}
/* The appearance control sits above the wizard, so a shell with a hard
`100vh - padding` floor overflowed every onboarding page by exactly the
control's height. A body column lets the shell take the space that is really
left: `flex: 1 0 auto` fills a short page and still grows past the viewport
when a step is genuinely taller — the only scroll onboarding should have. */
body {
min-height: 100vh;
padding: 16px;
display: flex;
flex-direction: column;
gap: 10px;
background:
radial-gradient(circle at top left, rgba(201, 53, 69, 0.12), transparent 35%),
radial-gradient(circle at top right, rgba(232, 121, 249, 0.12), transparent 30%),
var(--bg);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.onboarding-appearance {
display: flex;
flex: 0 0 auto;
align-items: center;
flex-wrap: wrap;
gap: 10px;
}
#root {
display: flex;
flex: 1 0 auto;
flex-direction: column;
}
button,
input,
select,
textarea {
font: inherit;
}
input::placeholder,
textarea::placeholder {
color: var(--ghost);
}
.wizard-shell {
max-width: 1080px;
width: 100%;
flex: 1 0 auto;
margin: 0 auto;
display: flex;
flex-direction: column;
gap: 14px;
padding: 14px;
border: 1px solid var(--border);
border-radius: 12px;
background: linear-gradient(180deg, rgba(var(--neutral-rgb), 0.035), rgba(var(--neutral-rgb), 0.02));
backdrop-filter: blur(18px);
box-shadow: var(--shadow);
}
.wizard-header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 20px;
align-items: start;
}
/* Was a one-off 32px (plus a 28px compact variant); joins the scale. */
.wizard-title {
margin: 0 0 4px;
font-size: var(--type-page);
line-height: var(--line-title);
font-weight: 700;
letter-spacing: 0;
}
.wizard-subtitle {
margin: 0;
max-width: 760px;
color: var(--muted);
font-size: var(--type-body);
line-height: var(--line-body);
}
.wizard-badge {
padding: 8px 12px;
border-radius: 999px;
border: 1px solid var(--border);
background: var(--panel-2);
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-meta);
white-space: nowrap;
}
/* One row of equal columns for HOWEVER many steps the setup contract declares.
A hardcoded column count wrapped the moment a step was added (the Agents step
pushed "Review before launch" onto a second row of its own). */
.wizard-steps {
display: grid;
grid-auto-flow: column;
grid-auto-columns: minmax(0, 1fr);
gap: 10px;
}
.wizard-step {
min-width: 0;
padding: 10px 12px;
border-radius: 12px;
border: 1px solid var(--border);
background: var(--panel-2);
transition: border-color 120ms ease, background 120ms ease;
display: flex;
flex-direction: column;
gap: 6px;
}
.wizard-step.active {
border-color: var(--border-strong);
background: var(--accent-08);
box-shadow: inset 0 0 0 1px var(--accent-12);
}
.wizard-step.done {
border-color: rgba(34, 197, 94, 0.22);
}
.wizard-step-index {
display: inline-flex;
align-items: center;
justify-content: center;
margin-bottom: 0;
padding: 4px 9px;
border-radius: 999px;
background: var(--status-neutral-bg);
color: var(--status-neutral-fg);
font-size: var(--type-meta);
line-height: 1;
font-weight: 700;
letter-spacing: 0.04em;
}
.wizard-step.active .wizard-step-index {
background: var(--accent-18);
color: var(--text);
}
.wizard-step-title {
margin: 0;
font-size: var(--type-meta);
font-weight: 600;
line-height: var(--line-meta);
}
.wizard-step-copy {
margin: 0;
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
@media (max-width: 1100px) {
.wizard-steps {
display: flex;
gap: 10px;
overflow-x: auto;
padding: 0 2px 4px;
scroll-snap-type: x proximity;
}
.wizard-step {
flex: 0 0 min(180px, calc(45vw - 18px));
scroll-snap-align: start;
}
}
.wizard-content {
flex: 1 1 auto;
min-height: 0;
display: flex;
flex-direction: column;
gap: 18px;
padding: 14px;
border-radius: 16px;
border: 1px solid var(--border);
background: var(--panel);
}
.step-header {
display: flex;
justify-content: space-between;
gap: 20px;
align-items: flex-start;
flex-wrap: wrap;
}
.step-title {
margin: 0 0 6px;
font-size: var(--type-page);
line-height: var(--line-title);
font-weight: 700;
}
.step-copy {
margin: 0;
color: var(--muted);
max-width: 780px;
font-size: var(--type-body);
line-height: var(--line-body);
}
.panel-card,
.summary-card,
.wizard-choice,
.wizard-collapse,
.wizard-runtime-strip {
border: 1px solid var(--border);
border-radius: 12px;
background: var(--panel-3);
}
.panel-card,
.summary-card,
.wizard-choice,
.wizard-runtime-strip {
padding: 14px;
}
.panel-card h3,
.summary-card h3,
.wizard-choice h3 {
margin: 0 0 8px;
font-size: var(--type-section);
line-height: var(--line-title);
font-weight: 600;
color: var(--text);
}
.panel-card p,
.wizard-choice p,
.wizard-inline-note,
.field-note {
margin: 0;
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.wizard-inline-note code,
.field-note code {
padding: 1px 4px;
border-radius: 6px;
background: rgba(var(--neutral-rgb), 0.08);
}
.grid {
display: grid;
gap: 12px;
}
.grid.two {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid.three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.field-grid,
.wizard-choice-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.field {
display: flex;
flex-direction: column;
gap: 6px;
min-width: 0;
}
.field-full {
grid-column: 1 / -1;
}
.field-label-row {
display: flex;
justify-content: space-between;
align-items: baseline;
gap: 12px;
}
/* Uppercase micro-label retired (docs/DESIGN.md "Hierarchy rule"). */
.field label {
color: var(--text-meta);
font-size: var(--type-meta);
line-height: var(--line-meta);
font-weight: 600;
text-transform: none;
letter-spacing: normal;
}
.field-clear {
padding: 0;
border: none;
background: transparent;
color: var(--text-meta);
cursor: pointer;
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.field-clear:hover {
color: var(--text);
}
.compatible-model-actions,
.compatible-model-list {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.compatible-model-actions {
align-items: center;
margin-top: 8px;
}
.compatible-model-list {
margin-top: 12px;
}
.compatible-load-status {
margin: 0;
}
.selection-row,
.footer-actions {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.selection-pill {
border: 1px solid var(--border);
background: rgba(var(--neutral-rgb), 0.03);
color: var(--text);
padding: 10px 14px;
border-radius: 999px;
cursor: pointer;
transition: border-color 120ms ease, background 120ms ease, transform 120ms ease;
}
.selection-pill:hover {
border-color: rgba(var(--neutral-rgb), 0.24);
transform: translateY(-1px);
}
.selection-pill.active {
background: var(--accent-dim);
border-color: var(--border-strong);
}
.wizard-collapse {
overflow: hidden;
}
.wizard-collapse summary {
list-style: none;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
padding: 12px 14px;
}
.wizard-collapse summary::-webkit-details-marker {
display: none;
}
.wizard-collapse-body {
padding: 0 14px 14px;
}
.selection-badge {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 5px 10px;
border-radius: 999px;
background: var(--status-neutral-bg);
color: var(--status-neutral-fg);
font-size: var(--type-meta);
line-height: var(--line-meta);
font-weight: 600;
}
.wizard-choice-grid.three {
/* Runtime-mode picker for contracts with three choices. */
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.wizard-choice-grid.four {
/* Cyber Pro adds a fourth access level to the same independent picker. */
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.wizard-choice {
cursor: pointer;
transition: border-color 120ms ease, background 120ms ease, transform 120ms ease;
}
.wizard-choice:hover {
transform: translateY(-1px);
}
.wizard-choice.active {
border-color: var(--border-strong);
background: var(--accent-08);
}
/* Choice-card chip. Only advisory/blocking declared a pair, so the three
runtime-mode chips rendered as bare white text; neutral is now the default. */
.wizard-choice .tone {
display: inline-flex;
margin-bottom: 10px;
padding: 4px 8px;
border-radius: 999px;
background: var(--status-neutral-bg);
color: var(--status-neutral-fg);
font-size: var(--type-meta);
line-height: var(--line-meta);
font-weight: 700;
letter-spacing: 0.02em;
}
.wizard-choice.advisory .tone {
background: var(--status-warn-bg);
color: var(--status-warn-fg);
}
.wizard-choice.blocking .tone {
background: var(--status-ok-bg);
color: var(--status-ok-fg);
}
.wizard-runtime-strip {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
}
.wizard-runtime-status {
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.wizard-runtime-status[data-tone="muted"] {
color: var(--status-neutral-fg);
}
.wizard-runtime-status[data-tone="ok"] {
color: var(--status-ok-fg);
}
.wizard-runtime-status[data-tone="error"] {
color: var(--status-error-fg);
}
/* Status = dot + text, matching the settings shell. */
.wizard-runtime-status[data-tone]::before {
content: "";
display: inline-block;
width: 6px;
height: 6px;
margin-right: 7px;
border-radius: 999px;
background: currentColor;
vertical-align: middle;
position: relative;
top: -1px;
}
.wizard-test-result {
padding: 10px 12px;
border-radius: 12px;
border: 1px solid rgba(var(--neutral-rgb), 0.08);
background: rgba(var(--neutral-rgb), 0.03);
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-body);
white-space: pre-wrap;
}
.wizard-test-result[hidden] { display: none; }
.wizard-test-result[data-tone="ok"] {
border-color: rgba(34, 197, 94, 0.22);
color: var(--status-ok-fg);
}
.wizard-test-result[data-tone="warn"] {
border-color: rgba(245, 158, 11, 0.18);
color: var(--status-warn-fg);
}
.wizard-test-result[data-tone="error"] {
border-color: rgba(239, 68, 68, 0.18);
color: var(--status-error-fg);
}
.summary-card {
display: flex;
flex-direction: column;
gap: 10px;
}
/* Key at meta ink, value at primary (docs/DESIGN.md "Hierarchy rule"). */
.summary-kv {
display: grid;
grid-template-columns: 200px minmax(0, 1fr);
gap: 10px;
font-size: var(--type-meta);
line-height: var(--line-meta);
color: var(--text);
align-items: start;
}
.summary-kv strong {
color: var(--text-meta);
font-weight: 600;
}
.wizard-footer {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.footer-copy {
max-width: 640px;
color: var(--muted);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.wizard-error {
min-height: 22px;
color: var(--status-error-fg);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
/* ---------------------------------------------------------------------------
Agents step (phase 3C). Semantics in docs/DESIGN.md §7 (onboarding density)
and §6 (row anatomy): one primary thing per row, meta ink for everything
else, and the artwork — not the ladder — is what a short viewport drops.
--------------------------------------------------------------------------- */
/* The figure column is sized to the diagram's own coordinate space, so its
labels render at the meta size instead of being scaled to illegibility. */
.agent-ladder-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 360px);
gap: 18px;
align-items: start;
}
.agent-ladder {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.agent-rung {
display: grid;
grid-template-columns: 62px minmax(0, 1fr);
gap: 10px;
align-items: start;
}
.agent-rung-tone {
justify-self: start;
padding: 2px 9px;
border-radius: 999px;
border: 1px solid var(--border);
background: var(--status-neutral-bg);
color: var(--status-neutral-fg);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
/* The last rung is the destination the owner is being shown, so it is the one
place on this step that carries the connected colour. */
.agent-rung:last-child .agent-rung-tone {
border-color: rgba(34, 197, 94, 0.32);
background: var(--status-ok-bg);
color: var(--status-ok-fg);
}
.agent-rung-text,
.agent-rung-title,
.agent-rung-body,
.agent-family-identity,
.agent-family-name,
.agent-family-status {
display: block;
}
.agent-rung-title {
font-size: var(--type-body);
line-height: var(--line-title);
font-weight: 600;
color: var(--text);
}
.agent-rung-body {
margin-top: 2px;
font-size: var(--type-meta);
line-height: var(--line-body);
color: var(--text-meta);
}
.agent-ladder-note {
margin-top: 10px;
font-size: var(--type-meta);
line-height: var(--line-body);
color: var(--text-meta);
}
/* The rotation diagram. Every stroke is currentColor so the figure inherits the
wizard's ink; the accent is spent once, on the thing everything points at. */
.agents-rotation-figure {
margin: 0;
}
.agents-rotation-svg {
display: block;
width: 100%;
height: auto;
color: var(--text-meta);
}
.agents-rotation-ink {
fill: none;
stroke: currentColor;
stroke-width: 1;
}
.agents-rotation-ink text {
fill: currentColor;
stroke: none;
font-family: inherit;
font-size: var(--type-meta);
}
.agents-rotation-sub {
opacity: 0.62;
}
.agents-rotation-group {
stroke-dasharray: 4 4;
opacity: 0.7;
}
.agents-rotation-more {
opacity: 0.35;
}
.agents-rotation-fill {
fill: currentColor;
stroke: none;
}
.agents-rotation-core {
stroke: var(--accent);
stroke-width: 1.5;
}
.agents-rotation-core-label {
font-weight: 600;
opacity: 0.95;
}
/* One equivalent row per agent family: name + status on the left, its own
Connect on the right. No family is laid out differently for being first. */
.agent-family-list {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: 10px;
}
.agent-family-row {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 7px 12px;
border: 1px solid var(--border);
border-radius: 10px;
background: var(--panel-3);
}
.agent-family-name {
font-size: var(--type-body);
line-height: var(--line-title);
font-weight: 600;
color: var(--text);
}
.agent-family-status {
margin-top: 2px;
font-size: var(--type-meta);
line-height: var(--line-meta);
color: var(--status-neutral-fg);
}
.agent-family-status[data-tone="ok"] { color: var(--status-ok-fg); }
.agent-family-status[data-tone="warn"] { color: var(--status-warn-fg); }
.agent-family-status[data-tone="error"] { color: var(--status-error-fg); }
.agent-family-status[data-tone]::before {
content: "";
display: inline-block;
width: 6px;
height: 6px;
margin-right: 7px;
border-radius: 999px;
background: currentColor;
vertical-align: middle;
position: relative;
top: -1px;
}
.agent-service-note,
.agent-outcome {
font-size: var(--type-meta);
line-height: var(--line-body);
color: var(--text-meta);
}
.agent-family-purpose {
color: var(--text-meta);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.agent-family-heading {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: var(--space-2);
}
.wizard-footer [hidden] { display: none; }
.wizard-content .settings-section-copy {
font-size: var(--type-body);
color: var(--text-meta);
line-height: var(--line-body);
margin-block: var(--space-2);
}
.wizard-content .reviewer-slots-group { margin-block: var(--space-3); }
.wizard-content .reviewer-slot-controls > input,
.wizard-content .reviewer-slot-controls > select { min-width: 0; }
.subscription-quota-row {
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
gap: var(--space-2);
margin-block: var(--space-2);
font-size: var(--type-body);
color: var(--text-primary);
}
.subscription-quota-row > span {
font-size: var(--type-meta);
color: var(--text-meta);
}
.agent-service-note {
margin-bottom: 10px;
}
.agent-service-note[data-tone="warn"] { color: var(--status-warn-fg); }
.agent-service-note[data-tone="error"] { color: var(--status-error-fg); }
.agent-outcome {
margin-top: 10px;
}
/* Mirror of the settings.css compact card (docs/DESIGN.md §6 row anatomy):
the wizard loads only this sheet. Same rhythm tokens, the wizard's own
surface tokens. */
.available-subagents-editor {
display: flex;
flex-direction: column;
gap: var(--space-2);
margin-top: var(--space-3);
}
.available-subagents-toolbar,
.available-subagent-head,
.available-subagent-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-2);
}
.available-subagents-toolbar .btn-default,
.available-subagent-actions { margin-left: auto; }
.available-subagents-count,
.available-subagents-source,
.available-subagents-diagnostics,
.available-subagents-empty,
.available-subagent-meta {
color: var(--text-meta);
font-size: var(--type-meta);
line-height: var(--line-body);
}
.available-subagents-diagnostics[data-tone="error"],
.available-subagent-meta[data-tone="error"] { color: var(--status-error-fg); }
.available-subagents-list {
display: flex;
flex-direction: column;
gap: var(--space-2);
}
.available-subagent-row {
display: flex;
flex-direction: column;
gap: var(--space-1);
padding: var(--space-3);
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--panel-3);
}
/* An entry the owner tried to finish with an error is emphasised, not dimmed. */
.available-subagent-row[data-invalid] {
border-color: var(--status-error-border);
background: var(--status-error-bg);
}
.available-subagent-route {
display: grid;
/* A track minimum yields to the container: the viewport query does not know
the wizard column width, so the floor is capped at 100% of the row. */
grid-template-columns: repeat(auto-fit, minmax(min(100%, 120px), 1fr));
gap: var(--space-2);
}
.available-subagent-heading {
margin: 0;
color: var(--text);
font-size: var(--type-body);
font-weight: 600;
}
/* The per-row owner switch leads the card head; padding buys the pointer
target around the 14px native box and the negative margin keeps the head's
own rhythm (docs/DESIGN.md §6). */
.available-subagent-enable {
display: inline-flex;
align-items: center;
padding: var(--space-2);
margin: calc(-1 * var(--space-2));
cursor: pointer;
}
.available-subagent-head .settings-inline-status {
min-width: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Standalone mirror of style.css: onboarding does not load the app sheet. */
.harness-identity {
display: inline-flex;
align-items: center;
gap: var(--space-1);
min-width: 0;
max-width: 100%;
vertical-align: middle;
}
.harness-identity-mark {
inline-size: 1em;
block-size: 1em;
flex: 0 0 1em;
color: currentColor;
fill: currentColor;
}
.harness-identity-label {
min-width: 0;
overflow-wrap: anywhere;
}
.available-subagent-route-identity-wrap {
display: flex;
align-items: center;
min-width: 0;
color: var(--text-meta);
font-size: var(--type-meta);
line-height: var(--line-meta);
}
.available-subagent-purpose {
display: flex;
flex-direction: column;
gap: var(--space-1);
color: var(--text-meta);
font-size: var(--type-meta);
}
/* One line that grows with its text up to four, then scrolls (`field-sizing`);
a shell without it keeps the one-line field and manual resize. */
.available-subagent-purpose textarea {
width: 100%;
field-sizing: content;
line-height: var(--line-body);
min-height: calc(var(--type-body) * var(--line-body) + 22px);
max-height: calc(4 * var(--type-body) * var(--line-body) + 22px);
overflow-y: auto;
resize: vertical;
}
.available-subagent-meta {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.available-subagent-meta[data-run-history] {
white-space: normal;
overflow-wrap: anywhere;
}
.available-subagent-actions .btn-default {
min-height: 34px;
padding: 0 11px;
}
/* The shared login card (harness_login_cards.js) renders the same markup here
as in Settings, but Settings' stylesheets are never loaded by this page — so
its classes are given the same anatomy against the wizard's own tokens. */
.harness-login-card {
margin-top: 12px;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 10px;
padding: 14px 16px;
border: 1px solid var(--border);
border-radius: 12px;
background: var(--panel-2);
}
.harness-login-card h4 {
margin: 0;
font-size: var(--type-body);
line-height: var(--line-title);
font-weight: 600;
color: var(--text);
}
.harness-login-card p {
margin: 0;
font-size: var(--type-body);
line-height: var(--line-body);
color: var(--text-meta);
}
.harness-signin-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
}
.harness-signin-actions a.btn {
text-decoration: none;
}
.harness-device-code p {
margin: 4px 0;
}
.harness-code {
display: inline-block;
padding: 8px 12px;
border: 1px dashed var(--border);
border-radius: 8px;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
font-size: var(--type-page);
letter-spacing: 0.18em;
user-select: all;
}
.harness-code-entry {
display: flex;
flex-direction: column;
gap: 6px;
width: 100%;
}
.harness-code-entry label {
font-size: var(--type-meta);
line-height: var(--line-meta);
color: var(--text-meta);
}
.harness-code-entry-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
}
.harness-code-entry-row input { width: auto; min-width: min(220px, 100%); flex: 1 1 220px; }
.harness-advanced {
align-self: stretch;
border-top: 1px solid var(--border);
padding-top: 8px;
}
.harness-advanced summary {
cursor: pointer;
font-size: var(--type-meta);
line-height: var(--line-meta);
color: var(--text-meta);
}
.harness-advanced[open] summary {
margin-bottom: 6px;
}
.harness-advanced p {
margin: 4px 0;
font-size: var(--type-meta);
}
.harness-attach-command {
margin: 0;
padding: 8px 10px;
border-radius: 8px;
background: rgba(var(--neutral-rgb), 0.05);
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
font-size: var(--type-meta);
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
user-select: all;
}
.settings-inline-note {
font-size: var(--type-meta);
line-height: var(--line-body);
color: var(--text-meta);
}
.settings-inline-note[data-tone="ok"] { color: var(--status-ok-fg); }
.settings-inline-note[data-tone="warn"] { color: var(--status-warn-fg); }
.settings-inline-note[data-tone="error"] { color: var(--status-error-fg); }
.settings-inline-status {
font-size: var(--type-meta);
line-height: var(--line-meta);
color: var(--status-neutral-fg);
}
.settings-inline-status[data-tone="neutral"] { color: var(--status-neutral-fg); }
.settings-inline-status[data-tone="ok"] { color: var(--status-ok-fg); }
.settings-inline-status[data-tone="warn"] { color: var(--status-warn-fg); }
.settings-inline-status[data-tone="error"] { color: var(--status-error-fg); }
.settings-inline-status[data-tone]::before {
content: "";
display: inline-block;
width: 6px;
height: 6px;
margin-right: 7px;
border-radius: 999px;
background: currentColor;
vertical-align: middle;
position: relative;
top: -1px;
}
@media (max-height: 820px), (max-width: 900px) {
.wizard-shell {
gap: 10px;
padding: 12px;
}
.wizard-header {
gap: 12px;
align-items: center;
}
/* Title shrinks dropped with the one-off sizes they adjusted; hiding the
copy below reclaims far more height. */
.wizard-subtitle,
.wizard-step-copy,
.step-copy,
.panel-card p,
.field-note,
.footer-copy {
display: none;
}
/* Agents step: the ARTWORK is what a short viewport drops, never the ladder.
Everything the diagram draws is stated in the text beside it, so hiding it
costs nothing and buys back ~180px. The login card's own sentences are
re-exempted from the blanket `.panel-card p` rule above: they are the live
sign-in instructions, not explanatory prose. */
.agents-rotation-figure {
display: none;
}
.agent-ladder-layout {
grid-template-columns: 1fr;
gap: 0;
}
/* Compact row anatomy: name and status share one line instead of stacking.
Three rows at two lines each was the single largest block of reclaimable
height on this step, and nothing is dropped — only re-flowed. */
.agent-family-identity {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 10px;
}
.agent-family-status {
margin-top: 0;
}
.agent-family-row {
padding: 6px 10px;
}
.agent-family-list {
gap: 5px;
margin-top: 8px;
}
.agent-ladder {
gap: 6px;
}
.agent-ladder-note,
.agent-outcome {
margin-top: 8px;
}
.available-subagent-route {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.harness-login-card p {
display: block;
}
.wizard-steps {
gap: 8px;
}
.wizard-step {
padding: 8px 10px;
gap: 4px;
}
.wizard-content {
gap: 12px;
padding: 12px;
}
.step-title {
margin-bottom: 0;
}
.panel-card,
.summary-card,
.wizard-choice,
.wizard-runtime-strip {
padding: 10px 12px;
}
.wizard-footer {
justify-content: flex-end;
}
.wizard-error {
min-height: 16px;
}
}
@media (max-width: 760px) {
body {
padding: 16px;
}
.wizard-shell {
padding: 14px;
}
.field-grid,
.grid.two,
.grid.three,
.wizard-choice-grid,
.wizard-choice-grid.four,
.agent-ladder-layout {
grid-template-columns: 1fr;
}
.wizard-step {
flex-basis: 138px;
padding: 10px 12px;
}
.wizard-step-copy {
display: none;
}
.summary-kv {
grid-template-columns: 1fr;
}
.available-subagent-route {
grid-template-columns: 1fr;
}
.available-subagents-toolbar .btn-default {
margin-left: 0;
}
}
@media (max-width: 720px) {
.wizard-step {
flex-basis: 92px;
align-items: center;
text-align: center;
}
.wizard-step-title {
display: none;
}
}
/* track-migration:begin — Removed with the shared wizard role adapters. */
input:not(.ui-control):not(.ui-checkbox),
select:not(.ui-control):not(.ui-checkbox),
textarea:not(.ui-control):not(.ui-checkbox) {
width: 100%;
min-width: 0;
padding: 10px 12px;
border-radius: 12px;
border: 1px solid var(--border);
background: rgba(var(--wizard-rgb), 0.72);
color: var(--text);
font-size: var(--type-body);
outline: none;
}
input:not(.ui-control):not(.ui-checkbox):focus,
select:not(.ui-control):not(.ui-checkbox):focus,
textarea:not(.ui-control):not(.ui-checkbox):focus {
border-color: var(--focus-accent-border);
box-shadow: 0 0 0 3px var(--focus-accent-ring);
}
/* track-migration:end */