* docs(guide): refine overview, mental-model diagram, cards, and recipes - Sidebar overview: replace screenshot with post-#108 redesign, re-tune marker percentages and grid layout, bring markers flush to image edge, rewrite Nodes/Workflows action-bar callouts. - Snapshot mental-model SVG: drop the U-shaped return arrow, restyle boxes with ForgeFlow accent strips, show actual on-disk file paths (Client_Shot010.json + Client_Shot010_autosave/periodic.json), rename Project library to Custom Folder, replace dramatic caption with a single-line equation-style summary of manual vs auto-save behaviour. - Function cards: convert chip spans to bullet lists, replace "Safety / setup" with "Smart organization" (folders/drag-drop/move), tighten Search description, "Group" -> "Smart view" on Nodes chip. - Recipes: hide focus-dot overlays, restore wrapper panel with darker #111111 fill, strip all styling from images, scale screenshots to 70%, right-align callouts to screenshot edge, split callout text into separate paragraphs, pin figcaption to bottom. - Crop save-snapshot.png and load-snapshot.png to remove backdrop padding. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(guide): refreshed screenshots, recipe layout overhaul, marker re-tuning Sidebar overview - Replace sidebar-overview.png with the taller 666x1202 redesign so the screenshot fills more of the column height alongside the callouts. - Re-measure section dividers (y=76/152/262/342/418/1202) and re-tune the six marker percentages to match the new image with ~0.4% inset inside each row band. Recipes - Replace all-icons-new.png, search-B.png, search-C.png with the redesigned screenshots showing post-#108 letter-glyph buttons. - Recipe layout: outer wrapper restored with #111111 fill (darker than the screenshots' edge color), screenshots scaled to 70% with no inner border or shadow, callout right-aligned to the screenshot's right edge (margin-right: 15%), figcaption pinned to bottom via flex margin-top: auto, screenshot+callout pair vertically centered above the figcaption. - Add folder-actions.png as a new "Smart organization" recipe with callout text covering create/delete/drag-drop. - Add right-click-functions.png replacing the workflow-search recipe; callout describes the right-click action menu on saved workflows. - Drop the autosave-recovery.svg in favor of the all-icons recipe; the recovery topic is already covered upstream in the Snapshot file box. - Workflow save-selection callout rewritten with two paragraphs (Save / Save selection) and explains the 'Module' tag. - Load snapshot callout split into two paragraphs and shortened. - Search-C callout broadened to "Search narrows displayed items so useful nodes and workflows are easier to find." - Re-enable .focus-module overlay as a translucent yellow rectangle anchored bottom-right of the all-icons screenshot, highlighting the two workflow action buttons. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(guide): remove orphan image assets - web/guide/img/autosave-recovery.svg — replaced upstream by the folder-actions recipe; the SVG is no longer referenced from index.html. - web/guide/img/screenshots/search-B.png — replaced upstream by right-click-functions.png in the workflow-actions recipe. Tree now contains only the 9 image assets actually used by the guide (2 SVGs + 7 PNG screenshots). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(guide): add Two-layer save band, dedupe Snapshot band header - New band "Two-layer save" sits between the snapshot mental-model band and the simple-workflow section. Explains in prose: named save vs background autosave, the <snapshot>_autosave/ recovery copy, the YES/NO load-prompt when autosave is newer, and pre-load recovery files for reversible Loads. - Style the new band with .band-text + scoped <code> styling for inline path fragments (subtle tinted bg, monospace). - Snapshot mental-model band: replace h2 ("Snapshot = your project kit") with the SVG's previous inner header ("Snapshot saves the whole project kit.") since the two were redundant. Drop the inner header from the SVG and shift boxes/arrows/caption up to absorb the freed space (SVG height 460 -> 320). - Drop max-width: 760px on .band > p so the band's intro paragraph spans full panel width. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
572 lines
11 KiB
CSS
572 lines
11 KiB
CSS
/* SPDX-FileCopyrightText: 2025-2026 Kforge Labs <https://github.com/malkuthro/ComfyUI-Koolook> */
|
||
/* SPDX-License-Identifier: GPL-3.0-only */
|
||
|
||
:root {
|
||
color-scheme: dark;
|
||
/* ForgeFlow-inspired static guide skin.
|
||
Source reference: ../ForgeFlow/docs/UI_DESIGN_SYSTEM.md */
|
||
--bg: #0e0e0e;
|
||
--panel: #151515;
|
||
--panel-2: #1a1a1f;
|
||
--titlebar: #24242c;
|
||
--text: #f9fafb;
|
||
--muted: #707982;
|
||
--muted-deep: #4d535d;
|
||
--line: #302f2f;
|
||
--blue: #4268ba;
|
||
--sky: #052f4a;
|
||
--sky-hover: #1a6d94;
|
||
--green: #4a8058;
|
||
--amber: #461901;
|
||
--purple: #452e83;
|
||
--pink: #77234d;
|
||
}
|
||
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
margin: 0;
|
||
min-width: 320px;
|
||
background:
|
||
radial-gradient(rgba(150, 150, 150, 0.08) 1px, transparent 1px),
|
||
var(--bg);
|
||
background-size: 13px 13px;
|
||
color: var(--text);
|
||
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||
line-height: 1.5;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
.hero,
|
||
main {
|
||
width: min(1180px, calc(100% - 32px));
|
||
margin: 0 auto;
|
||
}
|
||
|
||
.hero {
|
||
padding: 48px 0 24px;
|
||
}
|
||
|
||
.eyebrow {
|
||
margin: 0 0 8px;
|
||
color: var(--blue);
|
||
font-size: 12px;
|
||
font-weight: 700;
|
||
letter-spacing: 0.12em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
h1,
|
||
h2,
|
||
h3,
|
||
p {
|
||
margin-top: 0;
|
||
}
|
||
|
||
h1 {
|
||
max-width: 780px;
|
||
margin-bottom: 14px;
|
||
font-size: clamp(34px, 7vw, 68px);
|
||
line-height: 1;
|
||
letter-spacing: 0;
|
||
}
|
||
|
||
h2 {
|
||
margin-bottom: 12px;
|
||
font-size: clamp(27px, 4vw, 42px);
|
||
line-height: 1.05;
|
||
letter-spacing: 0;
|
||
}
|
||
|
||
h3 {
|
||
margin-bottom: 8px;
|
||
font-size: 18px;
|
||
letter-spacing: 0;
|
||
}
|
||
|
||
.lead {
|
||
max-width: 700px;
|
||
color: var(--muted);
|
||
font-size: 19px;
|
||
}
|
||
|
||
.section {
|
||
display: grid;
|
||
grid-template-columns: minmax(240px, 0.82fr) minmax(0, 1.18fr);
|
||
gap: 28px;
|
||
align-items: center;
|
||
padding: 34px 0;
|
||
}
|
||
|
||
.section-copy {
|
||
max-width: 440px;
|
||
padding-left: 16px;
|
||
border-left: 4px solid var(--blue);
|
||
}
|
||
|
||
.section-copy.wide {
|
||
max-width: 720px;
|
||
grid-column: 1 / -1;
|
||
}
|
||
|
||
.section-copy p,
|
||
.band > p,
|
||
.cards p,
|
||
figcaption {
|
||
color: var(--muted);
|
||
}
|
||
|
||
.visual {
|
||
margin: 0;
|
||
}
|
||
|
||
.visual img {
|
||
display: block;
|
||
width: 100%;
|
||
height: auto;
|
||
border: 1px solid var(--line);
|
||
background: var(--panel);
|
||
border-radius: 8px;
|
||
}
|
||
|
||
.overview-map {
|
||
display: grid;
|
||
/* Slightly wider screenshot column + tighter gap so the sidebar shot's
|
||
natural portrait height grows to roughly match the callouts column
|
||
height (image aspect 728:1206 → ~1.656x width). Markers scale with the
|
||
image since they use percentage positioning. */
|
||
grid-template-columns: minmax(240px, 0.84fr) minmax(220px, 0.66fr);
|
||
gap: 24px;
|
||
align-items: center;
|
||
padding: 22px 28px 22px 22px;
|
||
border: 1px solid var(--line);
|
||
border-radius: 8px;
|
||
background: #101010;
|
||
}
|
||
|
||
.overview-shot {
|
||
position: relative;
|
||
width: min(100%, 450px);
|
||
margin: 0 auto;
|
||
overflow: visible;
|
||
}
|
||
|
||
.overview-shot img {
|
||
border-color: #3c3c3c;
|
||
background: #151515;
|
||
}
|
||
|
||
.overview-box {
|
||
position: absolute;
|
||
right: -4px;
|
||
width: 4px;
|
||
border: 0;
|
||
border-radius: 999px;
|
||
background: currentColor;
|
||
opacity: 0.78;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.overview-box::after {
|
||
content: none;
|
||
}
|
||
|
||
/* Marker percentages tuned to the redesigned 666×1202 sidebar-overview.png.
|
||
Section dividers measured at y = 76 / 152 / 262 / 342 / 418 / 1202
|
||
(= 6.32% / 12.65% / 21.80% / 28.45% / 34.78% / 100%). Each bar is inset
|
||
~0.4% from its dividers so the marker sits cleanly inside the row band
|
||
instead of straddling the divider line. */
|
||
.overview-snapshot {
|
||
top: 0.5%;
|
||
height: 5.3%;
|
||
color: #4a8058;
|
||
}
|
||
|
||
.overview-tools {
|
||
top: 6.8%;
|
||
height: 5.3%;
|
||
color: #4268ba;
|
||
}
|
||
|
||
.overview-search {
|
||
top: 13.2%;
|
||
height: 8.2%;
|
||
color: #d59b3d;
|
||
}
|
||
|
||
.overview-nodes {
|
||
top: 22.3%;
|
||
height: 5.7%;
|
||
color: #b64747;
|
||
}
|
||
|
||
.overview-workflows {
|
||
top: 28.9%;
|
||
height: 5.4%;
|
||
color: #452e83;
|
||
}
|
||
|
||
.overview-saved {
|
||
top: 35.3%;
|
||
height: 63.7%;
|
||
color: #4a8058;
|
||
}
|
||
|
||
.overview-callouts {
|
||
display: grid;
|
||
gap: 22px;
|
||
}
|
||
|
||
.overview-callout {
|
||
position: relative;
|
||
padding-left: 18px;
|
||
color: var(--blue);
|
||
}
|
||
|
||
.overview-callout::before {
|
||
content: "";
|
||
position: absolute;
|
||
top: 4px;
|
||
bottom: 4px;
|
||
left: 0;
|
||
width: 4px;
|
||
border-radius: 999px;
|
||
background: currentColor;
|
||
opacity: 0.82;
|
||
}
|
||
|
||
.overview-callout::after {
|
||
content: none;
|
||
}
|
||
|
||
.overview-callout h3 {
|
||
margin: 0 0 2px;
|
||
color: currentColor;
|
||
font-size: 20px;
|
||
}
|
||
|
||
.overview-callout p {
|
||
margin: 0;
|
||
color: var(--muted);
|
||
font-size: 14px;
|
||
}
|
||
|
||
.overview-callout.snapshot::before,
|
||
.overview-callout.saved::before,
|
||
.overview-callout.snapshot,
|
||
.overview-callout.saved {
|
||
color: var(--green);
|
||
}
|
||
|
||
.overview-callout.tools {
|
||
color: var(--blue);
|
||
}
|
||
|
||
.overview-callout.search {
|
||
color: #d59b3d;
|
||
}
|
||
|
||
.overview-callout.nodes {
|
||
color: #b64747;
|
||
}
|
||
|
||
.overview-callout.workflows {
|
||
color: var(--purple);
|
||
}
|
||
|
||
figcaption {
|
||
margin-top: 10px;
|
||
color: var(--muted);
|
||
font-size: 13px;
|
||
}
|
||
|
||
.band {
|
||
margin: 28px 0;
|
||
padding: 0;
|
||
border: 1px solid var(--line);
|
||
border-radius: 6px;
|
||
background: var(--panel);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.band > div {
|
||
position: relative;
|
||
padding: 16px 22px;
|
||
background: var(--panel);
|
||
border-bottom: 1px solid var(--line);
|
||
}
|
||
|
||
.band > div::before {
|
||
content: "";
|
||
position: absolute;
|
||
inset: 0 auto 0 0;
|
||
width: 4px;
|
||
background: var(--green);
|
||
}
|
||
|
||
.band > p {
|
||
padding: 18px 22px 0;
|
||
font-size: 17px;
|
||
}
|
||
|
||
/* Text-only band (no figure to provide bottom padding) — its trailing
|
||
paragraph needs explicit bottom space so the body text doesn't sit
|
||
flush against the panel's bottom edge. */
|
||
.band-text > p:last-child {
|
||
padding-bottom: 22px;
|
||
}
|
||
|
||
/* Inline code spans — used for filename / path fragments inside body
|
||
prose like <snapshot>_autosave/. Slight tinted bg + monospace stack
|
||
so they read as code without dominating the line. */
|
||
.band p code,
|
||
.band-text p code {
|
||
padding: 1px 6px;
|
||
border-radius: 4px;
|
||
background: rgb(255 255 255 / 6%);
|
||
color: var(--text);
|
||
font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
|
||
font-size: 0.92em;
|
||
}
|
||
|
||
.full {
|
||
margin: 18px 22px 22px;
|
||
}
|
||
|
||
.steps {
|
||
margin: 0;
|
||
padding-left: 20px;
|
||
color: var(--muted);
|
||
}
|
||
|
||
.steps li {
|
||
margin-bottom: 9px;
|
||
}
|
||
|
||
.steps strong {
|
||
color: var(--text);
|
||
font-weight: 650;
|
||
}
|
||
|
||
.cards {
|
||
display: grid;
|
||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||
gap: 12px;
|
||
padding: 30px 0;
|
||
}
|
||
|
||
.cards article {
|
||
position: relative;
|
||
min-height: 142px;
|
||
padding: 18px 16px 16px 20px;
|
||
border: 1px solid var(--line);
|
||
border-radius: 6px;
|
||
background: var(--panel);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.cards article::before {
|
||
content: "";
|
||
position: absolute;
|
||
inset: 0 auto 0 0;
|
||
width: 4px;
|
||
background: var(--blue);
|
||
}
|
||
|
||
.cards article:nth-child(2)::before {
|
||
background: var(--sky-hover);
|
||
}
|
||
|
||
.cards article:nth-child(3)::before {
|
||
background: var(--purple);
|
||
}
|
||
|
||
.cards article:nth-child(4)::before {
|
||
background: var(--green);
|
||
}
|
||
|
||
.cards article:nth-child(5)::before {
|
||
background: var(--pink);
|
||
}
|
||
|
||
.function-list {
|
||
margin: 14px 0 0;
|
||
padding-left: 18px;
|
||
list-style: disc;
|
||
}
|
||
|
||
.function-list li {
|
||
color: var(--text);
|
||
font-size: 12px;
|
||
font-weight: 700;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
.recipes {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||
gap: 40px 32px;
|
||
padding: 34px 0 64px;
|
||
}
|
||
|
||
/* Each recipe is wrapped in its own panel so the row of recipes reads as a
|
||
set of self-contained "case studies" — same outer container shape, same
|
||
inner layout (screenshot above, callout below, caption at bottom).
|
||
Wrapper is a flex column so the figcaption uses `margin-top: auto` and
|
||
sits flush at the bottom of every panel, aligned across the row even when
|
||
the callouts above vary in height. Wrapper bg is intentionally darker
|
||
than --panel so the screenshots inside read as the lighter focal subject. */
|
||
.recipe-real {
|
||
display: flex;
|
||
flex-direction: column;
|
||
padding: 22px 22px 22px;
|
||
border: 1px solid var(--line);
|
||
border-radius: 8px;
|
||
/* Darker than the screenshot's own edge color (#171718) so the screenshot
|
||
reads as the lighter focal subject inside a darker frame. */
|
||
background: #111111;
|
||
}
|
||
|
||
.recipe-real figcaption {
|
||
margin-top: auto;
|
||
padding-top: 22px;
|
||
text-align: center;
|
||
}
|
||
|
||
.recipe-shot {
|
||
position: relative;
|
||
max-width: 70%;
|
||
/* `margin-top: auto` + figcaption's existing `margin-top: auto` distribute
|
||
the leftover vertical space equally — top space above the shot equals
|
||
space between callout and figcaption, so the shot+callout pair is
|
||
vertically centered in the panel above the bottom-pinned figcaption. */
|
||
margin: auto auto 0;
|
||
}
|
||
|
||
.recipes .recipe-shot img {
|
||
display: block;
|
||
width: 100%;
|
||
height: auto;
|
||
border: 0;
|
||
border-radius: 0;
|
||
background: transparent;
|
||
box-shadow: none;
|
||
outline: none;
|
||
}
|
||
|
||
/* Focus-dot overlays were visually noisy and frequently misaligned over the
|
||
underlying screenshots; hidden by default until they can be redrawn
|
||
against the new sidebar imagery. Aria-hidden already, so nothing changes
|
||
for AT users. Specific overlays (e.g. .focus-module) re-enable themselves
|
||
below with positioning tuned to the new screenshots. */
|
||
.focus-dot {
|
||
display: none;
|
||
}
|
||
|
||
/* Workflow save-selection recipe — translucent yellow overlay highlighting
|
||
the two action buttons (floppy + grid-2x2) at the bottom-right of the
|
||
Workflows row in all-icons-new.png. Anchored to the bottom-right corner
|
||
of the screenshot since that's where the buttons sit in the PNG. */
|
||
.recipes .focus-module {
|
||
display: block;
|
||
position: absolute;
|
||
bottom: 0;
|
||
right: 0;
|
||
width: 22%;
|
||
height: 15.6%;
|
||
background: rgb(255 210 74 / 30%);
|
||
border-radius: 6px;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.recipe-callout {
|
||
width: fit-content;
|
||
/* About two-thirds the width of the recipe screenshot, so the callout
|
||
reads as a sub-element rather than a full-width banner. Right-aligned
|
||
to the SCREENSHOT'S right edge: the screenshot is `max-width: 70%`
|
||
centered, so its right edge sits at the 85% mark of the wrapper, which
|
||
is 15% from the wrapper's right side. `margin-right: 15%` reproduces
|
||
that offset, `margin-left: auto` pushes the callout right against it. */
|
||
max-width: min(240px, calc(100% - 24px));
|
||
margin: 22px 15% 0 auto;
|
||
padding: 14px 18px 14px 20px;
|
||
border-left: 4px solid var(--blue);
|
||
border-radius: 6px;
|
||
background: #111111;
|
||
box-shadow: 0 10px 22px rgb(0 0 0 / 22%);
|
||
}
|
||
|
||
.recipe-callout p {
|
||
margin: 0;
|
||
color: var(--muted);
|
||
font-size: 14px;
|
||
line-height: 1.55;
|
||
}
|
||
|
||
/* Paragraph chapters inside a callout — when a recipe explains two distinct
|
||
actions (e.g. Save vs. Save as new), each gets its own paragraph and they
|
||
are separated by a small gap so they read as visually distinct topics. */
|
||
.recipe-callout p + p {
|
||
margin-top: 8px;
|
||
}
|
||
|
||
.recipe-callout strong {
|
||
color: var(--text);
|
||
font-size: 14px;
|
||
font-weight: 700;
|
||
}
|
||
|
||
.recipe-callout.amber {
|
||
border-left-color: #c9944b;
|
||
}
|
||
|
||
.recipe-callout.green {
|
||
border-left-color: var(--green);
|
||
}
|
||
|
||
.recipe-callout.purple {
|
||
border-left-color: var(--purple);
|
||
}
|
||
|
||
@media (max-width: 980px) {
|
||
.cards {
|
||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||
}
|
||
}
|
||
|
||
@media (max-width: 860px) {
|
||
.section,
|
||
.recipes {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.overview-map {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.cards article {
|
||
min-height: 0;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 520px) {
|
||
.hero,
|
||
main {
|
||
width: min(100% - 20px, 1180px);
|
||
}
|
||
|
||
.hero {
|
||
padding-top: 34px;
|
||
}
|
||
|
||
.band {
|
||
padding: 18px;
|
||
}
|
||
|
||
.cards {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
}
|