Files
DemonGatanjieu-Anomalous_Mo…/web/styles/43-ai-toolbox.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

561 lines
32 KiB
CSS

/* "给 AI 的素材" (ui_ai_toolbox.js, ui_ai_toolbox_cards.js, ui_ai_toolbox_icons.js): the large
picker window (search, kinds, sources, card grid, detail pane, tray), the same picker as a side
panel (.is-side, at the end), the entry in a task's header and the timeline row of a pick. */
.anomalous-ai-connect-dialog.is-toolbox {
width: min(1340px, 96vw);
height: min(880px, 90vh);
max-height: none;
overflow: hidden;
}
.anomalous-tb { display: flex; flex: 1; flex-direction: column; gap: 12px; min-height: 0; }
.anomalous-tb-icon { display: inline-flex; flex: none; align-items: center; justify-content: center; }
.anomalous-tb-count {
min-width: 18px;
padding: 1px 6px;
border-radius: 999px;
background: var(--amb-link);
color: var(--amb-btn-primary-text, #fff);
font-size: 11px;
font-weight: 700;
line-height: 16px;
text-align: center;
font-variant-numeric: tabular-nums;
}
/* Top: who it is for, the search, the filters. */
.anomalous-tb-top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.anomalous-tb-for { flex-basis: 100%; margin-top: -6px; color: var(--amb-text-dim); font-size: 12px; }
.anomalous-tb-search {
display: flex;
flex: 1 1 360px;
align-items: center;
gap: 10px;
height: 42px;
padding: 0 12px;
border: 1px solid var(--amb-border);
border-radius: 12px;
background: rgba(var(--amb-ink-rgb), 0.04);
color: var(--amb-text-dim);
transition: border-color 0.15s, box-shadow 0.15s;
}
.anomalous-tb-search:focus-within { border-color: var(--amb-link); box-shadow: 0 0 0 3px color-mix(in srgb, var(--amb-link) 22%, transparent); color: var(--amb-text-soft); }
.anomalous-tb-search input { flex: 1; min-width: 0; height: 100%; padding: 0; border: 0; outline: 0; background: transparent; color: var(--amb-text-main); font: inherit; font-size: 14px; }
.anomalous-tb-kbd { padding: 1px 7px; border: 1px solid var(--amb-border); border-radius: 6px; color: var(--amb-text-dim); font: 11px/16px ui-monospace, monospace; }
.anomalous-tb-filters { display: inline-flex; gap: 4px; padding: 3px; border: 1px solid var(--amb-border); border-radius: 12px; }
.anomalous-tb-filter {
display: inline-flex;
align-items: center;
gap: 6px;
height: 32px;
padding: 0 12px;
border: 0;
border-radius: 9px;
background: transparent;
color: var(--amb-text-soft);
font: inherit;
font-size: 13px;
cursor: pointer;
}
.anomalous-tb-filter:hover { background: rgba(var(--amb-ink-rgb), 0.06); color: var(--amb-text-main); }
.anomalous-tb-filter.is-on { background: color-mix(in srgb, var(--amb-link) 20%, transparent); color: var(--amb-text-main); }
/* The four columns. */
.anomalous-tb-main {
display: grid;
flex: 1;
grid-template-columns: 158px 214px minmax(0, 1fr) 320px;
min-height: 0;
border: 1px solid var(--amb-border);
border-radius: 14px;
overflow: hidden;
}
.anomalous-tb-main:has(> .anomalous-tb-facets[hidden]) { grid-template-columns: 158px minmax(0, 1fr) 320px; }
.anomalous-tb-rail, .anomalous-tb-facets { display: flex; flex-direction: column; gap: 2px; padding: 10px 8px; overflow-y: auto; border-right: 1px solid var(--amb-border); }
.anomalous-tb-rail { background: rgba(var(--amb-ink-rgb), 0.025); }
.anomalous-tb-facets[hidden] { display: none; }
.anomalous-tb-kind, .anomalous-tb-facet {
position: relative;
display: flex;
align-items: center;
gap: 10px;
min-height: 40px;
padding: 0 10px;
border: 0;
border-radius: 10px;
background: transparent;
color: var(--amb-text-soft);
font: inherit;
font-size: 13.5px;
text-align: left;
cursor: pointer;
}
.anomalous-tb-facet { min-height: 34px; gap: 8px; font-size: 12.5px; }
.anomalous-tb-facet > span:nth-child(2) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-kind:hover, .anomalous-tb-facet:hover { background: rgba(var(--amb-ink-rgb), 0.06); color: var(--amb-text-main); }
.anomalous-tb-kind.is-on, .anomalous-tb-facet.is-on { background: color-mix(in srgb, var(--amb-link) 18%, transparent); color: var(--amb-text-main); }
.anomalous-tb-kind.is-on::before { position: absolute; top: 9px; bottom: 9px; left: -8px; width: 3px; border-radius: 0 3px 3px 0; background: var(--amb-link); content: ""; }
.anomalous-tb-kind-meta { display: inline-flex; gap: 5px; margin-left: auto; }
.anomalous-tb-kind-matches, .anomalous-tb-facet-count { color: var(--amb-text-dim); font-size: 11.5px; font-variant-numeric: tabular-nums; }
.anomalous-tb-facets-title { padding: 4px 10px 6px; color: var(--amb-text-dim); font-size: 11px; font-weight: 600; letter-spacing: 0.06em; }
/* Source badges: ComfyUI's own, paid API nodes, a pack's initials on its own colour. */
.anomalous-tb-badge {
display: inline-flex;
flex: none;
align-items: center;
justify-content: center;
width: var(--tb-size, 26px);
height: var(--tb-size, 26px);
border-radius: calc(var(--tb-size, 26px) * 0.3);
font-size: calc(var(--tb-size, 26px) * 0.4);
font-weight: 800;
letter-spacing: -0.02em;
line-height: 1;
}
.anomalous-tb-badge.is-pack { background: hsl(var(--tb-hue, 210) 58% 46%); color: #fff; }
.anomalous-tb-badge.is-builtin { background: color-mix(in srgb, var(--amb-link) 26%, transparent); color: var(--amb-link); }
.anomalous-tb-badge.is-api { background: color-mix(in srgb, var(--amb-warn) 26%, transparent); color: var(--amb-warn); }
/* The grid. */
.anomalous-tb-grid-wrap { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.anomalous-tb-grid-head { display: flex; flex: none; align-items: baseline; gap: 10px; padding: 14px 16px 10px; border-bottom: 1px solid var(--amb-border); }
.anomalous-tb-scroller { flex: 1; min-height: 0; padding: 14px 16px 16px; overflow-y: auto; }
.anomalous-tb-grid-title { color: var(--amb-text-main); font-size: 15px; font-weight: 700; }
.anomalous-tb-grid-count { color: var(--amb-text-dim); font-size: 12px; }
.anomalous-tb-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 12px; }
.anomalous-tb-sentinel { height: 1px; }
.anomalous-tb-note { grid-column: 1 / -1; padding: 40px 10px; color: var(--amb-text-dim); font-size: 13px; text-align: center; }
.anomalous-tb-note.is-error { color: var(--amb-warn-text, var(--amb-warn)); }
.anomalous-tb-card {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
border: 1px solid var(--amb-border);
border-radius: 14px;
background: rgba(var(--amb-ink-rgb), 0.03);
cursor: pointer;
outline: 0;
overflow: hidden;
transition: border-color 0.15s, transform 0.15s, background 0.15s, box-shadow 0.15s;
}
.anomalous-tb-card:hover { border-color: var(--amb-border-strong, var(--amb-border)); transform: translateY(-2px); background: rgba(var(--amb-ink-rgb), 0.05); }
.anomalous-tb-card:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--amb-link) 45%, transparent); }
.anomalous-tb-card.is-picked {
border-color: var(--amb-link);
background: color-mix(in srgb, var(--amb-link) 11%, transparent);
box-shadow: 0 0 0 1px var(--amb-link);
}
.anomalous-tb-card.is-skeleton { min-height: 200px; cursor: default; animation: anomalous-tb-pulse 1.3s ease-in-out infinite; }
@keyframes anomalous-tb-pulse { 50% { opacity: 0.45; } }
.anomalous-tb-check {
position: absolute;
top: 9px;
right: 9px;
display: inline-flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
border: 1.5px solid rgba(255, 255, 255, 0.75);
border-radius: 50%;
background: rgba(0, 0, 0, 0.32);
color: transparent;
transform: scale(0.85);
opacity: 0;
transition: opacity 0.15s, transform 0.15s, background 0.15s;
}
.anomalous-tb-card:hover .anomalous-tb-check { opacity: 1; }
.anomalous-tb-card.is-picked .anomalous-tb-check { border-color: var(--amb-link); background: var(--amb-link); color: var(--amb-on-link); opacity: 1; transform: scale(1); }
.anomalous-tb-star {
position: absolute;
right: 8px;
bottom: 8px;
display: inline-flex;
padding: 4px;
border: 0;
border-radius: 8px;
background: transparent;
color: var(--amb-text-dim);
cursor: pointer;
opacity: 0;
transition: opacity 0.15s, color 0.15s;
}
.anomalous-tb-card:hover .anomalous-tb-star, .anomalous-tb-star.is-on, .anomalous-tb-card:focus-within .anomalous-tb-star { opacity: 1; }
.anomalous-tb-star:hover { background: rgba(var(--amb-ink-rgb), 0.08); color: var(--amb-text-main); }
.anomalous-tb-star.is-on { color: #f2b544; }
.anomalous-tb-info { display: none; }
.anomalous-tb.is-side .anomalous-tb-info { position: absolute; right: 36px; bottom: 8px; display: inline-flex; padding: 4px; border: 0; border-radius: 8px; background: transparent; color: var(--amb-text-soft); cursor: pointer; }
.anomalous-tb.is-side .anomalous-tb-info:hover { background: rgba(var(--amb-ink-rgb), 0.12); color: var(--amb-text-main); }
.anomalous-tb-card-body { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px 12px; padding-right: 34px; }
.anomalous-tb-card-title { overflow: hidden; color: var(--amb-text-main); font-size: 13.5px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-card-sub { overflow: hidden; color: var(--amb-text-dim); font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-tags { display: flex; flex-wrap: wrap; gap: 4px; }
.anomalous-tb-tag {
max-width: 100%;
overflow: hidden;
padding: 1px 7px;
border-radius: 6px;
background: rgba(var(--amb-ink-rgb), 0.07);
color: var(--amb-text-soft);
font-size: 11px;
line-height: 17px;
text-overflow: ellipsis;
white-space: nowrap;
}
.anomalous-tb-tag.is-warn { background: color-mix(in srgb, var(--amb-warn) 22%, transparent); color: var(--amb-warn); }
.anomalous-tb-tag.is-soft { color: var(--amb-text-dim); }
.anomalous-tb-tag.is-combo { background: color-mix(in srgb, #2bb38a 22%, transparent); }
.anomalous-tb-tag.is-workflow { background: color-mix(in srgb, #e08a3c 22%, transparent); }
.anomalous-tb-tag.is-saved { background: color-mix(in srgb, #d65c8f 22%, transparent); }
/* A node in miniature. */
.anomalous-tb-node {
margin: 10px 10px 0;
border: 1px solid rgba(var(--amb-ink-rgb), 0.14);
border-radius: 10px;
background: rgba(var(--amb-ink-rgb), 0.06);
overflow: hidden;
}
.anomalous-tb-node-head { display: flex; align-items: center; gap: 7px; padding: 6px 8px; background: rgba(var(--amb-ink-rgb), 0.08); }
.anomalous-tb-node-title { overflow: hidden; color: var(--amb-text-main); font-size: 12.5px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-node-body { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; min-height: 30px; padding: 7px 8px; }
.anomalous-tb-node-col { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.anomalous-tb-node-col.is-out { align-items: flex-end; }
.anomalous-tb-socket { display: flex; align-items: center; gap: 5px; min-width: 0; max-width: 100%; color: var(--amb-text-soft); font-size: 11px; }
.anomalous-tb-socket.is-out { flex-direction: row-reverse; }
.anomalous-tb-socket-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--tb-dot); box-shadow: 0 0 0 2px color-mix(in srgb, var(--tb-dot) 25%, transparent); }
.anomalous-tb-more { color: var(--amb-text-dim); font-size: 10.5px; }
.anomalous-tb-node-foot { display: flex; align-items: center; gap: 5px; padding: 5px 8px; border-top: 1px dashed rgba(var(--amb-ink-rgb), 0.14); color: var(--amb-text-dim); font-size: 11px; }
/* Covers and prompt quotes. */
.anomalous-tb-cover { display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 3; overflow: hidden; background: rgba(var(--amb-ink-rgb), 0.06); }
.anomalous-tb-cover img, .anomalous-tb-detail-cover img { width: 100%; height: 100%; object-fit: cover; }
.anomalous-tb-card:hover .anomalous-tb-cover img { transform: scale(1.04); transition: transform 0.35s; }
.anomalous-tb-cover img.anomalous-tb-stand-in, .anomalous-tb-detail-cover img.anomalous-tb-stand-in { width: 82%; height: 82%; object-fit: contain; }
.anomalous-tb-card.is-combos .anomalous-tb-cover { background: color-mix(in srgb, #2bb38a 14%, transparent); }
.anomalous-tb-card.is-workflows .anomalous-tb-cover { background: color-mix(in srgb, #e08a3c 14%, transparent); }
.anomalous-tb-card.is-models .anomalous-tb-cover { background: color-mix(in srgb, #8a7be0 14%, transparent); }
.anomalous-tb-quote { position: relative; margin: 10px 10px 0; padding: 10px 12px; border-left: 3px solid #d65c8f; border-radius: 4px 10px 10px 4px; background: rgba(var(--amb-ink-rgb), 0.05); }
.anomalous-tb-quote-text {
display: -webkit-box;
margin: 0;
overflow: hidden;
color: var(--amb-text-soft);
font-size: 12px;
line-height: 1.55;
word-break: break-word;
-webkit-box-orient: vertical;
-webkit-line-clamp: 6;
}
/* The detail pane. */
.anomalous-tb-pane { min-width: 0; padding: 16px; overflow-y: auto; border-left: 1px solid var(--amb-border); background: rgba(var(--amb-ink-rgb), 0.025); }
.anomalous-tb-pane-back {
display: inline-flex;
align-items: center;
gap: 4px;
margin: -4px 0 10px -6px;
padding: 4px 8px 4px 4px;
border: 0;
border-radius: 8px;
background: transparent;
color: var(--amb-text-soft);
font: inherit;
font-size: 12.5px;
cursor: pointer;
}
.anomalous-tb-pane-back:hover { background: rgba(var(--amb-ink-rgb), 0.07); color: var(--amb-text-main); }
.anomalous-tb-pane-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding-top: 30px; text-align: center; }
.anomalous-tb-pane-title { color: var(--amb-text-main); font-size: 15px; font-weight: 700; }
.anomalous-tb-empty-art { width: 220px; height: 220px; }
.anomalous-tb-detail { display: flex; flex-direction: column; gap: 12px; }
.anomalous-tb-detail-cover { aspect-ratio: 16 / 10; overflow: hidden; border-radius: 12px; background: rgba(var(--amb-ink-rgb), 0.06); display: flex; align-items: center; justify-content: center; }
.anomalous-tb-detail-head { display: flex; align-items: center; gap: 12px; }
.anomalous-tb-detail-words { min-width: 0; }
.anomalous-tb-detail-title { color: var(--amb-text-main); font-size: 16px; font-weight: 700; line-height: 1.35; word-break: break-word; }
.anomalous-tb-detail-sub { color: var(--amb-text-dim); font-size: 11.5px; word-break: break-all; }
.anomalous-tb-detail-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.anomalous-tb-take, .anomalous-tb-like {
display: inline-flex;
align-items: center;
gap: 6px;
height: 32px;
padding: 0 12px;
border: 1px solid var(--amb-border);
border-radius: 9px;
background: transparent;
color: var(--amb-text-soft);
font: inherit;
font-size: 12.5px;
cursor: pointer;
}
.anomalous-tb-take { border-color: transparent; background: var(--amb-link); color: var(--amb-on-link); }
.anomalous-tb-take.is-on { border-color: var(--amb-link); background: transparent; color: var(--amb-link); }
.anomalous-tb-like:hover { background: rgba(var(--amb-ink-rgb), 0.06); color: var(--amb-text-main); }
.anomalous-tb-like.is-on { color: var(--amb-text-main); }
.anomalous-tb-like.is-on .anomalous-tb-icon { color: #f2b544; }
.anomalous-tb-section { display: flex; flex-direction: column; gap: 6px; }
.anomalous-tb-section-title { margin: 0; color: var(--amb-text-dim); font-size: 11px; font-weight: 700; letter-spacing: 0.06em; }
.anomalous-tb-text { margin: 0; color: var(--amb-text-soft); font-size: 12.5px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.anomalous-tb-text.is-soft { color: var(--amb-text-dim); font-size: 12px; }
.anomalous-tb-text.is-warn { color: var(--amb-warn); }
.anomalous-tb-text.is-prompt { max-height: 200px; padding: 8px 10px; overflow-y: auto; border-radius: 8px; background: rgba(var(--amb-ink-rgb), 0.05); color: var(--amb-text-main); }
.anomalous-tb-text.is-negative { color: var(--amb-text-soft); }
.anomalous-tb-socket-list, .anomalous-tb-setting-list { display: flex; flex-direction: column; gap: 5px; }
.anomalous-tb-socket-list .anomalous-tb-socket { font-size: 12px; }
.anomalous-tb-socket-list .anomalous-tb-socket.is-out { flex-direction: row; }
.anomalous-tb-socket-type { margin-left: auto; color: var(--amb-text-dim); font: 10.5px ui-monospace, monospace; }
.anomalous-tb-setting { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; border-bottom: 1px dashed rgba(var(--amb-ink-rgb), 0.1); font-size: 12px; }
.anomalous-tb-setting-name { color: var(--amb-text-soft); }
.anomalous-tb-setting-value { overflow: hidden; color: var(--amb-text-dim); text-overflow: ellipsis; white-space: nowrap; }
/* The tray: picks, how strictly, hand over. */
.anomalous-tb-tray { display: flex; align-items: center; gap: 12px; }
.anomalous-tb-chips { display: flex; flex: 1; gap: 6px; min-width: 0; padding: 2px 0; overflow-x: auto; }
.anomalous-tb-chips.is-static { flex-wrap: wrap; overflow: visible; }
.anomalous-tb-chip {
display: inline-flex;
flex: none;
align-items: center;
gap: 6px;
max-width: 230px;
height: 30px;
padding: 0 4px 0 6px;
border: 1px solid var(--amb-border);
border-radius: 9px;
background: rgba(var(--amb-ink-rgb), 0.05);
color: var(--amb-text-main);
font-size: 12px;
}
.anomalous-tb-chips.is-static .anomalous-tb-chip { padding-right: 9px; }
.anomalous-tb-chip img { width: 20px; height: 20px; border-radius: 5px; object-fit: cover; }
.anomalous-tb-chip.is-combos { border-color: color-mix(in srgb, #2bb38a 45%, transparent); }
.anomalous-tb-chip.is-workflows { border-color: color-mix(in srgb, #e08a3c 45%, transparent); }
.anomalous-tb-chip.is-prompts { border-color: color-mix(in srgb, #d65c8f 45%, transparent); }
.anomalous-tb-chip.is-models { border-color: color-mix(in srgb, #8a7be0 45%, transparent); }
.anomalous-tb-chip-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-chip-x { display: inline-flex; padding: 3px; border: 0; border-radius: 6px; background: transparent; color: var(--amb-text-dim); cursor: pointer; }
.anomalous-tb-chip-x:hover { background: rgba(var(--amb-ink-rgb), 0.1); color: var(--amb-text-main); }
.anomalous-tb-tray-empty { color: var(--amb-text-dim); font-size: 12.5px; line-height: 30px; }
.anomalous-tb-clear { display: inline-flex; padding: 7px; border: 0; border-radius: 9px; background: transparent; color: var(--amb-text-dim); cursor: pointer; }
.anomalous-tb-clear:hover { background: rgba(var(--amb-ink-rgb), 0.08); color: var(--amb-text-main); }
.anomalous-tb-modes { display: inline-flex; flex: none; padding: 3px; border: 1px solid var(--amb-border); border-radius: 12px; }
.anomalous-tb-mode {
display: inline-flex;
align-items: center;
gap: 6px;
height: 34px;
padding: 0 12px;
border: 0;
border-radius: 9px;
background: transparent;
color: var(--amb-text-soft);
font: inherit;
font-size: 13px;
cursor: pointer;
}
.anomalous-tb-mode:hover:not(.is-on) { background: color-mix(in srgb, var(--amb-link) 14%, transparent); color: var(--amb-text-main); }
.anomalous-tb-mode.is-on { background: color-mix(in srgb, var(--amb-link) 20%, transparent); color: var(--amb-text-main); }
.anomalous-tb-mode.is-on:last-child { background: color-mix(in srgb, var(--amb-warn) 22%, transparent); }
.anomalous-tb-send {
display: inline-flex;
flex: none;
align-items: center;
gap: 8px;
height: 42px;
padding: 0 20px;
border: 0;
border-radius: 12px;
background: var(--amb-btn-primary-bg, var(--amb-link));
color: var(--amb-btn-primary-text, #fff);
font: inherit;
font-size: 14px;
font-weight: 700;
cursor: pointer;
transition: transform 0.12s, filter 0.12s;
}
.anomalous-tb-send:hover { filter: brightness(1.08); transform: translateY(-1px); }
.anomalous-tb-send:disabled { opacity: 0.5; cursor: default; filter: none; transform: none; }
/* The timeline row of a pick. */
.anomalous-tb-step { display: flex; flex-direction: column; gap: 7px; margin-top: 4px; }
.anomalous-tb-step-mode { display: inline-flex; align-items: center; gap: 6px; color: var(--amb-text-soft); font-size: 12px; }
.anomalous-tb-step-mode.is-only { color: var(--amb-warn); }
@media (max-width: 1100px) {
.anomalous-tb-main { grid-template-columns: 140px 190px minmax(0, 1fr); }
.anomalous-tb-main:has(> .anomalous-tb-facets[hidden]) { grid-template-columns: 140px minmax(0, 1fr); }
.anomalous-tb-pane { display: none; }
}
@media (max-width: 720px) {
.anomalous-tb-main, .anomalous-tb-main:has(> .anomalous-tb-facets[hidden]) { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto minmax(0, 1fr); }
.anomalous-tb-rail, .anomalous-tb-facets { flex-direction: row; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--amb-border); }
.anomalous-tb-kind.is-on::before { display: none; }
.anomalous-tb-tray { flex-wrap: wrap; }
}
/* The side panel: on the right of the screen, the workbench and canvas still usable beside it. */
.anomalous-tb-dock {
position: fixed;
z-index: 1000000;
top: 12px;
right: 12px;
bottom: 12px;
display: flex;
flex-direction: column;
gap: 10px;
width: min(400px, calc(100vw - 24px));
box-sizing: border-box;
padding: 12px 12px 14px;
border: 1px solid var(--amb-border-strong, var(--amb-border));
border-radius: 16px;
background: var(--amb-bg-panel);
box-shadow: 0 18px 50px rgba(0, 0, 0, 0.45);
color: var(--amb-text-main);
}
/* The full-screen browser's AI page moves over for it, so the task's own buttons stay in reach. */
body.anomalous-tb-docked #anomalous-container.anomalous-maximized .anomalous-ai { padding-right: calc(min(400px, 100vw - 24px) + 12px); }
.anomalous-tb-dock-head { display: flex; align-items: center; gap: 8px; padding: 0 2px; color: var(--amb-link); }
.anomalous-tb-dock-title { flex: 1; min-width: 0; color: var(--amb-text-main); font-size: 14.5px; font-weight: 700; }
.anomalous-tb-dock-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
padding: 0;
border: 0;
border-radius: 8px;
background: transparent;
color: var(--amb-text-soft);
cursor: pointer;
}
.anomalous-tb-dock-btn:hover { background: rgba(var(--amb-ink-rgb), 0.08); color: var(--amb-text-main); }
.anomalous-ai-connect-head .anomalous-tb-dock-btn { margin-left: auto; }
.anomalous-tb.is-side { gap: 10px; }
.anomalous-tb.is-side .anomalous-tb-top { gap: 8px; }
.anomalous-tb.is-side .anomalous-tb-for, .anomalous-tb.is-side .anomalous-tb-kbd, .anomalous-tb.is-side .anomalous-tb-facets-title { display: none; }
/* Short on room: search and the filters on one line (the filters as icons), the cards as lines. */
.anomalous-tb.is-side .anomalous-tb-top { flex-wrap: nowrap; }
.anomalous-tb.is-side .anomalous-tb-search { flex: 1; min-width: 0; height: 34px; border-radius: 10px; }
.anomalous-tb.is-side .anomalous-tb-filters { flex: none; padding: 2px; border-radius: 10px; }
.anomalous-tb.is-side .anomalous-tb-filter { position: relative; justify-content: center; width: 32px; height: 28px; padding: 0; font-size: 12px; }
.anomalous-tb.is-side .anomalous-tb-filter > span:not([class]) { display: none; }
.anomalous-tb.is-side .anomalous-tb-filter > .anomalous-tb-count { position: absolute; top: -5px; right: -5px; min-width: 15px; padding: 0 4px; font-size: 10px; line-height: 15px; }
.anomalous-tb.is-side .anomalous-tb-main,
.anomalous-tb.is-side .anomalous-tb-main:has(> .anomalous-tb-facets[hidden]) {
position: relative;
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto auto minmax(0, 1fr);
border-radius: 12px;
}
.anomalous-tb.is-side .anomalous-tb-rail, .anomalous-tb.is-side .anomalous-tb-facets {
flex-direction: row;
gap: 4px;
padding: 6px;
overflow-x: auto;
border-right: 0;
border-bottom: 1px solid var(--amb-border);
}
.anomalous-tb.is-side .anomalous-tb-kind { flex: 1 0 auto; justify-content: center; gap: 4px; min-height: 28px; padding: 0 6px; font-size: 12px; }
.anomalous-tb.is-side .anomalous-tb-kind .anomalous-tb-icon svg { width: 15px; height: 15px; }
.anomalous-tb.is-side .anomalous-tb-kind-meta { margin-left: 0; }
.anomalous-tb.is-side .anomalous-tb-kind-matches { display: none; }
.anomalous-tb.is-side .anomalous-tb-kind.is-on::before { display: none; }
.anomalous-tb.is-side .anomalous-tb-rail, .anomalous-tb.is-side .anomalous-tb-facets { padding: 4px; }
/* Sources (or types) as one button and a list under it, not a strip to scroll sideways. */
.anomalous-tb.is-side .anomalous-tb-facets { overflow: visible; }
.anomalous-tb-facet-open {
display: flex;
flex: 1;
align-items: center;
gap: 8px;
min-width: 0;
height: 32px;
padding: 0 10px 0 8px;
border: 1px solid var(--amb-border);
border-radius: 8px;
background: rgba(var(--amb-ink-rgb), 0.03);
color: var(--amb-text-main);
font: inherit;
font-size: 12.5px;
cursor: pointer;
}
.anomalous-tb-facet-open:hover { border-color: color-mix(in srgb, var(--amb-link) 55%, transparent); background: color-mix(in srgb, var(--amb-link) 14%, transparent); }
.anomalous-tb-facet-open.has-pack { border-color: var(--amb-link); }
.anomalous-tb-facet-open-label { flex: 1; min-width: 0; overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-facet-menu {
position: absolute;
z-index: 4;
right: 6px;
left: 6px;
display: flex;
flex-direction: column;
gap: 6px;
padding: 6px;
border: 1px solid var(--amb-border-strong, var(--amb-border));
border-radius: 10px;
background: var(--amb-bg-panel);
box-shadow: 0 14px 40px rgba(0, 0, 0, 0.4);
}
.anomalous-tb-facet-menu-find { flex: none; height: 30px; padding: 0 10px; border: 1px solid var(--amb-border); border-radius: 7px; background: var(--amb-bg-input, transparent); color: var(--amb-text-main); font: inherit; font-size: 12.5px; outline: 0; }
.anomalous-tb-facet-menu-find:focus { border-color: var(--amb-link); }
.anomalous-tb-facet-menu-list { display: flex; flex-direction: column; gap: 1px; min-height: 0; overflow-y: auto; }
.anomalous-tb-facet-menu .anomalous-tb-facet { flex: none; width: 100%; min-height: 32px; padding: 0 8px; border: 0; border-radius: 7px; background: none; color: var(--amb-text-soft); font: inherit; font-size: 12.5px; cursor: pointer; }
.anomalous-tb-facet-menu .anomalous-tb-facet[hidden] { display: none; }
/* The row under the pointer (or in focus from the keys) lights up; the one shown is tinted and ticked. */
.anomalous-tb-facet-menu .anomalous-tb-facet:hover, .anomalous-tb-facet-menu .anomalous-tb-facet:focus-visible { background: rgba(var(--amb-ink-rgb), 0.08); color: var(--amb-text-main); outline: 0; }
.anomalous-tb-facet-menu .anomalous-tb-facet:focus-visible { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--amb-link) 60%, transparent); }
.anomalous-tb-facet-menu .anomalous-tb-facet.is-on { background: color-mix(in srgb, var(--amb-link) 18%, transparent); color: var(--amb-text-main); }
.anomalous-tb-facet-menu .anomalous-tb-facet.is-on:hover { background: color-mix(in srgb, var(--amb-link) 25%, transparent); }
.anomalous-tb-facet-menu .anomalous-tb-facet.is-on > .anomalous-tb-icon:last-child { flex: none; color: var(--amb-link); }
.anomalous-tb.is-side .anomalous-tb-grid-head { display: none; }
.anomalous-tb.is-side .anomalous-tb-scroller { padding: 4px; }
.anomalous-tb.is-side .anomalous-tb-grid { grid-template-columns: minmax(0, 1fr); gap: 2px; }
.anomalous-tb-card.is-row { flex-direction: row; align-items: center; gap: 10px; min-height: 44px; padding: 5px 8px; border-color: transparent; border-radius: 9px; background: none; }
.anomalous-tb-card.is-row:hover { transform: none; border-color: transparent; background: color-mix(in srgb, var(--amb-link) 14%, transparent); }
.anomalous-tb-card.is-row.is-picked { border-color: color-mix(in srgb, var(--amb-link) 70%, transparent); background: color-mix(in srgb, var(--amb-link) 10%, transparent); box-shadow: none; }
.anomalous-tb-row-lead { display: inline-flex; flex: none; align-items: center; justify-content: center; width: 32px; height: 32px; overflow: hidden; border-radius: 7px; color: var(--amb-text-soft); }
.anomalous-tb-row-cover { width: 100%; height: 100%; }
.anomalous-tb-row-cover img { width: 100%; height: 100%; object-fit: cover; }
.anomalous-tb-row-text { flex: 1; min-width: 0; }
.anomalous-tb-row-title { overflow: hidden; color: var(--amb-text-main); font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-row-sub { overflow: hidden; color: var(--amb-text-dim); font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-card.is-row .anomalous-tb-check, .anomalous-tb-card.is-row .anomalous-tb-star, .anomalous-tb.is-side .anomalous-tb-card.is-row .anomalous-tb-info { position: static; flex: none; }
.anomalous-tb-card.is-row .anomalous-tb-check { width: 20px; height: 20px; opacity: 1; transform: none; }
.anomalous-tb-card.is-row .anomalous-tb-info { opacity: 0; }
.anomalous-tb-card.is-row:hover .anomalous-tb-info, .anomalous-tb-card.is-row:focus-within .anomalous-tb-info { opacity: 1; }
.anomalous-tb.is-side .anomalous-tb-pane { position: absolute; z-index: 2; inset: 0; display: block; border-left: 0; background: var(--amb-bg-panel); }
.anomalous-tb.is-side .anomalous-tb-pane[hidden] { display: none; }
.anomalous-tb.is-side .anomalous-tb-tray { flex-wrap: wrap; gap: 8px; }
.anomalous-tb.is-side .anomalous-tb-chips { flex-basis: 100%; }
.anomalous-tb.is-side .anomalous-tb-modes { flex: 1; min-width: 0; }
.anomalous-tb.is-side .anomalous-tb-mode { flex: 1; justify-content: center; height: 30px; padding: 0 6px; font-size: 12px; }
.anomalous-tb.is-side .anomalous-tb-send { flex: none; justify-content: center; height: 34px; padding: 0 14px; font-size: 13px; }
@media (prefers-reduced-motion: reduce) {
.anomalous-tb-card, .anomalous-tb-card:hover .anomalous-tb-cover img, .anomalous-tb-send { transition: none; transform: none; }
.anomalous-tb-card.is-skeleton { animation: none; }
}
/* A custom node pack shown in the second column: picked whole from its bar; its nodes say so. */
.anomalous-tb-pack { display: flex; flex: none; align-items: center; gap: 10px; margin: 8px 10px 0; padding: 8px 10px; border: 1px solid color-mix(in srgb, var(--amb-link) 35%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--amb-link) 8%, transparent); }
.anomalous-tb-pack[hidden] { display: none; }
.anomalous-tb-pack-text { flex: 1; min-width: 0; }
.anomalous-tb-pack-name { overflow: hidden; color: var(--amb-text-main); font-size: 13px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.anomalous-tb-pack-count { color: var(--amb-text-dim); font-size: 11.5px; }
.anomalous-tb-pack-pick { display: inline-flex; flex: none; align-items: center; gap: 5px; height: 30px; padding: 0 12px; border: 1px solid var(--amb-link); border-radius: 8px; background: var(--amb-link); color: var(--amb-btn-primary-text, #fff); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.anomalous-tb-pack-pick.is-on { background: transparent; color: var(--amb-link); }
.anomalous-tb-facet.has-pack { box-shadow: inset 0 0 0 1px var(--amb-link); }
.anomalous-tb-card.is-in-pack:not(.is-picked) .anomalous-tb-check { border-color: color-mix(in srgb, var(--amb-link) 60%, transparent); color: var(--amb-link); opacity: 1; transform: scale(1); }
/* Models as the Models page has them: base model chips, a model's version apart from its name. */
.anomalous-tb-bases { flex: none; max-height: 76px; margin: 0; padding: 8px 16px; overflow-y: auto; border-bottom: 1px solid var(--amb-border); }
.anomalous-tb-bases[hidden] { display: none; }
.anomalous-tb.is-side .anomalous-tb-bases { padding: 6px 2px; }
.anomalous-tb-version { display: inline-flex; align-self: flex-start; align-items: center; gap: 4px; max-width: 100%; min-width: 0; padding: 0 6px; border: 0; border-radius: 6px; background: rgba(var(--amb-ink-rgb), 0.08); color: var(--amb-text-soft); font: inherit; font-size: 11px; line-height: 18px; white-space: nowrap; }
.anomalous-tb-version.is-several { color: var(--amb-text-main); cursor: pointer; }
.anomalous-tb-version.is-several:hover { background: color-mix(in srgb, var(--amb-link) 22%, transparent); }
.anomalous-tb-version-name { overflow: hidden; text-overflow: ellipsis; }
.anomalous-tb-version-count { flex: none; color: var(--amb-link); font-weight: 600; }