Files
DemonGatanjieu-Anomalous_Mo…/web/styles/20-current-node.css
T
DemonGatanjieuandClaude Opus 5.5 d778aec946 Fix what a walk through every page found before 1.63
Every page in both languages, all themes and at 480:
- Give the window its own text colour: text with none took ComfyUI's, white on the light theme (Tidy headings and file names, the site chip).
- Keep a task's link chip in its row, its x in reach, and colour the next-task chip.
- Let choices in Settings wrap, the Models search shrink, and a workflow's preset row go to two lines.
- Add --amb-on-link for text on the accent: pale in the dark themes, so white was hard to read.
- Lists and colons follow the language (listSeparator, wordColon); tests/words_in_language.mjs keeps it so.
- Right plurals in English, "AI" on the rail, one line left in Chinese translated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 03:18:07 +08:00

572 lines
13 KiB
CSS

/* The current-node panel (Node Assistant): one scrolling body of sections; prompts; the parameters
(saved sets as cards with their picture and source, or side by side). */
.anomalous-node-body {
display: flex;
flex: 1;
flex-direction: column;
min-height: 0;
overflow-y: auto;
padding-bottom: 16px;
}
.anomalous-node-section {
display: flex;
flex-direction: column;
gap: 8px;
margin: 14px 16px 0;
}
.anomalous-node-section-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.anomalous-node-section-head h3 {
margin: 0;
color: var(--amb-text-muted);
font-size: 10px;
font-weight: 750;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.anomalous-node-section-btn {
padding: 4px 10px;
border: 1px solid var(--amb-border-strong);
border-radius: 999px;
background: transparent;
color: var(--amb-text-soft);
font-size: 11.5px;
cursor: pointer;
}
.anomalous-node-section-btn:hover {
border-color: color-mix(in srgb, var(--amb-link) 45%, transparent);
color: var(--amb-text-main);
}
.anomalous-node-param-search {
padding: 7px 10px;
border: 1px solid var(--amb-border);
border-radius: 8px;
background: var(--amb-lt-sunken, rgba(0, 0, 0, 0.25));
color: var(--amb-text-main);
font-size: 12px;
}
.anomalous-node-param-tools {
display: flex;
align-items: center;
gap: 8px;
}
/* Cards or side by side. */
.anomalous-node-param-views {
display: inline-flex;
padding: 2px;
border: 1px solid var(--amb-border);
border-radius: 999px;
}
.anomalous-node-param-views[hidden] { display: none; }
.anomalous-node-param-view {
padding: 3px 10px;
border: none;
border-radius: 999px;
background: transparent;
color: var(--amb-text-muted);
font-size: 11px;
cursor: pointer;
}
.anomalous-node-param-view:hover { color: var(--amb-text-main); }
.anomalous-node-param-view.is-on {
background: color-mix(in srgb, var(--amb-link) 18%, transparent);
color: var(--amb-text-main);
font-weight: 600;
}
.anomalous-node-param-list {
display: flex;
flex-direction: column;
gap: 8px;
}
/* On top: the set last put into this node and what changed since, or the set the values match. */
.anomalous-node-param-history {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 8px;
padding: 9px 12px;
border: 1px solid color-mix(in srgb, var(--amb-link) 30%, var(--amb-border));
border-radius: 10px;
background: color-mix(in srgb, var(--amb-link) 7%, transparent);
color: var(--amb-text-muted);
font-size: 12px;
line-height: 1.5;
}
.anomalous-node-param-history > .anomalous-node-param-icon {
width: 15px;
height: 15px;
color: var(--amb-link);
}
.anomalous-node-param-history-main { color: var(--amb-text-main); }
.anomalous-node-param-history-note.is-same { color: var(--amb-ok-text); }
.anomalous-node-param-history > .anomalous-node-param-link { margin-left: auto; }
/* The card (or column) of the set last put in. */
.anomalous-node-param-last {
flex-shrink: 0;
padding: 1px 7px;
border-radius: 999px;
background: color-mix(in srgb, var(--amb-link) 18%, transparent);
color: var(--amb-text-main);
font-size: 10px;
font-weight: 600;
}
.anomalous-node-param-table .anomalous-node-param-last {
display: inline-block;
margin-top: 3px;
}
.anomalous-node-param {
display: flex;
flex-direction: column;
gap: 10px;
padding: 12px;
border: 1px solid var(--amb-border);
border-radius: 10px;
background: rgba(var(--amb-ink-rgb), 0.035);
}
/* The picture made with the values, and where they came from. */
.anomalous-node-param-top {
display: flex;
gap: 12px;
min-width: 0;
}
.anomalous-node-param-thumb {
display: grid;
flex-shrink: 0;
place-items: center;
width: 52px;
height: 68px;
padding: 0;
border: 1px solid var(--amb-border);
border-radius: 8px;
background: rgba(var(--amb-ink-rgb), 0.05);
color: var(--amb-text-dim);
overflow: hidden;
cursor: zoom-in;
}
.anomalous-node-param-thumb.is-empty { cursor: default; }
.anomalous-node-param-thumb > img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.anomalous-node-param-thumb > .anomalous-node-param-icon {
width: 20px;
height: 20px;
}
.anomalous-node-param-main {
display: flex;
flex: 1;
flex-direction: column;
gap: 4px;
min-width: 0;
}
.anomalous-node-param-head {
display: flex;
align-items: center;
gap: 6px;
min-width: 0;
}
.anomalous-node-param-name {
overflow: hidden;
color: var(--amb-text-main);
font-size: 13px;
white-space: nowrap;
text-overflow: ellipsis;
}
.anomalous-node-param-role {
flex-shrink: 0;
padding: 1px 7px;
border-radius: 999px;
background: rgba(var(--amb-ink-rgb), 0.06);
color: var(--amb-link);
font-size: 10px;
}
.anomalous-node-param-role.is-positive { color: var(--amb-ok-text); }
.anomalous-node-param-role.is-negative { color: var(--amb-danger-text); }
.anomalous-node-param-icon {
display: inline-flex;
flex-shrink: 0;
width: 13px;
height: 13px;
}
.anomalous-node-param-icon > svg {
width: 100%;
height: 100%;
}
/* Where a set came from: a chip per channel, each its own colour. */
.anomalous-node-param-sources {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
min-width: 0;
}
.anomalous-node-param-source {
--source: var(--amb-text-soft);
display: inline-flex;
align-items: center;
gap: 4px;
height: 22px;
padding: 0 8px;
border: 1px solid color-mix(in srgb, var(--source) 35%, transparent);
border-radius: 7px;
background: color-mix(in srgb, var(--source) 12%, transparent);
color: var(--amb-text-main);
font: inherit;
font-size: 11.5px;
}
.anomalous-node-param-source.is-workflow { --source: var(--amb-link); }
.anomalous-node-param-source.is-combo { --source: var(--amb-warn); }
.anomalous-node-param-source.is-picture { --source: var(--amb-ok); }
.anomalous-node-param-source > .anomalous-node-param-icon { color: var(--source); }
button.anomalous-node-param-source { cursor: pointer; }
button.anomalous-node-param-source:hover { background: color-mix(in srgb, var(--source) 24%, transparent); }
.anomalous-node-param-source-count { font-weight: 700; }
.anomalous-node-param-source-go { color: var(--amb-text-soft); }
.anomalous-node-param-day { color: var(--amb-text-dim); font-size: 11px; }
.anomalous-node-param-link {
flex-shrink: 0;
padding: 0;
border: none;
background: none;
color: var(--amb-link);
font: inherit;
cursor: pointer;
}
.anomalous-node-param-link:hover {
text-decoration: underline;
text-underline-offset: 2px;
}
/* The values: the name, then a picture of the change (two bars for numbers, old → new otherwise). */
.anomalous-node-param-rows {
display: flex;
flex-direction: column;
gap: 6px;
}
.anomalous-node-param-row {
display: grid;
grid-template-columns: minmax(56px, 112px) minmax(48px, 200px) auto;
justify-content: start;
align-items: center;
gap: 10px;
min-width: 0;
color: var(--amb-text-soft);
font-size: 11.5px;
}
.anomalous-node-param-row.is-kept,
.anomalous-node-param-row.is-same {
grid-template-columns: minmax(56px, 112px) minmax(0, 1fr);
justify-content: stretch;
color: var(--amb-text-dim);
}
.anomalous-node-param-label {
overflow: hidden;
color: var(--amb-text-muted);
white-space: nowrap;
text-overflow: ellipsis;
}
.anomalous-node-param-bars {
display: flex;
flex-direction: column;
gap: 3px;
min-width: 40px;
}
.anomalous-node-param-bar {
height: 5px;
border-radius: 3px;
}
.anomalous-node-param-bar.is-now { background: rgba(var(--amb-ink-rgb), 0.22); }
.anomalous-node-param-bar.is-then { background: var(--amb-link); }
.anomalous-node-param-nums {
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.anomalous-node-param-nums > .is-now { color: var(--amb-text-dim); }
.anomalous-node-param-nums > strong {
color: var(--amb-text-main);
font-weight: 600;
}
.anomalous-node-param-trend {
margin-left: 3px;
color: var(--amb-link);
}
.anomalous-node-param-swap {
display: flex;
flex-wrap: wrap;
grid-column: 2 / -1;
align-items: center;
gap: 5px;
min-width: 0;
color: var(--amb-text-dim);
}
.anomalous-node-param-pill {
max-width: 100%;
padding: 1px 8px;
border-radius: 999px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.anomalous-node-param-pill.is-now {
background: rgba(var(--amb-ink-rgb), 0.06);
color: var(--amb-text-dim);
text-decoration: line-through;
}
.anomalous-node-param-pill.is-then {
background: color-mix(in srgb, var(--amb-link) 16%, transparent);
color: var(--amb-text-main);
}
.anomalous-node-param-quiet {
display: flex;
align-items: center;
gap: 5px;
min-width: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/* The one line on what stays, across the whole row. */
.anomalous-node-param-quiet:only-child {
grid-column: 1 / -1;
white-space: normal;
}
.anomalous-node-muted {
margin: 0;
color: var(--amb-text-muted);
font-size: 11px;
line-height: 1.5;
}
.anomalous-node-muted.is-error { color: var(--amb-danger-text); }
/* Show all, compare, delete, apply. */
.anomalous-node-param-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
}
.anomalous-node-param-gap { flex: 1; }
.anomalous-node-param-more {
padding: 0;
border: none;
background: none;
color: var(--amb-text-muted);
font-size: 11.5px;
cursor: pointer;
}
.anomalous-node-param-more:hover { color: var(--amb-text-main); }
.anomalous-node-param-secondary,
.anomalous-node-param-delete {
padding: 5px 10px;
border: 1px solid var(--amb-border);
border-radius: 7px;
background: transparent;
color: var(--amb-text-muted);
font-size: 11.5px;
cursor: pointer;
}
.anomalous-node-param-secondary:hover {
border-color: color-mix(in srgb, var(--amb-link) 45%, transparent);
color: var(--amb-text-main);
}
.anomalous-node-param-delete:hover {
border-color: rgba(239, 68, 68, 0.5);
color: var(--amb-danger-text);
}
.anomalous-node-param-apply {
padding: 5px 12px;
border: 1px solid color-mix(in srgb, var(--amb-link) 45%, transparent);
border-radius: 7px;
background: color-mix(in srgb, var(--amb-link) 14%, transparent);
color: var(--amb-text-main);
font-size: 11.5px;
font-weight: 600;
white-space: nowrap;
cursor: pointer;
}
.anomalous-node-param-apply:disabled {
border-color: var(--amb-border);
background: transparent;
color: var(--amb-text-dim);
cursor: default;
}
/* Side by side: a column for now and for each set, the values a set would put in marked. */
.anomalous-node-param-table-wrap {
border: 1px solid var(--amb-border);
border-radius: 10px;
overflow-x: auto;
}
.anomalous-node-param-table {
width: 100%;
border-collapse: collapse;
font-size: 11.5px;
}
.anomalous-node-param-table th,
.anomalous-node-param-table td {
max-width: 150px;
padding: 6px 10px;
border-bottom: 1px solid var(--amb-border);
overflow: hidden;
color: var(--amb-text-soft);
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
}
.anomalous-node-param-table th {
vertical-align: bottom;
font-weight: 600;
}
.anomalous-node-param-table .is-now { color: var(--amb-text-muted); }
.anomalous-node-param-table td.is-change {
background: color-mix(in srgb, var(--amb-link) 13%, transparent);
color: var(--amb-text-main);
}
.anomalous-node-param-table td.is-same,
.anomalous-node-param-table td.is-none { color: var(--amb-text-dim); }
.anomalous-node-param-table td.is-seed,
.anomalous-node-param-table td.is-model,
.anomalous-node-param-table td.is-missing {
color: var(--amb-text-dim);
font-style: italic;
}
.anomalous-node-param-table-thumb {
display: block;
width: 44px;
height: 56px;
margin-bottom: 5px;
padding: 0;
border: none;
border-radius: 6px;
background: rgba(var(--amb-ink-rgb), 0.05);
overflow: hidden;
}
button.anomalous-node-param-table-thumb { cursor: zoom-in; }
.anomalous-node-param-table-thumb > img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.anomalous-node-param-table-name {
display: block;
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
}
.anomalous-node-param-table-foot td { border-bottom: none; }
/* A prompt box of the node, with its translation. */
.anomalous-node-prompt {
display: flex;
flex-direction: column;
gap: 6px;
padding: 10px 12px;
border: 1px solid var(--amb-border);
border-radius: 10px;
background: rgba(var(--amb-ink-rgb), 0.035);
}
.anomalous-node-param-role.is-plain { color: var(--amb-text-soft); }
.anomalous-node-prompt-name {
color: var(--amb-text-dim);
font-size: 10.5px;
}
.anomalous-node-prompt-text {
display: -webkit-box;
margin: 0;
overflow: hidden;
color: var(--amb-text-main);
font-size: 12px;
line-height: 1.5;
overflow-wrap: anywhere;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
}
.anomalous-node-prompt-text.is-empty { color: var(--amb-text-dim); }