// ───────────────────────────────────────────────────────────────────────────── // Page: Diff viewer (.df3-* layout) // File: src/scss/pages/_diff.scss // // STRUCTURAL LAYOUT ONLY — zero colors, zero typography here. // Visual rules live in components/_diff.scss. // Covers: diff.html (shell SSR + diff.ts client-rendered content) // ───────────────────────────────────────────────────────────────────────────── // ── Page skeleton ───────────────────────────────────────────────────────────── .df3-page { display: flex; flex-direction: column; gap: var(--space-3); } // ── Header ──────────────────────────────────────────────────────────────────── .df3-header { display: flex; align-items: center; gap: var(--space-3); padding: 10px 16px; flex-wrap: wrap; } .df3-sha { padding: 2px 7px; } .df3-branch { padding: 2px 8px; } // ── Content (filled by diff.ts) ─────────────────────────────────────────────── .df3-content { display: flex; flex-direction: column; gap: var(--space-3); } .df3-loading { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-6) var(--space-4); justify-content: center; } // ── Stats bar ───────────────────────────────────────────────────────────────── .df3-stats-bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: 12px 16px; flex-wrap: wrap; } .df3-stats-row { display: flex; gap: var(--space-3); flex-wrap: wrap; } .df3-stat { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 14px; min-width: 72px; } .df3-root-pill { padding: 2px 8px; } .df3-stats-meta { display: flex; align-items: center; gap: 6px; } // ── Files list ──────────────────────────────────────────────────────────────── .df3-files { display: flex; flex-direction: column; gap: var(--space-3); } .df3-empty { padding: var(--space-6) var(--space-4); text-align: center; } // ── File card ───────────────────────────────────────────────────────────────── .df3-file-card { overflow: hidden; } .df3-file-hd { display: flex; align-items: center; gap: var(--space-2); padding: 8px 14px; } .df3-file-hd-right { display: flex; align-items: center; gap: var(--space-2); margin-left: auto; } .df3-ext { padding: 1px 5px; } .df3-line-stat { display: flex; gap: 5px; } .df3-no-content { padding: var(--space-3) var(--space-4); } // ── Code wrap ───────────────────────────────────────────────────────────────── .df3-code-wrap { overflow-x: auto; } // ── Diff table ──────────────────────────────────────────────────────────────── .df3-table { width: 100%; border-collapse: collapse; border-spacing: 0; } .df3-ln-sign { padding: 0 6px; width: 16px; text-align: center; vertical-align: top; user-select: none; } .df3-ln-num { padding: 0 10px; width: 1%; white-space: nowrap; text-align: right; vertical-align: top; user-select: none; } .df3-ln-code { padding: 0 14px 0 10px; width: 100%; } // ── Symbol panel ────────────────────────────────────────────────────────────── .df3-sym-panel { overflow: hidden; } .df3-sym-hd { display: flex; align-items: center; gap: 7px; padding: 7px 14px; } .df3-sym-count { padding: 1px 6px; } .df3-sym-body { display: flex; flex-direction: column; padding: 4px 0; } .df3-sym-row { display: flex; align-items: center; gap: 6px; padding: 3px 14px; cursor: pointer; } .df3-sym-child { padding-left: 28px; } .df3-sym-indent { display: flex; align-items: center; flex-shrink: 0; } // ── Kind chips ──────────────────────────────────────────────────────────────── .df3-kind { padding: 1px 4px; }