summaryrefslogtreecommitdiffstats
path: root/cgit.css
diff options
context:
space:
mode:
Diffstat (limited to 'cgit.css')
-rw-r--r--cgit.css1304
1 files changed, 1304 insertions, 0 deletions
diff --git a/cgit.css b/cgit.css
new file mode 100644
index 0000000..de2e078
--- /dev/null
+++ b/cgit.css
@@ -0,0 +1,1304 @@
+/* =============================================================
+ cgit-theme-danix
+ Design system: danix.xyz / danix2-hugo-theme
+ ============================================================= */
+
+/* ---- Custom properties ---- */
+:root {
+ --bg: #060b10;
+ --bg2: #0c1520;
+ --bg2-rgb: 12, 21, 32;
+ --surface: #101e2d;
+ --border: #182840;
+ --accent: #a855f7;
+ --accent-rgb: 168, 85, 247;
+ --accent2: #00ff88;
+ --text: #c4d6e8;
+ --text-dim: #7a9bb8;
+ --muted: #304860;
+ --diff-add-bg: rgba(166, 218, 149, 0.08);
+ --diff-add-ln: rgba(166, 218, 149, 0.06);
+ --diff-del-bg: rgba(237, 135, 150, 0.08);
+ --diff-del-ln: rgba(237, 135, 150, 0.06);
+ --diff-hunk-bg: rgba(168, 85, 247, 0.06);
+ --diff-add-text: #a6da95;
+ --diff-del-text: #ed8796;
+
+ /* Catppuccin Macchiato syntax token colors */
+ --ctp-mauve: #c6a0f6;
+ --ctp-green: #a6da95;
+ --ctp-peach: #f5a97f;
+ --ctp-overlay: #6e738d;
+ --ctp-blue: #8aadf4;
+ --ctp-sky: #91d7e3;
+ --ctp-yellow: #eed49f;
+ --ctp-pink: #f5bde6;
+ --ctp-maroon: #ee99a0;
+ --ctp-red: #ed8796;
+ --ctp-teal: #8bd5ca;
+ --ctp-text: #cad3f5;
+}
+
+/* ---- Reset & base ---- */
+*, *::before, *::after {
+ box-sizing: border-box;
+}
+
+html {
+ overflow-x: hidden;
+}
+
+body {
+ background-color: var(--bg);
+ color: var(--text);
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 16px;
+ line-height: 1.7;
+ margin: 0;
+ padding: 0;
+ overflow-x: hidden;
+}
+
+a {
+ color: var(--accent);
+ text-decoration: none;
+}
+
+a:hover {
+ opacity: 0.8;
+}
+
+img {
+ max-width: 100%;
+}
+
+/* ---- Outer wrapper ---- */
+div#cgit {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+}
+
+/* =============================================================
+ HEADER
+ ============================================================= */
+
+table#header {
+ width: 100%;
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ background: rgba(var(--bg2-rgb), 0.88);
+ backdrop-filter: blur(10px);
+ -webkit-backdrop-filter: blur(10px);
+ border-bottom: 1px solid var(--border);
+ box-shadow: 0 0 20px rgba(var(--accent-rgb), 0.08);
+ border-collapse: collapse;
+ padding: 0 32px;
+}
+
+table#header td {
+ padding: 14px 8px;
+ vertical-align: middle;
+ border: none;
+ background: transparent;
+}
+
+table#header td.logo {
+ padding-left: 32px;
+ width: 1%;
+ white-space: nowrap;
+}
+
+table#header td.logo a {
+ display: block;
+}
+
+table#header td.logo img {
+ height: 40px;
+ width: 40px;
+ min-width: 40px;
+ display: block;
+}
+
+table#header td.main {
+ padding-left: 16px;
+}
+
+table#header td.main a {
+ font-family: 'Oxanium', monospace;
+ font-weight: 700;
+ font-size: 22px;
+ color: var(--accent);
+ letter-spacing: 0.03em;
+ text-decoration: none;
+}
+
+table#header td.main a:hover {
+ opacity: 0.85;
+}
+
+table#header td.sub {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ padding-left: 24px;
+}
+
+table#header td.sub a {
+ color: var(--text-dim);
+}
+
+table#header td.form {
+ text-align: right;
+ padding-right: 32px;
+ width: 1%;
+ white-space: nowrap;
+}
+
+/* Search form in header */
+table#header td.form form {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+table#header td.form input[type="text"],
+table#header td.form input[name="q"] {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ padding: 6px 12px;
+ color: var(--text);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+ width: 200px;
+ outline: none;
+ transition: border-color 0.15s;
+}
+
+table#header td.form input[type="text"]:focus,
+table#header td.form input[name="q"]:focus {
+ border-color: rgba(var(--accent-rgb), 0.5);
+}
+
+table#header td.form input[type="text"]::placeholder,
+table#header td.form input[name="q"]::placeholder {
+ color: var(--text-dim);
+}
+
+table#header td.form input[type="submit"],
+table#header td.form button {
+ background: var(--accent);
+ color: #fff;
+ border: none;
+ border-radius: 4px;
+ padding: 6px 12px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ cursor: pointer;
+ transition: opacity 0.15s;
+}
+
+table#header td.form input[type="submit"]:hover,
+table#header td.form button:hover {
+ opacity: 0.85;
+}
+
+table#header td.form select {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ padding: 6px 8px;
+ color: var(--text);
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ outline: none;
+}
+
+/* =============================================================
+ NAVIGATION TABS
+ ============================================================= */
+
+table.tabs {
+ width: 100%;
+ border-collapse: collapse;
+ border-bottom: 1px solid var(--border);
+ background: var(--bg2);
+}
+
+table.tabs td,
+table.tabs th {
+ padding: 0;
+ border: none;
+ background: transparent;
+}
+
+table.tabs tr > td:first-child,
+table.tabs tr > th:first-child {
+ padding-left: 32px;
+}
+
+table.tabs td a,
+table.tabs th a {
+ display: inline-block;
+ padding: 10px 20px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 15px;
+ color: var(--text-dim);
+ text-decoration: none;
+ border-bottom: 2px solid transparent;
+ transition: color 0.15s, border-color 0.15s;
+}
+
+table.tabs td a:hover,
+table.tabs th a:hover {
+ color: var(--text);
+ opacity: 1;
+}
+
+table.tabs td a.active,
+table.tabs th a.active {
+ color: var(--accent);
+ border-bottom-color: var(--accent);
+ font-weight: 600;
+}
+
+/* Right-aligned form in tabs (branch selector + index search) */
+table.tabs .right,
+table.tabs td.form {
+ text-align: right;
+}
+
+table.tabs .right form,
+table.tabs td.form form {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ padding: 6px 16px;
+ justify-content: flex-end;
+}
+
+table.tabs .right select,
+table.tabs .right input[type="text"],
+table.tabs td.form select,
+table.tabs td.form input[type="text"],
+table.tabs td.form input[type="search"] {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ padding: 4px 8px;
+ color: var(--text);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ outline: none;
+}
+
+table.tabs .right input[type="submit"],
+table.tabs td.form input[type="submit"] {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ padding: 4px 10px;
+ color: var(--text-dim);
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 12px;
+ cursor: pointer;
+ transition: border-color 0.15s, color 0.15s;
+}
+
+table.tabs .right input[type="submit"]:hover,
+table.tabs td.form input[type="submit"]:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+}
+
+/* =============================================================
+ PATH BREADCRUMB
+ ============================================================= */
+
+div.path {
+ padding: 10px 32px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ border-bottom: 1px solid var(--border);
+ background: var(--bg2);
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ flex-wrap: wrap;
+}
+
+div.path a {
+ color: var(--accent);
+ text-decoration: none;
+}
+
+div.path a:hover {
+ opacity: 0.8;
+}
+
+/* =============================================================
+ MAIN CONTENT WRAPPER
+ ============================================================= */
+
+div.content {
+ max-width: 980px;
+ margin: 0 auto;
+ padding: 32px 24px;
+ flex: 1;
+ width: 100%;
+}
+
+/* =============================================================
+ REPO LIST PAGE
+ ============================================================= */
+
+table.list {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+table.list th {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ font-weight: 600;
+ color: var(--text-dim);
+ text-align: left;
+ padding: 8px 12px;
+ border-bottom: 2px solid var(--border);
+ background: transparent;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+}
+
+table.list th.left {
+ text-align: left;
+}
+
+table.list th.right {
+ text-align: right;
+}
+
+table.list tr {
+ border-bottom: 1px solid var(--border);
+ transition: background 0.1s;
+}
+
+table.list tr:hover:not(.nohover):not(.nohover-highlight) {
+ background: rgba(var(--accent-rgb), 0.04);
+}
+
+table.list td {
+ padding: 12px 12px;
+ vertical-align: middle;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 15px;
+ color: var(--text);
+ border: none;
+ background: transparent;
+}
+
+/* Section/category header rows */
+table.list tr.nohover-highlight td,
+table.list tr.nohover td.reposection {
+ background: transparent;
+ padding-top: 28px;
+ padding-bottom: 10px;
+ border-bottom: none;
+}
+
+td.reposection {
+ font-family: 'JetBrains Mono', monospace !important;
+ font-size: 13px !important;
+ font-weight: 700 !important;
+ color: var(--accent) !important;
+ letter-spacing: 0.08em;
+ text-align: left !important;
+}
+
+td.reposection::before {
+ content: '# ';
+ opacity: 0.6;
+}
+
+/* Repo name cells */
+td.toplevel-repo,
+td.sublevel-repo {
+ width: 22%;
+}
+
+td.toplevel-repo a,
+td.sublevel-repo a {
+ font-family: 'Oxanium', monospace;
+ font-weight: 600;
+ font-size: 17px;
+ color: var(--accent);
+ text-decoration: none;
+}
+
+td.toplevel-repo a:hover,
+td.sublevel-repo a:hover {
+ opacity: 0.8;
+}
+
+/* Description column — full text color */
+table.list td:nth-child(2):not(.reposection) {
+ color: var(--text);
+ font-size: 15px;
+}
+
+/* Age/date column */
+table.list td.age,
+table.list td:last-child {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--muted);
+ white-space: nowrap;
+ text-align: right;
+}
+
+/* Links column (summary/log/tree pills) */
+table.list td.link,
+table.list td.ls-size {
+ text-align: right;
+ white-space: nowrap;
+}
+
+table.list td.link a {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 11px;
+ color: var(--text-dim);
+ border: 1px solid var(--border);
+ border-radius: 3px;
+ padding: 2px 7px;
+ margin-left: 4px;
+ text-decoration: none;
+ transition: border-color 0.15s, color 0.15s;
+}
+
+table.list td.link a:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ opacity: 1;
+}
+
+/* =============================================================
+ REPO SUMMARY PAGE
+ ============================================================= */
+
+div#summary {
+ margin-bottom: 24px;
+}
+
+/* Summary info table (repo metadata card) */
+div#summary table.list {
+ background: var(--bg2);
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ overflow: hidden;
+ box-shadow: 0 0 20px rgba(var(--accent-rgb), 0.08);
+ margin-bottom: 20px;
+}
+
+div#summary table.list th {
+ background: transparent;
+ font-size: 12px;
+ color: var(--text-dim);
+ text-transform: none;
+ letter-spacing: 0;
+ font-weight: 500;
+ padding: 10px 16px;
+ width: 140px;
+}
+
+div#summary table.list td {
+ padding: 10px 16px;
+ font-size: 15px;
+}
+
+/* Clone URL rows */
+div#summary table.list a[rel="vcs-git"] {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+ color: var(--accent2);
+ word-break: break-all;
+}
+
+/* =============================================================
+ FILE TREE PAGE
+ ============================================================= */
+
+/* Directory links */
+a.ls-dir {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 14px;
+ color: var(--accent);
+ font-weight: 500;
+}
+
+/* Blob/file links */
+a.ls-blob {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 14px;
+ color: var(--text);
+}
+
+a.ls-blob:hover,
+a.ls-dir:hover {
+ color: var(--accent);
+ opacity: 1;
+}
+
+table.list td.ls-mode {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ color: var(--muted);
+ width: 80px;
+}
+
+table.list td.ls-size {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ color: var(--text-dim);
+ text-align: right;
+ width: 80px;
+}
+
+/* =============================================================
+ COMMIT LOG PAGE
+ ============================================================= */
+
+td.logsubject a,
+table.list td a[href*="/commit/"] {
+ font-family: 'Oxanium', monospace;
+ font-weight: 600;
+ font-size: 16px;
+ color: var(--text);
+ text-decoration: none;
+}
+
+td.logsubject a:hover,
+table.list td a[href*="/commit/"]:hover {
+ color: var(--accent);
+ opacity: 1;
+}
+
+/* Commit hash links */
+table.list td a[href*="id="],
+table.list td.logsubject + td a {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ color: var(--accent2);
+}
+
+/* Author column */
+table.list td.author {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ white-space: nowrap;
+}
+
+/* Insertions/deletions */
+span.insertions {
+ color: var(--diff-add-text);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+}
+
+span.deletions {
+ color: var(--diff-del-text);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+}
+
+/* Branch/tag decorations */
+span.decoration {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 11px;
+ padding: 1px 5px;
+ border-radius: 3px;
+ margin-left: 6px;
+}
+
+span.branch-deco {
+ background: rgba(var(--accent-rgb), 0.15);
+ color: var(--accent);
+ border: 1px solid rgba(var(--accent-rgb), 0.3);
+}
+
+span.tag-deco,
+span.tag-annotated-deco {
+ background: rgba(0, 255, 136, 0.12);
+ color: var(--accent2);
+ border: 1px solid rgba(0, 255, 136, 0.3);
+}
+
+span.remote-deco {
+ background: rgba(56, 189, 248, 0.12);
+ color: #38bdf8;
+ border: 1px solid rgba(56, 189, 248, 0.3);
+}
+
+/* =============================================================
+ COMMIT DIFF PAGE
+ ============================================================= */
+
+/* Commit info header */
+div.commit-info,
+table.commit-info {
+ background: var(--bg2);
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 16px 20px;
+ margin-bottom: 16px;
+ box-shadow: 0 0 20px rgba(var(--accent-rgb), 0.06);
+}
+
+div.commit-info td,
+table.commit-info td {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ padding: 4px 8px;
+ border: none;
+ background: transparent;
+}
+
+div.commit-info td.sha1,
+table.commit-info td.sha1 {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ color: var(--accent2);
+}
+
+/* Diffstat header */
+div.diffstat-header {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ padding: 10px 16px;
+ border-bottom: 1px solid var(--border);
+ background: var(--bg2);
+ border-radius: 6px 6px 0 0;
+ border: 1px solid var(--border);
+ border-bottom: none;
+ margin-top: 16px;
+}
+
+div.diffstat-header a {
+ color: var(--accent);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+}
+
+/* Diffstat table */
+table.diffstat {
+ width: 100%;
+ border-collapse: collapse;
+ border: 1px solid var(--border);
+ margin-bottom: 0;
+}
+
+table.diffstat td {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ padding: 6px 12px;
+ border-bottom: 1px solid var(--border);
+ background: var(--surface);
+ color: var(--text-dim);
+}
+
+table.diffstat td a {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+ color: var(--accent);
+}
+
+table.diffstat td.add { color: var(--diff-add-text); }
+table.diffstat td.del { color: var(--diff-del-text); }
+
+/* Diffstat graph bar */
+table.diffstat td div.bar {
+ display: inline-block;
+ height: 8px;
+ border-radius: 2px;
+}
+
+div.diffstat-summary {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ color: var(--text-dim);
+ padding: 8px 12px;
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-top: none;
+ border-radius: 0 0 6px 6px;
+ margin-bottom: 20px;
+}
+
+/* Diff header (filename bar) */
+div.head {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 6px 6px 0 0;
+ padding: 8px 16px;
+ margin-top: 20px;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+ color: var(--text-dim);
+ display: flex;
+ gap: 16px;
+ align-items: center;
+}
+
+div.head a {
+ color: var(--accent);
+ font-weight: 600;
+}
+
+/* Unified diff table */
+table.diff {
+ width: 100%;
+ border-collapse: collapse;
+ border: 1px solid var(--border);
+ border-top: none;
+ border-radius: 0 0 6px 6px;
+ overflow: hidden;
+ margin-bottom: 20px;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 14px;
+ line-height: 1.7;
+}
+
+table.diff td {
+ padding: 0;
+ vertical-align: top;
+ white-space: pre;
+ border: none;
+}
+
+table.diff td.linenum {
+ background: var(--surface);
+ color: var(--muted);
+ padding: 0 12px;
+ text-align: right;
+ user-select: none;
+ -webkit-user-select: none;
+ min-width: 50px;
+ border-right: 1px solid var(--border);
+ font-size: 12px;
+}
+
+table.diff td.linenum a {
+ color: var(--muted);
+ text-decoration: none;
+}
+
+table.diff td.linenum a:hover {
+ color: var(--accent);
+ opacity: 1;
+}
+
+table.diff td.lines {
+ padding: 0 16px;
+ width: 100%;
+ color: var(--text);
+}
+
+/* Added lines */
+table.diff tr.add,
+table.diff td.add {
+ background: var(--diff-add-bg);
+ color: var(--diff-add-text);
+}
+
+table.diff tr.add td.linenum,
+table.diff td.add.linenum {
+ background: var(--diff-add-ln);
+ color: var(--diff-add-text);
+ opacity: 0.7;
+}
+
+/* Removed lines */
+table.diff tr.del,
+table.diff td.del {
+ background: var(--diff-del-bg);
+ color: var(--diff-del-text);
+}
+
+table.diff tr.del td.linenum,
+table.diff td.del.linenum {
+ background: var(--diff-del-ln);
+ color: var(--diff-del-text);
+ opacity: 0.7;
+}
+
+/* Hunk headers (@@ lines) */
+div.hunk,
+table.diff tr.hunk,
+table.diff td.hunk {
+ background: var(--diff-hunk-bg);
+ color: var(--muted);
+ font-style: italic;
+}
+
+/* Context lines */
+table.diff tr.ctx td,
+table.diff td.ctx {
+ color: var(--text);
+}
+
+/* =============================================================
+ FILE BLOB PAGE
+ ============================================================= */
+
+table.blob {
+ width: 100%;
+ border-collapse: collapse;
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ overflow: hidden;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 14px;
+ line-height: 1.8;
+}
+
+table.blob td {
+ padding: 0;
+ vertical-align: top;
+ border: none;
+}
+
+/* Line number column */
+td.linenumbers {
+ background: var(--surface);
+ color: var(--muted);
+ text-align: right;
+ user-select: none;
+ -webkit-user-select: none;
+ border-right: 1px solid var(--border);
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.linenumbers a {
+ display: block;
+ padding: 0 14px;
+ color: var(--muted);
+ text-decoration: none;
+ font-size: 13px;
+ line-height: 1.8;
+}
+
+td.linenumbers a:hover {
+ color: var(--accent);
+ opacity: 1;
+}
+
+td.linenumbers a:target {
+ background: rgba(var(--accent-rgb), 0.1);
+ color: var(--accent);
+}
+
+/* Code column */
+td.lines {
+ padding: 0;
+ width: 100%;
+}
+
+td.lines pre,
+td.lines pre code {
+ margin: 0;
+ padding: 0 16px;
+ background: transparent;
+ border: none;
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 14px;
+ line-height: 1.8;
+ color: var(--text);
+ white-space: pre;
+ overflow-x: auto;
+}
+
+/* =============================================================
+ PYGMENTS / SYNTAX HIGHLIGHTING (Catppuccin Macchiato)
+ ============================================================= */
+
+/* Base highlight wrapper */
+.highlight,
+.highlight pre {
+ background: transparent;
+ color: var(--ctp-text);
+}
+
+/* Keywords */
+.highlight .k,
+.highlight .kc,
+.highlight .kd,
+.highlight .kn,
+.highlight .kp,
+.highlight .kr,
+.highlight .kt {
+ color: var(--ctp-mauve);
+ font-weight: 500;
+}
+
+/* Strings */
+.highlight .s,
+.highlight .sa,
+.highlight .sb,
+.highlight .sc,
+.highlight .dl,
+.highlight .sd,
+.highlight .s1,
+.highlight .s2,
+.highlight .se,
+.highlight .sh,
+.highlight .si,
+.highlight .sx,
+.highlight .sr,
+.highlight .ss {
+ color: var(--ctp-green);
+}
+
+/* Numbers */
+.highlight .m,
+.highlight .mb,
+.highlight .mf,
+.highlight .mh,
+.highlight .mi,
+.highlight .il,
+.highlight .mo {
+ color: var(--ctp-peach);
+}
+
+/* Comments */
+.highlight .c,
+.highlight .c1,
+.highlight .cm,
+.highlight .cs,
+.highlight .cp,
+.highlight .cpf {
+ color: var(--ctp-overlay);
+ font-style: italic;
+}
+
+/* Operators */
+.highlight .o,
+.highlight .ow {
+ color: var(--ctp-sky);
+}
+
+/* Names */
+.highlight .n { color: var(--ctp-text); }
+.highlight .na { color: var(--ctp-yellow); }
+.highlight .nb { color: var(--ctp-blue); }
+.highlight .nc { color: var(--ctp-yellow); }
+.highlight .nd { color: var(--ctp-pink); }
+.highlight .ne { color: var(--ctp-maroon); }
+.highlight .nf,
+.highlight .fm { color: var(--ctp-blue); }
+.highlight .ni { color: var(--ctp-text); }
+.highlight .nl { color: var(--ctp-teal); }
+.highlight .nn { color: var(--ctp-yellow); }
+.highlight .nt { color: var(--ctp-mauve); }
+.highlight .nv,
+.highlight .vc,
+.highlight .vg,
+.highlight .vi { color: var(--ctp-text); }
+
+/* Punctuation */
+.highlight .p { color: var(--ctp-text); }
+
+/* Generic (diff tokens from Pygments) */
+.highlight .gd {
+ color: var(--ctp-red);
+ background: rgba(237, 135, 150, 0.1);
+}
+.highlight .gi {
+ color: var(--ctp-green);
+ background: rgba(166, 218, 149, 0.1);
+}
+.highlight .gh {
+ color: #b7bdf8;
+ font-weight: bold;
+}
+.highlight .gu { color: var(--ctp-overlay); }
+.highlight .ge { font-style: italic; }
+.highlight .gs { font-weight: bold; }
+
+/* Error */
+.highlight .err { color: var(--ctp-red); }
+
+/* =============================================================
+ FOOTER
+ ============================================================= */
+
+div.footer {
+ border-top: 1px solid var(--border);
+ background: rgba(var(--bg2-rgb), 0.6);
+ padding: 20px 32px;
+ margin-top: auto;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--muted);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ gap: 8px;
+}
+
+div.footer a {
+ color: var(--text-dim);
+ text-decoration: none;
+}
+
+div.footer a:hover {
+ color: var(--accent);
+ opacity: 1;
+}
+
+/* =============================================================
+ PAGINATION
+ ============================================================= */
+
+ul.pager {
+ list-style: none;
+ padding: 0;
+ margin: 24px 0 0;
+ display: flex;
+ gap: 8px;
+ align-items: center;
+}
+
+ul.pager li a {
+ display: inline-block;
+ padding: 6px 14px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ text-decoration: none;
+ transition: border-color 0.15s, color 0.15s;
+}
+
+ul.pager li a:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ opacity: 1;
+}
+
+/* =============================================================
+ ERROR / NOTICES
+ ============================================================= */
+
+div.error {
+ background: rgba(239, 68, 68, 0.08);
+ border: 1px solid rgba(239, 68, 68, 0.3);
+ border-left: 4px solid #ef4444;
+ border-radius: 4px;
+ padding: 12px 16px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 15px;
+ color: #ef4444;
+ margin: 16px 0;
+}
+
+/* =============================================================
+ CGIT PANEL (view controls)
+ ============================================================= */
+
+div.cgit-panel {
+ background: var(--bg2);
+ border: 1px solid var(--border);
+ border-radius: 4px;
+ padding: 8px 14px;
+ margin-bottom: 16px;
+ display: flex;
+ gap: 12px;
+ align-items: center;
+ flex-wrap: wrap;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 13px;
+ color: var(--text-dim);
+}
+
+div.cgit-panel select,
+div.cgit-panel input[type="text"] {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 3px;
+ padding: 4px 8px;
+ color: var(--text);
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 12px;
+ outline: none;
+}
+
+div.cgit-panel input[type="submit"] {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 3px;
+ padding: 4px 10px;
+ color: var(--text-dim);
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 12px;
+ cursor: pointer;
+ transition: border-color 0.15s, color 0.15s;
+}
+
+div.cgit-panel input[type="submit"]:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+}
+
+/* =============================================================
+ MISC
+ ============================================================= */
+
+/* Binary blob */
+table.bin-blob {
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 16px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+}
+
+/* Commit log message rows */
+td.logmsg {
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 14px;
+ color: var(--text-dim);
+ padding: 4px 12px 12px !important;
+ white-space: pre-wrap;
+}
+
+/* About page / README */
+div#readme {
+ background: var(--bg2);
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 24px 28px;
+ margin-top: 20px;
+ font-family: 'IBM Plex Sans', sans-serif;
+ font-size: 15px;
+ line-height: 1.75;
+ color: var(--text);
+}
+
+div#readme h1,
+div#readme h2,
+div#readme h3,
+div#readme h4 {
+ font-family: 'Oxanium', monospace;
+ color: var(--text);
+ margin-top: 1.5em;
+ margin-bottom: 0.5em;
+}
+
+div#readme h1 { font-size: 26px; border-bottom: 1px solid var(--border); padding-bottom: 8px; }
+div#readme h2 { font-size: 20px; }
+div#readme h3 { font-size: 17px; }
+
+div#readme a { color: var(--accent); }
+
+div#readme code {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 3px;
+ padding: 1px 5px;
+ color: var(--accent2);
+}
+
+div#readme pre {
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ padding: 16px;
+ overflow-x: auto;
+}
+
+div#readme pre code {
+ background: transparent;
+ border: none;
+ padding: 0;
+ color: var(--text);
+ font-size: 13px;
+}
+
+div#readme blockquote {
+ border-left: 4px solid var(--accent);
+ margin: 16px 0;
+ padding: 8px 16px;
+ background: rgba(var(--accent-rgb), 0.06);
+ color: var(--text-dim);
+}
+
+/* Tag list / refs */
+table.list td a[href*="/tag/"],
+table.list td a[href*="/refs/"] {
+ font-family: 'JetBrains Mono', monospace;
+ font-size: 13px;
+}
+
+/* Responsive: smaller viewports */
+@media (max-width: 768px) {
+ div.content {
+ padding: 20px 16px;
+ }
+
+ table#header {
+ padding: 0 16px;
+ }
+
+ table#header td.logo {
+ padding-left: 16px;
+ }
+
+ table#header td.main a {
+ font-size: 18px;
+ }
+
+ table#header td.form {
+ display: none;
+ }
+
+ div.path {
+ padding: 8px 16px;
+ }
+
+ div.footer {
+ padding: 16px;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 4px;
+ }
+
+ table.diff,
+ table.blob {
+ font-size: 12px;
+ }
+
+ td.toplevel-repo a,
+ td.sublevel-repo a {
+ font-size: 15px;
+ }
+}
+
+/* Respect motion preferences */
+@media (prefers-reduced-motion: reduce) {
+ *, *::before, *::after {
+ transition-duration: 0.01ms !important;
+ animation-duration: 0.01ms !important;
+ }
+}