diff options
-rw-r--r-- | .gitignore | 197 | ||||
-rw-r--r-- | Dockerfile | 59 | ||||
-rw-r--r-- | LICENSE.url | 1 | ||||
-rw-r--r-- | README.url | 1 | ||||
-rw-r--r-- | apache.conf | 19 | ||||
-rw-r--r-- | cgitrc | 44 | ||||
-rw-r--r-- | head-include.html | 19 | ||||
-rwxr-xr-x | md2html.py | 13 | ||||
-rw-r--r-- | theme.css | 1152 |
9 files changed, 1505 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6177465 --- /dev/null +++ b/.gitignore @@ -0,0 +1,197 @@ +# Created by https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim +# Edit at https://www.toptal.com/developers/gitignore?templates=linux,windows,macos,vim + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim +# Created by https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim +# Edit at https://www.toptal.com/developers/gitignore?templates=linux,windows,macos,vim + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..59862b1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,59 @@ +FROM debian:bookworm-slim AS assets + +RUN apt-get update && \ + apt-get install -y --no-install-recommends curl ca-certificates && \ + rm -rf /var/lib/apt/lists/* && \ + find /var/log -type f -name '*.log*' -delete + +RUN mkdir -p /var/www/html/cgit-css && \ + curl -sSL -o /var/www/html/favicon.ico https://git-scm.com/favicon.ico && \ + curl -sSL -o /var/www/html/cgit-css/highlight.min.js https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/highlight.min.js && \ + curl -sSL -o /var/www/html/cgit-css/github.min.css https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/styles/github.min.css && \ + curl -sSL -o /var/www/html/cgit-css/github-dark.min.css https://raw.githubusercontent.com/highlightjs/cdn-release/refs/heads/11-stable/build/styles/github-dark.min.css && \ + sed -i '1s/^/@media screen and (prefers-color-scheme: dark) {/' /var/www/html/cgit-css/github-dark.min.css && echo '}' >> /var/www/html/cgit-css/github-dark.min.css && \ + echo 'User-agent: *\nDisallow: /' >> /var/www/html/robots.txt + +FROM debian:bookworm-slim + +RUN apt-get update && \ + apt-get install -y --no-install-recommends apache2 cgit python3-markdown && \ + rm -rf /var/lib/apt/lists/* && \ + find /var/log -type f -name '*.log*' -delete + +COPY --from=assets /var/www/html /var/www/html +COPY theme.css /var/www/html/cgit-css/ +COPY head-include.html /var/www/html/cgit-css/ +COPY md2html.py /usr/lib/cgit/filters/ +RUN cp /usr/share/cgit/cgit.css /usr/share/cgit/cgit.png /var/www/html/cgit-css/ + +RUN echo 'Listen ${APACHE_PORT}' > /etc/apache2/ports.conf && \ + echo 'ServerName ${APACHE_SERVER_NAME}' >> /etc/apache2/apache2.conf && \ + sed -e '/^User /d' -e '/^Group /d' -e 's;^PidFile .*;PidFile ${APACHE_RUN_DIR}/apache.pid;gi' -e 's;^ErrorLog .*;ErrorLog /dev/stderr;gi' \ + -e 's;Require all granted;Require all denied;gi' -e 's;"^\\\\.ht";"^\\.";g' -i /etc/apache2/apache2.conf && \ + rm -f /etc/apache2/sites-enabled/* /etc/apache2/mods-enabled/* /etc/apache2/conf-enabled/* && \ + ln -s ../mods-available/mpm_event.load /etc/apache2/mods-enabled/mpm_event.load && \ + ln -s ../mods-available/mpm_event.conf /etc/apache2/mods-enabled/mpm_event.conf && \ + ln -s ../mods-available/mime.load /etc/apache2/mods-enabled/mime.load && \ + ln -s ../mods-available/alias.load /etc/apache2/mods-enabled/alias.load && \ + ln -s ../mods-available/filter.load /etc/apache2/mods-enabled/filter.load && \ + ln -s ../mods-available/deflate.load /etc/apache2/mods-enabled/deflate.load && \ + ln -s ../mods-available/deflate.conf /etc/apache2/mods-enabled/deflate.conf && \ + ln -s ../mods-available/headers.load /etc/apache2/mods-enabled/headers.load && \ + ln -s ../mods-available/authn_core.load /etc/apache2/mods-enabled/authn_core.load && \ + ln -s ../mods-available/authz_core.load /etc/apache2/mods-enabled/authz_core.load && \ + ln -s ../mods-available/authn_file.load /etc/apache2/mods-enabled/authn_file.load && \ + ln -s ../mods-available/authz_user.load /etc/apache2/mods-enabled/authz_user.load && \ + ln -s ../mods-available/auth_basic.load /etc/apache2/mods-enabled/auth_basic.load && \ + ln -s ../mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load && \ + echo 'TypesConfig /etc/mime.types\nDeflateAlterETag NoChange' > /etc/apache2/mods-enabled/mime.conf && \ + echo 'ServerTokens Major\nServerSignature Off\nTraceEnable Off' > /etc/apache2/conf-enabled/security.conf && \ + echo 'CustomLog /dev/stdout combined' > /etc/apache2/conf-enabled/access-log.conf + +COPY cgitrc /etc/ +COPY apache.conf /etc/apache2/sites-enabled/ + +ENV APACHE_PORT=8080 +ENV APACHE_RUN_DIR=/dev/shm +ENV APACHE_SERVER_NAME=cgit + +ENTRYPOINT ["/sbin/apache2", "-D", "FOREGROUND"] diff --git a/LICENSE.url b/LICENSE.url new file mode 100644 index 0000000..d56921c --- /dev/null +++ b/LICENSE.url @@ -0,0 +1 @@ +https://www.gnu.org/licenses/agpl-3.0.html diff --git a/README.url b/README.url new file mode 100644 index 0000000..982bec3 --- /dev/null +++ b/README.url @@ -0,0 +1 @@ +http://www.hackitu.de/cgithub/ diff --git a/apache.conf b/apache.conf new file mode 100644 index 0000000..57a9d9d --- /dev/null +++ b/apache.conf @@ -0,0 +1,19 @@ +ScriptSock ${APACHE_RUN_DIR}/cgi.sock + +<VirtualHost *> + DocumentRoot /var/www/html + <Directory "/var/www/html/"> + Require all granted + Header set Cache-Control "public, max-age=3600" + </Directory> + <Directory "/usr/lib/cgit/"> + Require all granted + Header set Cache-Control "private" + </Directory> + + RedirectRelative On + RedirectMatch 302 ^/(cgit)?$ /cgit/ + ScriptAlias /cgit/ "/usr/lib/cgit/cgit.cgi/" + + IncludeOptional /mnt/apache.conf +</VirtualHost> @@ -0,0 +1,44 @@ +root-title=Git Repository Browser +root-desc=cgit web interface +#root-readme= + +css=/cgit-css/cgit.css +logo=/cgit-css/cgit.png +head-include=/var/www/html/cgit-css/head-include.html +robots=noindex, nofollow, noarchive, notranslate + +cache-root=/tmp +cache-size=100 + +enable-blame=1 +enable-commit-graph=0 +enable-index-links=1 +enable-log-filecount=0 +enable-log-linecount=1 +enable-index-owner=0 +enable-remote-branches=1 +max-stats=year + +snapshots=.tar.gz +max-blob-size=1000 +enable-http-clone=0 +#clone-url= +#clone-prefix= + +about-filter=/usr/lib/cgit/filters/md2html.py +mimetype-file=/etc/mime.types +readme=:README.md +readme=:README.txt +readme=:README +readme=:INSTALL.md +readme=:INSTALL.txt +readme=:INSTALL + +strict-export=refs/heads/master +remove-suffix=1 +max-repo-count=100 +#enable-git-config=1 + +include=/mnt/cgitrc + +scan-path=/mnt diff --git a/head-include.html b/head-include.html new file mode 100644 index 0000000..fbc617f --- /dev/null +++ b/head-include.html @@ -0,0 +1,19 @@ +<meta name="viewport" content="width=device-width, initial-scale=1"/> + +<link rel="stylesheet" type="text/css" href="/cgit-css/github.min.css"/> +<link rel="stylesheet" type="text/css" href="/cgit-css/github-dark.min.css"/> + +<link rel="stylesheet" type="text/css" href="/cgit-css/theme.css"/> + +<script> + "use strict"; + function hlBlob() { + const blob = document.querySelector("div#cgit table.blob td.lines pre code"); + const path = document.querySelector("div#cgit div.path a:last-child"); + if (blob !== null && path !== null) { + blob.classList.add("language-" + path.textContent.split(".").pop()); + hljs.highlightElement(blob); + } + } +</script> +<script src="/cgit-css/highlight.min.js" onload="hlBlob()" defer></script> diff --git a/md2html.py b/md2html.py new file mode 100755 index 0000000..ddb87dc --- /dev/null +++ b/md2html.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 + +import markdown +import sys + +sys.stdout.buffer.write(b"<div class=\"markdown-body\">") +markdown.markdownFromFile( + output_format="html", + extensions=["markdown.extensions.fenced_code", + "markdown.extensions.def_list", + "markdown.extensions.tables"] +) +sys.stdout.buffer.write(b"</div>") diff --git a/theme.css b/theme.css new file mode 100644 index 0000000..4c0ff23 --- /dev/null +++ b/theme.css @@ -0,0 +1,1152 @@ +:root { + color-scheme: light dark; + --font-size-small: 0.875rem; + --font-size-header: 2rem; + --size-header: 2.5rem; + --border-radius: 0.4rem; + --content-h-margin: 28px; + --content-v-margin: 2rem; + --inner-pad: 0.5rem; + --inner-small-pad: 0.25rem; + --bg-color: #ffffff; + --text-color: #1f2328; + --light-text-color: #59636e; + --menu-highlight-color: #fd8c73; + --link-color: #0969da; + --header-color: #ffffff; + --header-bg-color: #25292e; + --light-bg-color: #f6f8fa; + --lighter-bg-color: #f0f1f2; + --darker-bg-color: #eaedf0; + --border-color: #d1d9e0; + --hunk-bg-color: #ddf4ff; + --hunk-border-color: #b6e3ff; + --add-bg-color: #dafbe1; + --add-border-color: #aceebb; + --add-text-color: #1f883d; + --del-bg-color: #ffebe9; + --del-border-color: #ffcecb; + --del-text-color: #cf222e; + --change-bg-color: #fff8c5; + --change-border-color: #f0ebbf; +} + +@media screen and (prefers-color-scheme: dark) { + :root { + --bg-color: #0d1117; + --text-color: #f0f6fc; + --light-text-color: #9198a1; + --menu-highlight-color: #f78166; + --link-color: #4493f8; + --header-color: #ffffff; + --header-bg-color: #25292e; + --light-bg-color: #151b23; + --lighter-bg-color: #1e242a; + --darker-bg-color: #212830; + --border-color: #3d444d; + --hunk-bg-color: #121d2f; + --hunk-border-color: #0c2D6b; + --add-bg-color: #12261e; + --add-border-color: #1d572d; + --add-text-color: #238636; + --del-bg-color: #25171c; + --del-border-color: #792e2e; + --del-text-color: #da3633; + --change-bg-color: #272115; + --change-border-color: #624711; + } +} + +@media (max-width: 600px) { + :root { + --content-h-margin: 14px; + } +} + +html { + font-size: var(--font-size-small); + font-variant-numeric: tabular-nums; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-smooth: always; + text-rendering: optimizeLegibility; +} + +/* containers */ + +body, div#cgit { + font-size: 1rem; +} + +html, body, div#cgit { + margin: 0; + padding: 0; + background-color: var(--bg-color); + color: var(--text-color); +} + +div#cgit div.content { + border-bottom: none; + margin: 0 var(--content-h-margin); + padding: 0; + overflow-x: scroll; +} + +div#cgit table.list, +div#cgit div.cgit-panel, +div#cgit div.path, +div#cgit div.diffstat-header, +div#cgit table.diffstat, +div#cgit div.diffstat-summary, +div#cgit table.commit-info, +div#cgit div.commit-subject, +div#cgit div.commit-msg, +div#cgit div.notes, +div#cgit div.footer, +div#cgit div.content h2, +div#cgit ul.pager, +div#cgit div.error, +div#cgit div.markdown-body, +div#cgit table.stats { + width: 100%; + max-width: 1280px; + box-sizing: border-box; + margin: var(--content-v-margin) auto; +} + +div#cgit div.content:has(table.blob), +div#cgit div.content:has(table.bin-blob) { + margin: var(--content-v-margin) var(--content-h-margin); +} + +div#cgit div.path, +div#cgit div#summary { + margin-bottom: 0; +} + +div#cgit div.footer { + margin-top: 0; +} + +div#cgit div.footer, +div#cgit div.footer a { + color: var(--light-text-color); +} + +div#cgit div.footer a:hover { + color: var(--link-color); + text-decoration: underline; +} + +div#cgit ul.pager:empty { + display: none; +} + +div#cgit ul.pager a { + color: var(--text-color); + text-decoration: none; +} + +div#cgit ul.pager a:hover { + color: var(--link-color); +} + +div#cgit div.path, +div#cgit div.error { + color: var(--text-color); + border-radius: var(--border-radius); + box-sizing: border-box; + line-height: var(--size-header); + padding: 0 var(--inner-pad); +} + +div#cgit div.path { + border: var(--border-color) 1px solid; + background-color: var(--light-bg-color); +} + +div#cgit div.path::first-letter { + text-transform: uppercase; +} + +div#cgit div.path a { + margin: 0 var(--inner-small-pad); +} + +div#cgit div.error { + border: var(--del-border-color) 1px solid; + background-color: var(--del-bg-color); +} + +@media (max-width: 1336px) { + div#cgit div.error, + div#cgit div.path { + width: auto; + margin-left: var(--content-h-margin); + margin-right: var(--content-h-margin); + } +} + +/* header */ + +div#cgit table#header { + background-color: var(--header-bg-color); + color: var(--header-color); + margin-bottom: 0; + min-height: 6rem; +} + +div#cgit table#header td.main a { + color: var(--link-color); +} + +div#cgit table#header td.sub, +div#cgit table#header td.main { + color: var(--header-color); + border: none; +} + +div#cgit table.tabs { + margin-top: 0; + background-color: var(--light-bg-color); + border-bottom: var(--border-color) 1px solid; +} + +div#cgit table.tabs td { + padding: 0 var(--content-h-margin); +} + +div#cgit table.tabs td.form { + padding: 0 var(--content-h-margin) 0 0; +} + +div#cgit table#header td { + font-size: var(--font-size-small); +} + +div#cgit table#header td.main { + font-size: var(--font-size-header); +} + +div#cgit table#header td, +div#cgit table#header td.logo, +div#cgit table#header td.form, +div#cgit table#header td.sub.right { + padding: 3px var(--content-h-margin); + vertical-align: middle; +} + +div#cgit table#header td.main, +div#cgit table#header td.sub { + padding: 3px 0; + vertical-align: middle; +} + +div#cgit table#header td.logo img[src$="/cgit.png"] { + filter: brightness(0) invert(1); +} + +div#cgit table#header td.logo { + width: 6rem; +} + +@media (max-width: 600px) { + div#cgit table#header td.logo img { + max-width: 6rem; + } + div#cgit table#header td.main, + div#cgit table#header td.sub.right, + div#cgit table#header td.form input { + white-space: normal; + overflow-wrap: anywhere; + } + div#cgit table#header td.form form input[type="submit"] { + display: none; + } +} + +div#cgit table#header td.form, +div#cgit table.tabs td.form form { + white-space: normal; +} + +div#cgit table.tabs td.form form { + padding: 0; + margin: 0; +} + +div#cgit table.tabs td { + vertical-align: middle; +} + +div#cgit table.tabs td a { + color: var(--light-text-color); + display: inline-block; + font-size: 1rem; + line-height: var(--size-header); + border-radius: var(--border-radius); + padding: 0 0.75rem; + background-position: 0.75rem; + background-size: 1rem; + background-repeat: no-repeat; + text-transform: capitalize; + margin: 2px 0; +} + +div#cgit table.tabs td a.active { + color: var(--text-color); + margin-bottom: 0; + border-bottom: var(--menu-highlight-color) 2px solid; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-color: transparent; +} + +div#cgit table.tabs td a:hover { + text-decoration: none; + background-color: var(--darker-bg-color); + transition: background-color .12s ease-out +} + +/* inputs */ + +div#cgit table#header td.form form select, +div#cgit table#header td.form form input, +div#cgit table.tabs td.form select, +div#cgit table.tabs td.form input, +div#cgit div.cgit-panel td.ctrl select, +div#cgit div.cgit-panel td.ctrl input { + border-radius: var(--border-radius); + background-color: transparent; + height: var(--font-size-header); + font-size: var(--font-size-small); + vertical-align: middle; + margin: 2px 0 2px var(--inner-pad); + padding: 0 var(--inner-pad); +} + +div#cgit table#header td.form form select, +div#cgit table#header td.form form input { + color: var(--header-color); + border: var(--border-color) 1px solid; +} + +div#cgit table.tabs td.form select, +div#cgit table.tabs td.form input, +div#cgit div.cgit-panel td.ctrl select, +div#cgit div.cgit-panel td.ctrl input { + color: var(--text-color); + border: var(--border-color) 1px solid; + background-color: var(--darker-bg-color); +} + +div#cgit table#header td.form form select:focus, +div#cgit table#header td.form form input:focus, +div#cgit table.tabs td.form select:focus, +div#cgit table.tabs td.form input:focus, +div#cgit div.cgit-panel td.ctrl select:focus, +div#cgit div.cgit-panel td.ctrl input:focus, +div#cgit table#header td.form form select:active, +div#cgit table#header td.form form input:active, +div#cgit table.tabs td.form select:active, +div#cgit table.tabs td.form input:active, +div#cgit div.cgit-panel td.ctrl select:active, +div#cgit div.cgit-panel td.ctrl input:active { + border-color: var(--link-color); +} + +div#cgit table#header td.form form input[type="submit"], +div#cgit table.tabs td.form input[type="submit"], +div#cgit div.cgit-panel td.ctrl input[type="submit"] { + min-width: 6em; + text-transform: capitalize; +} + +/* icons */ + +div#cgit table.tabs td a { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M2%202.5A2.5%202.5%200%200%201%204.5%200h8.75a.75.75%200%200%201%20.75.75v12.5a.75.75%200%200%201-.75.75h-2.5a.75.75%200%200%201%200-1.5h1.75v-2h-8a1%201%200%200%200-.714%201.7.75.75%200%201%201-1.072%201.05A2.495%202.495%200%200%201%202%2011.5Zm10.5-1h-8a1%201%200%200%200-1%201v6.708A2.486%202.486%200%200%201%204.5%209h8ZM5%2012.25a.25.25%200%200%201%20.25-.25h3.5a.25.25%200%200%201%20.25.25v3.25a.25.25%200%200%201-.4.2l-1.45-1.087a.249.249%200%200%200-.3%200L5.4%2015.7a.25.25%200%200%201-.4-.2Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); + padding-left: 2.25rem; +} + +div#cgit table.tabs td a[href$="/about/"], +div#cgit table.tabs td a[href*="/about/?"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M0%201.75A.75.75%200%200%201%20.75%201h4.253c1.227%200%202.317.59%203%201.501A3.743%203.743%200%200%201%2011.006%201h4.245a.75.75%200%200%201%20.75.75v10.5a.75.75%200%200%201-.75.75h-4.507a2.25%202.25%200%200%200-1.591.659l-.622.621a.75.75%200%200%201-1.06%200l-.622-.621A2.25%202.25%200%200%200%205.258%2013H.75a.75.75%200%200%201-.75-.75Zm7.251%2010.324.004-5.073-.002-2.253A2.25%202.25%200%200%200%205.003%202.5H1.5v9h3.757a3.75%203.75%200%200%201%201.994.574ZM8.755%204.75l-.004%207.322a3.752%203.752%200%200%201%201.992-.572H14.5v-9h-3.495a2.25%202.25%200%200%200-2.25%202.25Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/log/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22m.427%201.927%201.215%201.215a8.002%208.002%200%201%201-1.6%205.685.75.75%200%201%201%201.493-.154%206.5%206.5%200%201%200%201.18-4.458l1.358%201.358A.25.25%200%200%201%203.896%206H.25A.25.25%200%200%201%200%205.75V2.104a.25.25%200%200%201%20.427-.177ZM7.75%204a.75.75%200%200%201%20.75.75v2.992l2.028.812a.75.75%200%200%201-.557%201.392l-2.5-1A.751.751%200%200%201%207%208.25v-3.5A.75.75%200%200%201%207.75%204Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/commit/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M11.93%208.5a4.002%204.002%200%200%201-7.86%200H.75a.75.75%200%200%201%200-1.5h3.32a4.002%204.002%200%200%201%207.86%200h3.32a.75.75%200%200%201%200%201.5Zm-1.43-.75a2.5%202.5%200%201%200-5%200%202.5%202.5%200%200%200%205%200Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/tree/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22m11.28%203.22%204.25%204.25a.75.75%200%200%201%200%201.06l-4.25%204.25a.749.749%200%200%201-1.275-.326.749.749%200%200%201%20.215-.734L13.94%208l-3.72-3.72a.749.749%200%200%201%20.326-1.275.749.749%200%200%201%20.734.215Zm-6.56%200a.751.751%200%200%201%201.042.018.751.751%200%200%201%20.018%201.042L2.06%208l3.72%203.72a.749.749%200%200%201-.326%201.275.749.749%200%200%201-.734-.215L.47%208.53a.75.75%200%200%201%200-1.06Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/diff/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M1.5%203.25a2.25%202.25%200%201%201%203%202.122v5.256a2.251%202.251%200%201%201-1.5%200V5.372A2.25%202.25%200%200%201%201.5%203.25Zm5.677-.177L9.573.677A.25.25%200%200%201%2010%20.854V2.5h1A2.5%202.5%200%200%201%2013.5%205v5.628a2.251%202.251%200%201%201-1.5%200V5a1%201%200%200%200-1-1h-1v1.646a.25.25%200%200%201-.427.177L7.177%203.427a.25.25%200%200%201%200-.354ZM3.75%202.5a.75.75%200%201%200%200%201.5.75.75%200%200%200%200-1.5Zm0%209.5a.75.75%200%201%200%200%201.5.75.75%200%200%200%200-1.5Zm8.25.75a.75.75%200%201%200%201.5%200%20.75.75%200%200%200-1.5%200Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/stats/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M1.5%201.75V13.5h13.75a.75.75%200%200%201%200%201.5H.75a.75.75%200%200%201-.75-.75V1.75a.75.75%200%200%201%201.5%200Zm14.28%202.53-5.25%205.25a.75.75%200%200%201-1.06%200L7%207.06%204.28%209.78a.751.751%200%200%201-1.042-.018.751.751%200%200%201-.018-1.042l3.25-3.25a.75.75%200%200%201%201.06%200L10%207.94l4.72-4.72a.751.751%200%200%201%201.042.018.751.751%200%200%201%20.018%201.042Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href*="/blame/"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M7.75%2014A1.75%201.75%200%200%201%206%2012.25v-8.5C6%202.784%206.784%202%207.75%202h6.5c.966%200%201.75.784%201.75%201.75v8.5A1.75%201.75%200%200%201%2014.25%2014Zm-.25-1.75c0%20.138.112.25.25.25h6.5a.25.25%200%200%200%20.25-.25v-8.5a.25.25%200%200%200-.25-.25h-6.5a.25.25%200%200%200-.25.25ZM4.9%203.508a.75.75%200%200%201-.274%201.025.249.249%200%200%200-.126.217v6.5c0%20.09.048.173.126.217a.75.75%200%200%201-.752%201.298A1.75%201.75%200%200%201%203%2011.25v-6.5c0-.649.353-1.214.874-1.516a.75.75%200%200%201%201.025.274ZM1.625%205.533h.001a.249.249%200%200%200-.126.217v4.5c0%20.09.048.173.126.217a.75.75%200%200%201-.752%201.298A1.748%201.748%200%200%201%200%2010.25v-4.5a1.748%201.748%200%200%201%20.873-1.516.75.75%200%201%201%20.752%201.299Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs td a[href$="/refs/"], +div#cgit table.tabs td a[href*="/refs/?"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M5%205.372v.878c0%20.414.336.75.75.75h4.5a.75.75%200%200%200%20.75-.75v-.878a2.25%202.25%200%201%201%201.5%200v.878a2.25%202.25%200%200%201-2.25%202.25h-1.5v2.128a2.251%202.251%200%201%201-1.5%200V8.5h-1.5A2.25%202.25%200%200%201%203.5%206.25v-.878a2.25%202.25%200%201%201%201.5%200ZM5%203.25a.75.75%200%201%200-1.5%200%20.75.75%200%200%200%201.5%200Zm6.75.75a.75.75%200%201%200%200-1.5.75.75%200%200%200%200%201.5Zm-3%208.75a.75.75%200%201%200-1.5%200%20.75.75%200%200%200%201.5%200Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} + +div#cgit table.tabs td a[href^="http://"], +div#cgit table.tabs td a[href^="https://"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22m7.775%203.275%201.25-1.25a3.5%203.5%200%201%201%204.95%204.95l-2.5%202.5a3.5%203.5%200%200%201-4.95%200%20.751.751%200%200%201%20.018-1.042.751.751%200%200%201%201.042-.018%201.998%201.998%200%200%200%202.83%200l2.5-2.5a2.002%202.002%200%200%200-2.83-2.83l-1.25%201.25a.751.751%200%200%201-1.042-.018.751.751%200%200%201-.018-1.042Zm-4.69%209.64a1.998%201.998%200%200%200%202.83%200l1.25-1.25a.751.751%200%200%201%201.042.018.751.751%200%200%201%20.018%201.042l-1.25%201.25a3.5%203.5%200%201%201-4.95-4.95l2.5-2.5a3.5%203.5%200%200%201%204.95%200%20.751.751%200%200%201-.018%201.042.751.751%200%200%201-1.042.018%201.998%201.998%200%200%200-2.83%200l-2.5%202.5a1.998%201.998%200%200%200%200%202.83Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit table.tabs a[href^="http://"]:after, +div#cgit table.tabs a[href^="https://"]:after { + content: ""; + display: none; +} + +div#cgit table.tabs td.form input.txt, +div#cgit table.tabs td.form input[type="search"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20version%3D%221.1%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M10.68%2011.74a6%206%200%200%201-7.922-8.982%206%206%200%200%201%208.982%207.922l3.04%203.04a.749.749%200%200%201-.326%201.275.749.749%200%200%201-.734-.215ZM11.5%207a4.499%204.499%200%201%200-8.997%200A4.499%204.499%200%200%200%2011.5%207Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); + background-repeat: no-repeat; + background-position: 0.25rem; + background-size: 1rem; + padding-left: 1.5rem; +} + +div#cgit table#header td.form form select { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%23ffffff%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M9.5%203.25a2.25%202.25%200%201%201%203%202.122V6A2.5%202.5%200%200%201%2010%208.5H6a1%201%200%200%200-1%201v1.128a2.251%202.251%200%201%201-1.5%200V5.372a2.25%202.25%200%201%201%201.5%200v1.836A2.493%202.493%200%200%201%206%207h4a1%201%200%200%200%201-1v-.628A2.25%202.25%200%200%201%209.5%203.25Zm-6%200a.75.75%200%201%200%201.5%200%20.75.75%200%200%200-1.5%200Zm8.25-.75a.75.75%200%201%200%200%201.5.75.75%200%200%200%200-1.5ZM4.25%2012a.75.75%200%201%200%200%201.5.75.75%200%200%200%200-1.5Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); + background-repeat: no-repeat; + background-position: 0.25rem; + background-size: 1rem; + padding-left: 1.5rem; +} + +div#cgit div.cgit-panel td.ctrl select { + background-repeat: no-repeat; + background-position: 0.25rem; + background-size: 1rem; + padding-left: 1.5rem; +} +div#cgit div.cgit-panel td.ctrl select[name="context"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22m8.177.677%202.896%202.896a.25.25%200%200%201-.177.427H8.75v1.25a.75.75%200%200%201-1.5%200V4H5.104a.25.25%200%200%201-.177-.427L7.823.677a.25.25%200%200%201%20.354%200ZM7.25%2010.75a.75.75%200%200%201%201.5%200V12h2.146a.25.25%200%200%201%20.177.427l-2.896%202.896a.25.25%200%200%201-.354%200l-2.896-2.896A.25.25%200%200%201%205.104%2012H7.25v-1.25Zm-5-2a.75.75%200%200%200%200-1.5h-.5a.75.75%200%200%200%200%201.5h.5ZM6%208a.75.75%200%200%201-.75.75h-.5a.75.75%200%200%201%200-1.5h.5A.75.75%200%200%201%206%208Zm2.25.75a.75.75%200%200%200%200-1.5h-.5a.75.75%200%200%200%200%201.5h.5ZM12%208a.75.75%200%200%201-.75.75h-.5a.75.75%200%200%201%200-1.5h.5A.75.75%200%200%201%2012%208Zm2.25.75a.75.75%200%200%200%200-1.5h-.5a.75.75%200%200%200%200%201.5h.5Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit div.cgit-panel td.ctrl select[name="ignorews"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M8%202c1.981%200%203.671.992%204.933%202.078%201.27%201.091%202.187%202.345%202.637%203.023a1.62%201.62%200%200%201%200%201.798c-.45.678-1.367%201.932-2.637%203.023C11.67%2013.008%209.981%2014%208%2014c-1.981%200-3.671-.992-4.933-2.078C1.797%2010.83.88%209.576.43%208.898a1.62%201.62%200%200%201%200-1.798c.45-.677%201.367-1.931%202.637-3.022C4.33%202.992%206.019%202%208%202ZM1.679%207.932a.12.12%200%200%200%200%20.136c.411.622%201.241%201.75%202.366%202.717C5.176%2011.758%206.527%2012.5%208%2012.5c1.473%200%202.825-.742%203.955-1.715%201.124-.967%201.954-2.096%202.366-2.717a.12.12%200%200%200%200-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824%204.242%209.473%203.5%208%203.5c-1.473%200-2.825.742-3.955%201.715-1.124.967-1.954%202.096-2.366%202.717ZM8%2010a2%202%200%201%201-.001-3.999A2%202%200%200%201%208%2010Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit div.cgit-panel td.ctrl select[name="dt"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%3E%3Cpath%20d%3D%22M1%201.75C1%20.784%201.784%200%202.75%200h7.586c.464%200%20.909.184%201.237.513l2.914%202.914c.329.328.513.773.513%201.237v9.586A1.75%201.75%200%200%201%2013.25%2016H2.75A1.75%201.75%200%200%201%201%2014.25Zm1.75-.25a.25.25%200%200%200-.25.25v12.5c0%20.138.112.25.25.25h10.5a.25.25%200%200%200%20.25-.25V4.664a.25.25%200%200%200-.073-.177l-2.914-2.914a.25.25%200%200%200-.177-.073ZM8%203.25a.75.75%200%200%201%20.75.75v1.5h1.5a.75.75%200%200%201%200%201.5h-1.5v1.5a.75.75%200%200%201-1.5%200V7h-1.5a.75.75%200%200%201%200-1.5h1.5V4A.75.75%200%200%201%208%203.25Zm-3%208a.75.75%200%200%201%20.75-.75h4.5a.75.75%200%200%201%200%201.5h-4.5a.75.75%200%200%201-.75-.75Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit div.cgit-panel td.ctrl select[name="period"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M4.75%200a.75.75%200%200%201%20.75.75V2h5V.75a.75.75%200%200%201%201.5%200V2h1.25c.966%200%201.75.784%201.75%201.75v10.5A1.75%201.75%200%200%201%2013.25%2016H2.75A1.75%201.75%200%200%201%201%2014.25V3.75C1%202.784%201.784%202%202.75%202H4V.75A.75.75%200%200%201%204.75%200ZM2.5%207.5v6.75c0%20.138.112.25.25.25h10.5a.25.25%200%200%200%20.25-.25V7.5Zm10.75-4H2.75a.25.25%200%200%200-.25.25V6h11V3.75a.25.25%200%200%200-.25-.25Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} +div#cgit div.cgit-panel td.ctrl select[name="ofs"] { + background-image: url('data:image/svg+xml,%3Csvg%20fill%3D%22%2359636e%22%20xmlns=%22http:%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20width%3D%2216%22%20height%3D%2216%22%3E%3Cpath%20d%3D%22M2%205.5a3.5%203.5%200%201%201%205.898%202.549%205.508%205.508%200%200%201%203.034%204.084.75.75%200%201%201-1.482.235%204%204%200%200%200-7.9%200%20.75.75%200%200%201-1.482-.236A5.507%205.507%200%200%201%203.102%208.05%203.493%203.493%200%200%201%202%205.5ZM11%204a3.001%203.001%200%200%201%202.22%205.018%205.01%205.01%200%200%201%202.56%203.012.749.749%200%200%201-.885.954.752.752%200%200%201-.549-.514%203.507%203.507%200%200%200-2.522-2.372.75.75%200%200%201-.574-.73v-.352a.75.75%200%200%201%20.416-.672A1.5%201.5%200%200%200%2011%205.5.75.75%200%200%201%2011%204Zm-5.5-.5a2%202%200%201%200-.001%203.999A2%202%200%200%200%205.5%203.5Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E'); +} + +/* tables */ + +div#cgit table.commit-info th { + text-transform: capitalize; +} + +div#cgit table.commit-info th:after { + content: ":"; +} + +@media (max-width: 600px) { + div#cgit table.commit-info td.sha1 { + word-break: break-all; + } +} + +div#cgit div.commit-msg:empty { + display: none; +} + +div#cgit table.diff, +div#cgit table.ssdiff { + margin: var(--content-v-margin) 0; +} + +div#cgit table.list td a { + color: var(--text-color); +} + +div#cgit a, +div#cgit table.diffstat td.upd a, +div#cgit table.list td a.ls-dir, +div#cgit table.list td a:hover { + color: var(--link-color); +} + +div#cgit table.list tr, +div#cgit table.list tr.nohover, +div#cgit table.list tr.nohover:hover, +div#cgit table.stats tr, +div#cgit table.list tr:nth-child(even), +div#cgit table.list tr:nth-child(odd) { + background-color: transparent; +} + +div#cgit table.list tr, +div#cgit table.stats tr { + height: var(--size-header); +} + +div#cgit table.list th { + vertical-align: inherit; +} + +div#cgit table.list { + border-collapse: separate; + border-spacing: 0px; + border-radius: var(--border-radius); + border: var(--border-color) 1px solid; +} + +div#cgit table.list td, +div#cgit table.list th, +div#cgit table.stats td, +div#cgit table.stats th { + border: none; + border-top: var(--border-color) 1px solid; + background-color: transparent; +} + +div#cgit table.list th, +div#cgit table.stats th, +div#cgit table.list tr:hover, +div#cgit table.stats tr:hover, +div#cgit table.list tr.nohover-highlight, +div#cgit table.list tr.nohover-highlight:hover:nth-child(even), +div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) { + background-color: var(--light-bg-color); +} + +div#cgit table.list tr:first-child th:first-child, +div#cgit table.list tr:first-child td:first-child, +div#cgit table.stats tr:first-child th:first-child, +div#cgit table.stats tr:first-child td:first-child { + border-top-left-radius: var(--border-radius); +} +div#cgit table.list tr:first-child th:last-child, +div#cgit table.list tr:first-child td:last-child, +div#cgit table.stats tr:first-child th:last-child, +div#cgit table.stats tr:first-child td:last-child { + border-top-right-radius: var(--border-radius); +} +div#cgit table.list tr:last-child th:last-child, +div#cgit table.list tr:last-child td:last-child, +div#cgit table.stats tr:last-child th:last-child, +div#cgit table.stats tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius); +} +div#cgit table.list tr:last-child th:first-child, +div#cgit table.list tr:last-child td:first-child, +div#cgit table.stats tr:last-child th:first-child, +div#cgit table.stats tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius); +} + +div#cgit table.list td, +div#cgit table.list th, +div#cgit table.diffstat td, +div#cgit table.stats td, +div#cgit table.stats td { + padding: 0 var(--inner-pad); +} + +div#cgit table.list tr:first-child td, +div#cgit table.list tr:first-child th, +div#cgit table.stats tr:first-child td, +div#cgit table.stats tr:first-child th, +div#cgit table.list tr.nohover-highlight td { + border-top: none; +} + +div#cgit table.list tr.nohover:has(> td:only-child) { + display: none; +} +div#cgit table.list tr.nohover:has(> td:only-child *) { + display: table-row; +} + +/* tags */ + +div#cgit a.deco, +div#cgit a.branch-deco, +div#cgit a.tag-deco, +div#cgit a.tag-annotated-deco, +div#cgit a.remote-deco { + color: var(--text-color); + background: transparent; + border: var(--border-color) 1px solid; + border-radius: var(--border-radius); + margin: 0 0 0 var(--inner-pad); + padding: 0 var(--inner-pad); + font-weight: normal; + text-decoration: none; +} + +div#cgit a.deco { + background-color: var(--del-bg-color); + border-color: var(--del-border-color); +} +div#cgit a.branch-deco { + background-color: var(--add-bg-color); + border-color: var(--add-border-color); +} +div#cgit a.tag-deco, +div#cgit a.tag-annotated-deco { + background-color: var(--change-bg-color); + border-color: var(--change-border-color); +} +div#cgit a.remote-deco { + background-color: var(--hunk-bg-color); + border-color: var(--hunk-border-color); +} + +div#cgit a.deco:hover, +div#cgit a.branch-deco:hover, +div#cgit a.tag-deco:hover, +div#cgit a.tag-annotated-deco:hover, +div#cgit a.remote-deco:hover, +div#cgit table.list td a.deco:hover, +div#cgit table.list td a.branch-deco:hover, +div#cgit table.list td a.tag-deco:hover, +div#cgit table.list td a.tag-annotated-deco:hover, +div#cgit table.list td a.remote-deco:hover { + color: var(--text-color); +} + +div#cgit a.button { + font-size: var(--font-size-small); + text-decoration: underline; +} + +/* TODO: age colors - by opacity? */ +div#cgit span.age-mins, +div#cgit span.age-hours { + color: var(--add-text-color); +} +div#cgit span.age-days { + color: inherit; +} +div#cgit span.age-weeks { + color: inherit; + opacity: 0.8; +} +div#cgit span.age-months { + color: inherit; + opacity: 0.6; +} +div#cgit span.age-years { + color: inherit; + opacity: 0.4; +} + +/* panels */ + +div#cgit table.diffstat { + border-spacing: 0; + border-radius: var(--border-radius); + border: var(--border-color) 1px solid; + background-color: transparent; + margin-top: 0; + margin-bottom: 0; +} + +div#cgit table.diffstat > tr, +div#cgit table.diffstat > tbody > tr { + height: var(--size-header); + border-top: var(--border-color) 1px solid; +} + +div#cgit table.diffstat > tr:hover, +div#cgit table.diffstat > tbody > tr:hover { + background-color: var(--light-bg-color); +} + +div#cgit table.diffstat td { + white-space: nowrap; +} + +div#cgit table.diffstat td.graph, +div#cgit table.diffstat td.graph table { + width: 100%; +} + +div#cgit table.diffstat td.graph td { + height: var(--inner-pad); +} + +div#cgit table.diffstat td.graph td.add { + background-color: var(--add-border-color); +} + +div#cgit table.diffstat td.graph td.rem { + background-color: var(--del-border-color); +} + +div#cgit div.diffstat-header, +div#cgit div.diffstat-summary { + border: var(--border-color) 1px solid; + background-color: var(--light-bg-color); + padding: 0 var(--inner-pad); + line-height: var(--size-header); +} + +div#cgit div.diffstat-header { + border-radius: var(--border-radius) var(--border-radius) 0 0; + border-bottom: none; + margin-bottom: 0; +} + +div#cgit div.diffstat-summary { + border-radius: 0 0 var(--border-radius) var(--border-radius); + border-top: none; + margin-top: 0; + color: var(--light-text-color); +} + +div#cgit table.list td.ls-mode, +div#cgit table.diffstat td.mode { + font-family: monospace; + white-space: nowrap; + font-size: var(--font-size-small); +} + +div#cgit div.cgit-panel { + border-radius: var(--border-radius); + border: var(--border-color) 1px solid; + background-color: var(--light-bg-color); + float: none; + min-height: var(--size-header); + display: table; + font-size: var(--font-size-small); + padding: 0 var(--inner-pad); +} + +div#cgit div.cgit-panel form { + display: table-cell; + vertical-align: middle; + text-align: right; +} + +div#cgit div.cgit-panel > b { + line-height: var(--size-header); + display: inline-block; + font-size: 1rem; + font-weight: normal; + white-space: pre; + color: var(--text-color); +} + +div#cgit div.cgit-panel > b::first-letter { + text-transform: uppercase; +} +div#cgit div.cgit-panel > b::after { + content: ":"; +} + +div#cgit div.cgit-panel table { + border: none; + background: transparent; + vertical-align: middle; +} + +div#cgit div.cgit-panel td { + display: none; +} +div#cgit div.cgit-panel table, +div#cgit div.cgit-panel tr, +div#cgit div.cgit-panel td.ctrl { + display: inline-block; + padding: 0; +} + +div#cgit span.insertions, +div#cgit table.diffstat td.add a { + color: var(--add-text-color); +} + +div#cgit span.deletions, +div#cgit table.diffstat td.del a, +div#cgit table.diffstat td span.modechange { + color: var(--del-text-color); +} + +div#cgit div.commit-subject, +div#cgit div.content h2 { + font-size: 1.25rem; +} + +div#cgit div.notes-header, +div#cgit div.notes-footer { + display: none; +} + +div#cgit div.notes { + border-radius: var(--border-radius); + border: var(--change-border-color) 1px solid; + background-color: var(--change-bg-color); + padding: var(--inner-pad); + float: none; +} + +div#cgit table.stats { + border-collapse: separate; + border-spacing: 0px; + border-radius: var(--border-radius); + border: var(--border-color) 1px solid; +} + +div#cgit table.stats td.sum { + color: var(--del-text-color); + font-weight: normal; +} + +div#cgit table.stats td, +div#cgit table.stats th { + text-align: right; +} + +div#cgit table.stats td:first-child, +div#cgit table.stats th:first-child { + text-align: left; +} + +/* diffs */ + +div#cgit table.diff td div.head { + color: inherit; + background-color: var(--light-bg-color); + margin-top: var(--inner-pad); + padding-top: var(--inner-pad); + border-top: var(--border-color) 1px solid; +} + +div#cgit table.diff td div.hunk { + color: inherit; + background-color: var(--hunk-bg-color); +} +div#cgit table.diff td div.ctx { + color: inherit; + background-color: transparent; +} +div#cgit table.diff td div.add { + color: inherit; + background-color: var(--add-bg-color); +} +div#cgit table.diff td div.del { + color: inherit; + background-color: var(--del-bg-color); +} + +div#cgit table.diff td div:first-child { + border-top: none; + margin-top: 0; +} +div#cgit table.diff td div:last-child { + padding-bottom: var(--inner-pad); +} + +div#cgit table.diff td div { + padding: 0 var(--inner-pad); +} +div#cgit table.diff td { + padding: 0; +} + +div#cgit table.diff, +div#cgit table.ssdiff { + border-collapse: separate; + border-spacing: 0px; + border-radius: var(--border-radius); + border: var(--border-color) 1px solid; + width: 100%; + display: block; + overflow: scroll; +} + +div#cgit table.diff > tbody, +div#cgit table.ssdiff > tbody { + display: table; + width: 100%; +} + +div#cgit table.diff td, +div#cgit table.ssdiff td { + font-size: var(--font-size-small); + padding: 0; +} + +div#cgit table.blob, +div#cgit table.bin-blob { + font-size: var(--font-size-small); +} + +div#cgit table.ssdiff td.lineno { + width: auto; + min-width: 3rem; + padding: 0 var(--inner-pad); +} + +div#cgit table.ssdiff td.hunk, +div#cgit table.ssdiff td.head { + padding-left: var(--inner-pad); +} + +div#cgit table.ssdiff td.head { + padding-top: var(--inner-pad); +} + +div#cgit table.diff:has(> tr:only-child > td:only-child:empty), +div#cgit table.diff:has(> tbody > tr:only-child > td:only-child:empty), +div#cgit table.diff:empty, +div#cgit table.ssdiff:empty, +div#cgit table.ssdiff td.space, +div#cgit table.ssdiff tr:last-child td.foot { + display: none; +} + +div#cgit table.ssdiff td { + border-left: none; + border-right: none; +} + +div#cgit table.ssdiff td.hunk, +div#cgit table.ssdiff td.head, +div#cgit table.ssdiff td.foot { + border-top: none; + border-bottom: none; +} + +div#cgit table.ssdiff td.head div.head { + color: inherit; +} + +div#cgit table.ssdiff td.head, +div#cgit table.ssdiff td.lineno, +div#cgit table.ssdiff td.foot { + color: inherit; + background-color: var(--light-bg-color); +} +div#cgit table.ssdiff td.hunk { + color: inherit; + background-color: var(--hunk-bg-color); +} +div#cgit table.ssdiff td.add { + color: inherit; + background-color: var(--add-bg-color); +} +div#cgit table.ssdiff td.add_dark, +div#cgit table.ssdiff span.add { + color: inherit; + background-color: var(--add-border-color); +} +div#cgit table.ssdiff td.del { + color: inherit; + background-color: var(--del-bg-color); +} +div#cgit table.ssdiff td.del_dark, +div#cgit table.ssdiff span.del { + color: inherit; + background-color: var(--del-border-color); +} +div#cgit table.ssdiff td.changed { + color: inherit; + background-color: var(--change-bg-color); +} +div#cgit table.ssdiff td.changed_dark { + color: inherit; + background-color: var(--change-border-color); +} + +div#cgit table.ssdiff td.foot { + border-top: var(--border-color) 1px solid; +} + +/* blobs */ + +div#cgit table.blob, +div#cgit table.bin-blob { + border-radius: var(--border-radius); + border-collapse: separate; + border-spacing: 0; + border: var(--border-color) 1px solid; +} + +div#cgit table.blob { + display: block; + overflow: scroll; +} + +div#cgit table.blob td.linenumbers { + border-right: var(--border-color) 1px solid; + background-color: var(--light-bg-color); +} + +div#cgit table.blob td.hashes, +div#cgit table.blob td.linenumbers, +div#cgit table.blob td.lines, +div#cgit table.blob td.linenumbers a, +div#cgit table.ssdiff td.lineno a { + color: var(--text-color); +} + +div#cgit table.blob td.linenumbers a:hover, +div#cgit table.ssdiff td.lineno a:hover { + color: var(--link-color); +} + +div#cgit table.blob td.hashes, +div#cgit table.blob td.linenumbers, +div#cgit table.blob td.lines { + padding: var(--inner-pad) 0; +} + +div#cgit table.blame > tbody { + display: table; + width: 100%; +} + +div#cgit table.blame td.lines { + width: 100%; +} + +div#cgit table.blame div.alt:nth-child(even) { + background-color: var(--light-bg-color); +} + +div#cgit table.blame div.alt:nth-child(odd) { + background-color: transparent; +} + +div#cgit table.bin-blob th { + border: none; + border-bottom: var(--border-color) 1px solid; + background-color: var(--light-bg-color); +} + +div#cgit table.bin-blob td, +div#cgit table.bin-blob th { + border-left: var(--border-color) 1px solid; +} +div#cgit table.bin-blob td:first-child, +div#cgit table.bin-blob th:first-child { + border-left: none; +} + +div#cgit table.blob td.linenumbers div.alt { + padding: 0; +} + +div#cgit table.blob td.linenumbers pre, +div#cgit table.blame td.lines > div > pre, +div#cgit table.blob td.lines pre, +div#cgit table.blob td.hashes div.alt { + padding: 0 var(--inner-pad); + tab-size: 4; +} + +/* markup */ + +pre code.hljs, +code.hljs { + padding: 0; + color: var(--text-color); + background: transparent; +} + +div#cgit div.content div.markdown-body { + line-height: 1.5; +} + +div#cgit div.content div.markdown-body h1, +div#cgit div.content div.markdown-body h2, +div#cgit div.content div.markdown-body h3, +div#cgit div.content div.markdown-body h4, +div#cgit div.content div.markdown-body h5, +div#cgit div.content div.markdown-body h6 { + margin: var(--content-v-margin) 0 1rem 0; +} + +div#cgit div.content div.markdown-body p, +div#cgit div.content div.markdown-body pre, +div#cgit div.content div.markdown-body ul, +div#cgit div.content div.markdown-body ol, +div#cgit div.content div.markdown-body dl, +div#cgit div.content div.markdown-body blockquote, +div#cgit div.content div.markdown-body table { + margin: 1rem 0; +} + +div#cgit div.content div.markdown-body li ul, +div#cgit div.content div.markdown-body li ol { + margin: 0; +} + +div#cgit div.content div.markdown-body img, +div#cgit div.content div.markdown-body video, +div#cgit div.content div.markdown-body hr { + margin: 1rem auto; + padding: 0; +} + +div#cgit div.content div.markdown-body img, +div#cgit div.content div.markdown-body video { + border: none; + display: block; + max-width: 100%; +} + +div#cgit div.content div.markdown-body hr { + border: none; + color: var(--border-color); + background-color: var(--border-color); + height: 1px; +} + +div#cgit div.content div.markdown-body pre { + background-color: var(--light-bg-color); + width: 100%; + max-width: 100%; + overflow: scroll; + padding: var(--inner-pad); + border-radius: var(--border-radius); + box-sizing: border-box; +} + +div#cgit div.content div.markdown-body code, +div#cgit div.content div.markdown-body tt { + padding: .2em .4em; + font-size: var(--font-size-small); + background-color: var(--lighter-bg-color); + border-radius: var(--border-radius); +} + +div#cgit div.content div.markdown-body pre code { + background-color: transparent; + white-space: pre; + tab-size: 4; + padding: 0; +} + +div#cgit div.content div.markdown-body table { + border-collapse: collapse; +} + +div#cgit div.content div.markdown-body table td, +div#cgit div.content div.markdown-body table th { + border: var(--border-color) 1px solid; + padding: var(--inner-pad); + text-align: left; +} + +div#cgit div.content div.markdown-body table th, +div#cgit div.content div.markdown-body table tr:hover { + background-color: var(--light-bg-color); +} |