:root {
  --font-main: Verdana, sans-serif;
  --font-mono: monospace;
  --font-scale: 1em;
  --background-color: #fff;
  --heading-color: #222;
  --text-color: #444;
  --link-color: #3273dc;
  --visited-color: #8b6fcb;
  --code-background-color: #f2f2f2;
  --code-color: #222;
  --border-color: #e0e0e0;
  --hover-bg: #f8f8f8;
  --hover-bg-alt: #f0f0f0;
  --table-header-bg: #fafafa;
  --diff-add-bg: #e6ffec;
  --diff-del-bg: #ffebe9;
  --diff-add-color: #116329;
  --diff-del-color: #82071e;
  --diff-hunk-bg: #ddf4ff;
  --diff-hunk-color: #0550ae;
  --diff-head-bg: #f0f0f0;
  --deco-head-bg: #ffdddd;
  --deco-head-border: #cc5555;
  --deco-branch-bg: #ddffdd;
  --deco-branch-border: #55aa55;
  --deco-tag-bg: #ffffdd;
  --deco-tag-border: #aaaa55;
  --deco-tag-annotated-bg: #ffeecc;
  --deco-tag-annotated-border: #aa8844;
  --deco-remote-bg: #ddddff;
  --deco-remote-border: #5555aa;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #01242e;
    --heading-color: #eee;
    --text-color: #ddd;
    --link-color: #8cc2dd;
    --visited-color: #8b6fcb;
    --code-background-color: #000;
    --code-color: #ddd;
    --border-color: #1a3a4a;
    --hover-bg: #02303d;
    --hover-bg-alt: #023545;
    --table-header-bg: #012a36;
    --diff-add-bg: #0d2818;
    --diff-del-bg: #2d0a0a;
    --diff-add-color: #56d364;
    --diff-del-color: #f85149;
    --diff-hunk-bg: #051d3a;
    --diff-hunk-color: #58a6ff;
    --diff-head-bg: #012a36;
    --deco-head-bg: #4a1a1a;
    --deco-head-border: #cc5555;
    --deco-branch-bg: #1a3a1a;
    --deco-branch-border: #55aa55;
    --deco-tag-bg: #3a3a1a;
    --deco-tag-border: #aaaa55;
    --deco-tag-annotated-bg: #3a2a1a;
    --deco-tag-annotated-border: #aa8844;
    --deco-remote-bg: #1a1a4a;
    --deco-remote-border: #5555aa;
  }
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background-color: var(--background-color);
  color: var(--text-color);
  font-family: var(--font-main);
  font-size: var(--font-scale);
  line-height: 1.5;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

a { color: var(--link-color); text-decoration: none; cursor: pointer; }
a:visited { color: var(--visited-color); }
a:hover { text-decoration: underline; }

h1, h2, h3, h4, h5, h6 {
  color: var(--heading-color);
  font-family: var(--font-main);
}

pre, code { font-family: var(--font-mono); }
pre { overflow-x: auto; margin: 0; }
img { max-width: 100%; border: none; }
table { border-collapse: collapse; }

hr {
  border: 0;
  border-top: 1px dashed var(--border-color);
}

input, select, textarea {
  font-family: var(--font-main);
  font-size: 0.9em;
  padding: 4px 8px;
  border: 1px solid var(--border-color);
  border-radius: 3px;
  background-color: var(--background-color);
  color: var(--text-color);
}

input[type="submit"] {
  cursor: pointer;
  background-color: var(--table-header-bg);
  padding: 4px 12px;
}

input[type="submit"]:hover {
  background-color: var(--hover-bg);
}

/* ── cgit wrapper ── */

#cgit {
  padding: 20px;
  font-size: 10pt;
}

/* ── Site header (injected via header include) ── */

.site-header { padding: 0 2em; }
.site-header .title { text-decoration: none; }
.site-header .title:hover { text-decoration: none; }

.site-header .title h2 {
  font-size: 1.5em;
  margin-bottom: 0;
  color: var(--heading-color);
}

.site-header .tagline {
  margin-top: 0.2em;
  margin-bottom: 1.2em;
  font-size: 0.9em;
}

.site-header nav { margin-bottom: 1.2em; }

.site-header nav a {
  margin-right: 8px;
  color: var(--link-color);
  text-decoration: none;
}

.site-header nav a:hover { text-decoration: underline; }

/* ── cgit header ── */

table#header { width: 100%; margin-bottom: 1em; }
table#header td.logo { display: none; }

table#header td.main {
  font-size: 250%;
  padding-left: 10px;
  white-space: nowrap;
}

table#header td.main a {
  color: var(--heading-color);
  text-decoration: none;
}

table#header td.main a:hover { text-decoration: none; }

table#header td.form {
  text-align: right;
  vertical-align: bottom;
  padding-right: 1em;
  padding-bottom: 2px;
  white-space: nowrap;
}

table#header td.form form,
table#header td.form input,
table#header td.form select {
  font-size: 90%;
}

table#header td.sub {
  color: var(--text-color);
  border-top: solid 1px var(--border-color);
  padding-left: 10px;
}

table#header td.sub a { color: var(--link-color); }

/* ── Tabs ── */

table.tabs {
  width: 100%;
  border-bottom: solid 3px var(--border-color);
  margin-top: 2em;
  margin-bottom: 0;
}

table.tabs td {
  padding: 0 1em;
  vertical-align: bottom;
}

table.tabs td a {
  color: var(--text-color);
  text-decoration: none;
  font-size: 110%;
  padding: 2px 0.75em;
}

table.tabs td a:hover { text-decoration: underline; }

table.tabs td a.active {
  color: var(--heading-color);
  background-color: var(--border-color);
}

table.tabs td.form {
  text-align: right;
}

table.tabs td.form form {
  padding-bottom: 2px;
  font-size: 90%;
  white-space: nowrap;
}

table.tabs td.form input,
table.tabs td.form select {
  font-size: 90%;
}

/* ── Path ── */

div.path {
  margin: 0;
  padding: 5px 2em 2px 2em;
  color: var(--heading-color);
  background-color: var(--table-header-bg);
}

/* ── Content ── */

div.content {
  margin: 0;
  padding: 2em;
  border-bottom: solid 3px var(--border-color);
  overflow-x: auto;
}

/* ── List tables (repos, log, tree, refs) ── */

table.list { width: 100%; border: none; }

table.list tr { background: var(--background-color); }
table.list tr.logheader { background: var(--table-header-bg); }
table.list tr:nth-child(even) { background: var(--hover-bg); }
table.list tr:nth-child(odd) { background: var(--background-color); }
table.list tr:hover { background: var(--hover-bg-alt); }
table.list tr.nohover { background: var(--background-color); }
table.list tr.nohover:hover { background: var(--background-color); }
table.list tr.nohover-highlight:hover:nth-child(even) { background: var(--hover-bg); }
table.list tr.nohover-highlight:hover:nth-child(odd) { background: var(--background-color); }

table.list th {
  font-weight: bold;
  padding: 0.1em 0.5em 0.05em 0.5em;
  vertical-align: baseline;
}

table.list td {
  border: none;
  padding: 0.1em 0.5em;
}

table.list td a { color: var(--link-color); }
table.list td a:hover { color: var(--link-color); text-decoration: underline; }

table.list td a.ls-dir {
  font-weight: bold;
  color: var(--link-color);
}

table.list td.commitgraph {
  font-family: var(--font-mono);
  white-space: pre;
}

table.list td.commitgraph .column1 { color: #a00; }
table.list td.commitgraph .column2 { color: #0a0; }
table.list td.commitgraph .column3 { color: #aa0; }
table.list td.commitgraph .column4 { color: #00a; }
table.list td.commitgraph .column5 { color: #a0a; }
table.list td.commitgraph .column6 { color: #0aa; }

table.list td.logsubject {
  font-family: var(--font-mono);
  font-weight: bold;
}

table.list td.logmsg {
  font-family: var(--font-mono);
  white-space: pre;
  padding: 0 0.5em;
}

table.list td.reposection {
  font-style: italic;
  color: var(--text-color);
  opacity: 0.7;
}

table.list td.sublevel-repo { padding-left: 1.5em; }

a.ls-blob, a.ls-dir, .ls-mod {
  font-family: var(--font-mono);
}

td.ls-size {
  text-align: right;
  font-family: var(--font-mono);
  width: 10em;
}

td.ls-mode {
  font-family: var(--font-mono);
  width: 10em;
}

/* ── Age styling ── */

span.age-mins {
  font-weight: bold;
  color: var(--diff-add-color);
}

span.age-hours { color: var(--diff-add-color); }
span.age-days { color: var(--link-color); }
span.age-weeks { color: var(--text-color); }
span.age-months { color: var(--text-color); opacity: 0.7; }
span.age-years { color: var(--text-color); opacity: 0.5; }

span.insertions { color: var(--diff-add-color); }
span.deletions { color: var(--diff-del-color); }

/* ── Blob / code view ── */

table.blob {
  margin-top: 0.5em;
  border-top: solid 1px var(--border-color);
}

table.blob td.hashes,
table.blob td.lines {
  margin: 0;
  padding: 0 0 0 0.5em;
  vertical-align: top;
  color: var(--code-color);
  font-family: var(--font-mono);
  font-size: 13px;
  line-height: 1.5;
}

table.blob td.linenumbers {
  margin: 0;
  padding: 0 0.5em;
  vertical-align: top;
  text-align: right;
  border-right: 1px solid var(--border-color);
}

table.blob pre {
  padding: 0;
  margin: 0;
  white-space: pre;
  overflow-x: auto;
}

table.blob td.linenumbers a {
  color: var(--text-color);
  opacity: 0.4;
  text-align: right;
  text-decoration: none;
}

table.blob td.linenumbers a:hover {
  opacity: 0.8;
  text-decoration: none;
}

div#blob {
  border: solid 1px var(--border-color);
}

/* ── Blame view ── */

table.blame td.hashes,
table.blame td.lines,
table.blame td.linenumbers {
  padding: 0;
}

table.blame td.hashes div.alt,
table.blame td.lines div.alt {
  padding: 0 0.5em;
}

table.blame td.linenumbers div.alt {
  padding: 0 0.5em 0 0;
}

table.blame div.alt:nth-child(even) { background: var(--hover-bg); }
table.blame div.alt:nth-child(odd) { background: var(--background-color); }

table.blame td.lines > div { position: relative; }
table.blame td.lines > div > pre {
  padding: 0 0 0 0.5em;
  position: absolute;
  top: 0;
}

/* ── Binary blob ── */

table.bin-blob {
  margin-top: 0.5em;
  border: solid 1px var(--border-color);
}

table.bin-blob th {
  font-family: var(--font-mono);
  white-space: pre;
  border: solid 1px var(--border-color);
  padding: 0.5em 1em;
}

table.bin-blob td {
  font-family: var(--font-mono);
  white-space: pre;
  border-left: solid 1px var(--border-color);
  padding: 0 1em;
}

table.nowrap td { white-space: nowrap; }

/* ── Diff (unified) ── */

table.diff { width: 100%; }

table.diff td {
  font-family: var(--font-mono);
  white-space: pre;
}

table.diff td div.head {
  font-weight: bold;
  margin-top: 1em;
  color: var(--heading-color);
}

table.diff td div.hunk {
  color: var(--diff-hunk-color);
}

table.diff td div.add {
  color: var(--diff-add-color);
}

table.diff td div.del {
  color: var(--diff-del-color);
}

/* ── Side-by-side diff ── */

table.ssdiff { width: 100%; }

table.ssdiff td {
  font-size: 75%;
  font-family: var(--font-mono);
  white-space: pre;
  padding: 1px 4px;
  border-left: solid 1px var(--border-color);
  border-right: solid 1px var(--border-color);
}

table.ssdiff td.add {
  color: var(--code-color);
  background: var(--diff-add-bg);
  min-width: 50%;
}

table.ssdiff td.add_dark {
  color: var(--code-color);
  background: var(--diff-add-bg);
  min-width: 50%;
  filter: brightness(0.9);
}

table.ssdiff span.add {
  background: var(--diff-add-bg);
  font-weight: bold;
}

table.ssdiff td.del {
  color: var(--code-color);
  background: var(--diff-del-bg);
  min-width: 50%;
}

table.ssdiff td.del_dark {
  color: var(--code-color);
  background: var(--diff-del-bg);
  min-width: 50%;
  filter: brightness(0.9);
}

table.ssdiff span.del {
  background: var(--diff-del-bg);
  font-weight: bold;
}

table.ssdiff td.changed {
  color: var(--code-color);
  background: var(--deco-tag-bg);
  min-width: 50%;
}

table.ssdiff td.changed_dark {
  color: var(--code-color);
  background: var(--deco-tag-bg);
  min-width: 50%;
  filter: brightness(0.9);
}

table.ssdiff td.lineno {
  color: var(--text-color);
  background: var(--table-header-bg);
  text-align: right;
  width: 3em;
  min-width: 3em;
}

table.ssdiff td.lineno a {
  color: var(--text-color);
  opacity: 0.5;
  text-decoration: none;
}

table.ssdiff td.lineno a:hover { opacity: 0.8; }

table.ssdiff td.hunk {
  color: var(--diff-hunk-color);
  background: var(--diff-hunk-bg);
  border-top: solid 1px var(--border-color);
  border-bottom: solid 1px var(--border-color);
}

table.ssdiff td.head {
  border-top: solid 1px var(--border-color);
  border-bottom: solid 1px var(--border-color);
}

table.ssdiff td.head div.head {
  font-weight: bold;
  color: var(--heading-color);
}

table.ssdiff td.foot {
  border-top: solid 1px var(--border-color);
  border-left: none;
  border-right: none;
  border-bottom: none;
}

table.ssdiff td.space { border: none; }
table.ssdiff td.space div { min-height: 3em; }

/* ── Diffstat ── */

div.diffstat-header {
  font-weight: bold;
  padding-top: 1.5em;
  color: var(--heading-color);
}

table.diffstat {
  border-collapse: collapse;
  border: solid 1px var(--border-color);
  background-color: var(--table-header-bg);
}

table.diffstat th {
  font-weight: normal;
  text-align: left;
  text-decoration: underline;
  padding: 0.1em 1em 0.1em 0.1em;
}

table.diffstat td {
  padding: 0.2em 0.2em 0.1em 0.1em;
  border: none;
}

table.diffstat td.mode { white-space: nowrap; }
table.diffstat td span.modechange { padding-left: 1em; color: var(--diff-del-color); }
table.diffstat td.add a { color: var(--diff-add-color); }
table.diffstat td.del a { color: var(--diff-del-color); }
table.diffstat td.upd a { color: var(--link-color); }

table.diffstat td.graph {
  width: 500px;
  vertical-align: middle;
}

table.diffstat td.graph table { border: none; }
table.diffstat td.graph td { padding: 0; border: 0; height: 7pt; }
table.diffstat td.graph td.add { background-color: var(--diff-add-color); }
table.diffstat td.graph td.rem { background-color: var(--diff-del-color); }

div.diffstat-summary {
  color: var(--text-color);
  opacity: 0.7;
  padding-top: 0.5em;
}

/* ── Commit ── */

table.commit-info {
  border-collapse: collapse;
  margin-top: 1.5em;
}

table.commit-info th {
  text-align: left;
  font-weight: normal;
  padding: 0.1em 1em 0.1em 0.1em;
  vertical-align: top;
}

table.commit-info td {
  font-weight: normal;
  padding: 0.1em 1em 0.1em 0.1em;
}

table.commit-info a { color: var(--link-color); }

div.commit-subject {
  font-weight: bold;
  font-size: 125%;
  margin: 1.5em 0 0.5em 0;
  color: var(--heading-color);
}

div.commit-msg {
  white-space: pre;
  font-family: var(--font-mono);
}

div.notes-header {
  font-weight: bold;
  padding-top: 1.5em;
  color: var(--heading-color);
}

div.notes {
  white-space: pre;
  font-family: var(--font-mono);
  border: solid 1px var(--deco-tag-border);
  background-color: var(--deco-tag-bg);
  padding: 0.3em 2em 0.3em 1em;
  float: left;
}

div.notes-footer { clear: left; }

/* ── cgit panel ── */

div.cgit-panel {
  float: right;
  margin-top: 1.5em;
}

div.cgit-panel table {
  border-collapse: collapse;
  border: solid 1px var(--border-color);
  background-color: var(--table-header-bg);
}

div.cgit-panel th { text-align: center; }
div.cgit-panel td { padding: 0.25em 0.5em; }
div.cgit-panel td.label { padding-right: 0.5em; }
div.cgit-panel td.ctrl { padding-left: 0.5em; }

/* ── Summary ── */

div#summary {
  vertical-align: top;
  margin-bottom: 1em;
}

table#downloads {
  float: right;
  border-collapse: collapse;
  border: solid 1px var(--border-color);
  margin-left: 0.5em;
  margin-bottom: 0.5em;
}

table#downloads th {
  background-color: var(--table-header-bg);
}

/* ── SHA / OIDs ── */

.sha1 {
  font-family: var(--font-mono);
  font-size: 90%;
}

.left { text-align: left; }
.right { text-align: right; }

/* ── Decorations (branch, tag, HEAD badges) ── */

a.deco,
a.branch-deco,
a.tag-deco,
a.tag-annotated-deco,
a.remote-deco {
  color: var(--heading-color);
  margin: 0 0.5em;
  padding: 0 0.25em;
  border-radius: 3px;
  font-size: inherit;
  text-decoration: none;
}

a.deco:hover,
a.branch-deco:hover,
a.tag-deco:hover,
a.tag-annotated-deco:hover,
a.remote-deco:hover {
  text-decoration: none;
  opacity: 0.8;
}

a.deco {
  background-color: var(--deco-head-bg);
  border: solid 1px var(--deco-head-border);
}

a.branch-deco {
  background-color: var(--deco-branch-bg);
  border: solid 1px var(--deco-branch-border);
}

a.tag-deco {
  background-color: var(--deco-tag-bg);
  border: solid 1px var(--deco-tag-border);
}

a.tag-annotated-deco {
  background-color: var(--deco-tag-annotated-bg);
  border: solid 1px var(--deco-tag-annotated-border);
}

a.remote-deco {
  background-color: var(--deco-remote-bg);
  border: solid 1px var(--deco-remote-border);
}

div.commit-subject a.deco,
div.commit-subject a.branch-deco,
div.commit-subject a.tag-deco,
div.commit-subject a.tag-annotated-deco,
div.commit-subject a.remote-deco {
  margin-left: 1em;
  font-size: 75%;
}

/* ── Buttons ── */

a.button { font-size: 80%; padding: 0 0.5em; }
a.primary { font-size: 100%; }
a.secondary { font-size: 90%; }

input#switch-btn { margin: 2px 0 0 0; }

/* ── Pager ── */

ul.pager {
  list-style-type: none;
  text-align: center;
  margin: 1em 0 0 0;
  padding: 0;
}

ul.pager li {
  display: inline-block;
  margin: 0.25em 0.5em;
}

ul.pager a { color: var(--text-color); }
ul.pager .current { font-weight: bold; }

/* ── Stats ── */

table.stats {
  border: solid 1px var(--border-color);
  border-collapse: collapse;
}

table.stats th {
  text-align: left;
  padding: 1px 0.5em;
  background-color: var(--table-header-bg);
  border: solid 1px var(--border-color);
}

table.stats td {
  text-align: right;
  padding: 1px 0.5em;
  border: solid 1px var(--border-color);
}

table.stats td.total { font-weight: bold; text-align: left; }
table.stats td.sum { color: var(--diff-del-color); font-weight: bold; }
table.stats td.left { text-align: left; }

/* ── Graphs ── */

table.vgraph {
  border-collapse: separate;
  border: solid 1px var(--border-color);
  height: 200px;
}

table.vgraph th {
  background-color: var(--table-header-bg);
  font-weight: bold;
  border: solid 1px var(--background-color);
  padding: 1px 0.5em;
}

table.vgraph td { vertical-align: bottom; padding: 0 10px; }
table.vgraph div.bar { background-color: var(--table-header-bg); }

table.hgraph {
  border: solid 1px var(--border-color);
  width: 800px;
}

table.hgraph th {
  background-color: var(--table-header-bg);
  font-weight: bold;
  border: solid 1px var(--border-color);
  padding: 1px 0.5em;
}

table.hgraph td { vertical-align: middle; padding: 2px; }
table.hgraph div.bar { background-color: var(--table-header-bg); height: 1em; }

/* ── Markdown (about pages) ── */

div.markdown { line-height: 1.6; }

div.markdown code {
  background-color: var(--code-background-color);
  color: var(--code-color);
  padding: 2px 4px;
  border-radius: 3px;
  font-size: 0.9em;
}

div.markdown pre {
  background-color: var(--code-background-color);
  color: var(--code-color);
  padding: 12px;
  border-radius: 3px;
  overflow-x: auto;
}

div.markdown pre code { padding: 0; background: none; }

div.markdown blockquote {
  border-left: 3px solid var(--border-color);
  color: var(--text-color);
  padding-left: 16px;
  margin-left: 0;
}

/* ── Error ── */

div.error {
  color: var(--diff-del-color);
  font-weight: bold;
  margin: 1em 2em;
}

/* ── Footers ── */

div.footer {
  margin-top: 0.5em;
  text-align: center;
  font-size: 80%;
  color: var(--text-color);
  opacity: 0.3;
}

div.footer a {
  color: var(--text-color);
  opacity: 0.3;
  text-decoration: none;
}

div.footer a:hover { text-decoration: underline; }

.site-footer {
  text-align: center;
  padding: 25px 0;
  font-size: 0.9em;
}

.site-footer a { color: var(--link-color); }
