/* 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; }