ae19df78fb
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
119 lines
5.7 KiB
CSS
119 lines
5.7 KiB
CSS
/* F7 track-changes preview — theme-aware via VS Code webview CSS variables. */
|
|
body {
|
|
font-family: var(--vscode-font-family);
|
|
font-size: var(--vscode-font-size);
|
|
color: var(--vscode-foreground);
|
|
background: var(--vscode-editor-background);
|
|
padding: 0 1.2rem 2rem;
|
|
line-height: 1.5;
|
|
}
|
|
#cw-header {
|
|
position: sticky;
|
|
top: 0;
|
|
background: var(--vscode-editor-background);
|
|
border-bottom: 1px solid var(--vscode-panel-border);
|
|
padding: 0.5rem 0;
|
|
font-size: 0.85em;
|
|
opacity: 0.85;
|
|
display: flex;
|
|
gap: 1rem;
|
|
}
|
|
/* Author-colored track changes — style = operation, color = author.
|
|
underline = inserted, strikethrough = removed; human green/red, Claude blue/purple. */
|
|
#cw-summary .cw-add { color: #3fb950; }
|
|
#cw-summary .cw-del { color: #f85149; }
|
|
.cw-blk { position: relative; }
|
|
|
|
/* base ins/del carry the operation; author classes carry the color */
|
|
ins { text-decoration: none; }
|
|
del { text-decoration: line-through; opacity: 0.7; }
|
|
|
|
.cw-ins-human { background: rgba(63,185,80,0.14); border-bottom: 2px solid #3fb950; text-decoration: none; }
|
|
.cw-ins-claude { background: rgba(88,166,255,0.15); border-bottom: 2px solid #58a6ff; text-decoration: none; }
|
|
.cw-ins-none { background: var(--vscode-diffEditor-insertedTextBackground, rgba(63,185,80,0.14)); text-decoration: none; }
|
|
.cw-del-human { background: rgba(248,81,73,0.11); text-decoration: line-through; text-decoration-color: #f85149; }
|
|
.cw-del-claude { background: rgba(188,140,255,0.13); text-decoration: line-through; text-decoration-color: #bc8cff; }
|
|
.cw-del-none { background: var(--vscode-diffEditor-removedTextBackground, rgba(248,81,73,0.11)); text-decoration: line-through; opacity: 0.7; }
|
|
|
|
/* Task 8 — overlap: if a future render path nests cw-ins-{A} inside cw-del-{B},
|
|
both marks must show. cw-ins-* sets text-decoration:none which would otherwise
|
|
suppress the parent del's strikethrough. `inherit` restores the parent's
|
|
line-through while the child's border-bottom underline is unaffected.
|
|
The engine currently emits SIBLING ins/del (never nested) so this rule is a
|
|
forward defensive guarantee only. See task-8-report.md for details. */
|
|
.cw-del-claude .cw-ins-human, .cw-del-human .cw-ins-claude { text-decoration: inherit; }
|
|
|
|
/* whole-block ops: an added block is an insertion (its author runs are emitted as
|
|
cw-ins-* via colorByAuthor with kind="ins"); a standalone removed block is neutral
|
|
struck (adjacency heuristic fallback) */
|
|
.cw-added { background: transparent; }
|
|
.cw-removed { background: var(--vscode-diffEditor-removedTextBackground, rgba(248,81,73,0.10)); text-decoration: line-through; opacity: 0.65; }
|
|
.cw-changed { outline: none; }
|
|
|
|
#cw-legend .cw-swatch { padding: 0 0.4em; border-radius: 3px; }
|
|
#cw-summary .cw-prop { opacity: 0.85; }
|
|
.cw-badge {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
font-size: 0.7em;
|
|
padding: 0 0.4em;
|
|
border-radius: 3px;
|
|
background: var(--vscode-badge-background);
|
|
color: var(--vscode-badge-foreground);
|
|
}
|
|
.cw-error {
|
|
border: 1px solid var(--vscode-inputValidation-errorBorder);
|
|
background: var(--vscode-inputValidation-errorBackground);
|
|
color: var(--vscode-errorForeground);
|
|
padding: 0.3rem 0.6rem;
|
|
border-radius: 3px;
|
|
font-size: 0.85em;
|
|
}
|
|
pre.mermaid { text-align: center; background: transparent; }
|
|
pre.mermaid[data-cw-error] { color: var(--vscode-errorForeground); }
|
|
|
|
|
|
/* F11 — preview toolbar buttons (Pin baseline; adaptive Ask Claude). Theme-aware. */
|
|
#cw-header button {
|
|
cursor: pointer;
|
|
font: inherit;
|
|
border: 1px solid var(--vscode-button-border, transparent);
|
|
border-radius: 3px;
|
|
padding: 0.1em 0.55em;
|
|
background: var(--vscode-button-secondaryBackground);
|
|
color: var(--vscode-button-secondaryForeground);
|
|
}
|
|
#cw-header button:hover:not(:disabled) { background: var(--vscode-button-secondaryHoverBackground); }
|
|
#cw-header button:disabled { opacity: 0.5; cursor: default; }
|
|
|
|
/* F10 interactive review — annotations toggle + ✓/✗ proposal blocks. */
|
|
#cw-toggle { display: inline-flex; align-items: center; gap: 0.35em; cursor: pointer; }
|
|
.cw-proposal {
|
|
position: relative;
|
|
border-left: 3px solid var(--vscode-panel-border, #555);
|
|
background: color-mix(in srgb, var(--vscode-foreground) 5%, transparent);
|
|
padding: 0.4em 0.6em; margin: 0.4em 0; border-radius: 3px;
|
|
}
|
|
.cw-proposal-unanchored { border-left-style: dashed; opacity: 0.85; }
|
|
.cw-actions { position: absolute; top: 0.2em; right: 0.4em; display: inline-flex; gap: 0.25em; }
|
|
.cw-actions button {
|
|
cursor: pointer; border: 1px solid var(--vscode-button-border, transparent);
|
|
border-radius: 3px; font-size: 0.9em; line-height: 1; padding: 0.1em 0.35em;
|
|
background: var(--vscode-button-secondaryBackground); color: var(--vscode-button-secondaryForeground);
|
|
}
|
|
.cw-accept:hover { background: var(--vscode-testing-iconPassed, #2ea043); color: #fff; }
|
|
.cw-reject:hover { background: var(--vscode-errorForeground, #f14c4c); color: #fff; }
|
|
.cw-btngroup { display: inline-flex; }
|
|
.cw-btngroup .cw-caret { border-left: none; padding: 0.1em 0.25em; }
|
|
.cw-actions .cw-accept { font-weight: 600; }
|
|
.cw-accept:hover, .cw-btngroup:has(.cw-accept) .cw-caret:hover { background: var(--vscode-testing-iconPassed, #2ea043); color: #fff; }
|
|
.cw-reject:hover, .cw-btngroup:has(.cw-reject) .cw-caret:hover { background: var(--vscode-errorForeground, #f14c4c); color: #fff; }
|
|
|
|
/* F7.1 (#22) intra-diagram mermaid diff legend. */
|
|
.cw-mermaid-legend { display: flex; gap: 0.6rem; font-size: 0.75em; opacity: 0.85; margin: 0.2rem 0 0.6rem; }
|
|
.cw-mermaid-legend .cw-leg { padding: 0 0.4em; border-radius: 3px; border: 1px solid; }
|
|
.cw-mermaid-legend .cw-leg-add { color: #2ea043; border-color: #2ea043; }
|
|
.cw-mermaid-legend .cw-leg-chg { color: #d29922; border-color: #d29922; }
|
|
.cw-mermaid-legend .cw-leg-rem { color: #808080; border-color: #808080; border-style: dashed; }
|