diff --git a/frontend/src/App.css b/frontend/src/App.css
index 96dba6d..1a6ae49 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -1845,8 +1845,8 @@ a.app-footer__repo:hover {
.technique-columns {
display: grid;
- grid-template-columns: 1fr 22rem;
- gap: 2rem;
+ grid-template-columns: 1fr 16rem;
+ gap: 1.5rem;
align-items: start;
}
@@ -1861,6 +1861,7 @@ a.app-footer__repo:hover {
top: 3.5rem; /* below sticky title bar */
max-height: calc(100vh - 4rem);
overflow-y: auto;
+ margin-left: auto; /* right-align within column */
}
@media (max-width: 768px) {
@@ -2108,7 +2109,7 @@ a.app-footer__repo:hover {
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
- color: #c084fc;
+ color: var(--color-text-secondary);
margin-bottom: 0.75rem;
}
diff --git a/frontend/src/pages/TechniquePage.tsx b/frontend/src/pages/TechniquePage.tsx
index 8e473a3..5e8e34c 100644
--- a/frontend/src/pages/TechniquePage.tsx
+++ b/frontend/src/pages/TechniquePage.tsx
@@ -314,105 +314,6 @@ export default function TechniquePage() {
- {/* Stats + version switcher */}
-
- {(() => {
- const sourceCount = new Set(
- technique.key_moments
- .map((km) => km.video_filename)
- .filter(Boolean),
- ).size;
- const momentCount = technique.key_moments.length;
- const updated = new Date(technique.updated_at).toLocaleDateString(
- "en-US",
- { year: "numeric", month: "short", day: "numeric" },
- );
- const parts = [
- `Compiled from ${sourceCount} source${sourceCount !== 1 ? "s" : ""}`,
- `${momentCount} key moment${momentCount !== 1 ? "s" : ""}`,
- ];
- if (technique.version_count > 0) {
- parts.push(
- `${technique.version_count} version${technique.version_count !== 1 ? "s" : ""}`,
- );
- }
- parts.push(`Last updated ${updated}`);
- return parts.join(" · ");
- })()}
-
-
-
- {versions.length > 0 && (
-
-
-
- {versionLoading && (
- Loading…
- )}
-
- )}
-
-
- {/* Pipeline metadata for historical versions */}
- {isHistorical && versionDetail.pipeline_metadata && (
-
-
Pipeline metadata (v{versionDetail.version_number})
-
- {"model" in versionDetail.pipeline_metadata && (
-
- Model
-
- {String(versionDetail.pipeline_metadata.model)}
-
-
- )}
- {"captured_at" in versionDetail.pipeline_metadata && (
-
- Captured
-
- {formatDate(String(versionDetail.pipeline_metadata.captured_at))}
-
-
- )}
- {typeof versionDetail.pipeline_metadata.prompt_hashes === "object" &&
- versionDetail.pipeline_metadata.prompt_hashes !== null && (
-
-
Prompt hashes
-
- {Object.entries(
- versionDetail.pipeline_metadata.prompt_hashes as Record<
- string,
- string
- >,
- ).map(([file, hash]) => (
-
-
- {file.replace(/^.*\//, "")}
-
-
- {hash.slice(0, 12)}…
-
-
- ))}
-
-
- )}
-
-
- )}
-
{/* Report modal */}
{showReport && (
)}
- {/* Tags + plugin pills */}
- {((displayTags && displayTags.length > 0) || (displayPlugins && displayPlugins.length > 0)) && (
-
- {displayTags && displayTags.map((tag) => (
-
- {tag}
-
- ))}
- {displayPlugins && displayPlugins.length > 0 && displayPlugins.map((plugin) => (
-
- {plugin}
-
- ))}
-
- )}
-
{/* Two-column layout: main content + ToC sidebar */}
+ {/* Stats + version switcher */}
+
+ {(() => {
+ const sourceCount = new Set(
+ technique.key_moments
+ .map((km) => km.video_filename)
+ .filter(Boolean),
+ ).size;
+ const momentCount = technique.key_moments.length;
+ const updated = new Date(technique.updated_at).toLocaleDateString(
+ "en-US",
+ { year: "numeric", month: "short", day: "numeric" },
+ );
+ const parts = [
+ `Compiled from ${sourceCount} source${sourceCount !== 1 ? "s" : ""}`,
+ `${momentCount} key moment${momentCount !== 1 ? "s" : ""}`,
+ ];
+ if (technique.version_count > 0) {
+ parts.push(
+ `${technique.version_count} version${technique.version_count !== 1 ? "s" : ""}`,
+ );
+ }
+ parts.push(`Last updated ${updated}`);
+ return parts.join(" · ");
+ })()}
+
+
+
+ {versions.length > 0 && (
+
+
+
+ {versionLoading && (
+ Loading…
+ )}
+
+ )}
+
+
+ {/* Pipeline metadata for historical versions */}
+ {isHistorical && versionDetail.pipeline_metadata && (
+
+
Pipeline metadata (v{versionDetail.version_number})
+
+ {"model" in versionDetail.pipeline_metadata && (
+
+ Model
+
+ {String(versionDetail.pipeline_metadata.model)}
+
+
+ )}
+ {"captured_at" in versionDetail.pipeline_metadata && (
+
+ Captured
+
+ {formatDate(String(versionDetail.pipeline_metadata.captured_at))}
+
+
+ )}
+ {typeof versionDetail.pipeline_metadata.prompt_hashes === "object" &&
+ versionDetail.pipeline_metadata.prompt_hashes !== null && (
+
+
Prompt hashes
+
+ {Object.entries(
+ versionDetail.pipeline_metadata.prompt_hashes as Record<
+ string,
+ string
+ >,
+ ).map(([file, hash]) => (
+
+
+ {file.replace(/^.*\//, "")}
+
+
+ {hash.slice(0, 12)}…
+
+
+ ))}
+
+
+ )}
+
+
+ )}
+
+ {/* Tags + plugin pills */}
+ {((displayTags && displayTags.length > 0) || (displayPlugins && displayPlugins.length > 0)) && (
+
+ {displayTags && displayTags.map((tag) => (
+
+ {tag}
+
+ ))}
+ {displayPlugins && displayPlugins.length > 0 && displayPlugins.map((plugin) => (
+
+ {plugin}
+
+ ))}
+
+ )}
+
{/* Summary */}
{displaySummary && (