summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/cgit-extra.html227
-rw-r--r--web/git.css1003
2 files changed, 1230 insertions, 0 deletions
diff --git a/web/cgit-extra.html b/web/cgit-extra.html
new file mode 100644
index 0000000..7f0d9f9
--- /dev/null
+++ b/web/cgit-extra.html
@@ -0,0 +1,227 @@
+<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js" async></script>
+<script>
+const VROOT = "/";
+
+function repoPathFromLink( a ) {
+ const href = new URL( a.getAttribute( "href" ), location.href );
+ let p = href.pathname;
+ if( !p.startsWith( VROOT ) ) return null;
+ p = p.slice( VROOT.length );
+ p = p.replace( /\/+$/, "" );
+ if( !p ) return null;
+ return p;
+}
+
+function branchFromForm() {
+ const formWrap = document.querySelector( ".form" );
+ const form = formWrap.querySelector( "form" );
+
+ const branchEl = form.querySelector( "select" );
+ if( !branchEl )
+ return "";
+
+ const branch = branchEl.value;
+ if( !branch )
+ return "";
+
+ return branch;
+}
+
+async function getFile( repo, branch, file ) {
+ try {
+ const res = await fetch( `https://${location.host}/${repo}/plain/${file}` );
+ if( !res.ok )
+ return null;
+ return await res.text();
+ } catch( e ) {
+ return null;
+ }
+}
+
+function isWhiteChar( char ) {
+ return char === " " || char === "\t" || char === "\n" || char === "\r";
+}
+
+function removeTrailingWhiteSpace( text ) {
+ while( text.length > 1
+ && isWhiteChar( text[text.length - 1] )
+ && isWhiteChar( text[text.length - 2] )
+ ) {
+ text = text.slice( 0, -1 );
+ }
+ return text;
+}
+
+async function getReadmeFile( repo, branch ) {
+ let file = await getFile( repo, branch, "README.md" );
+ if( file )
+ return { file: removeTrailingWhiteSpace( file ), isMd: true };
+
+ file = await getFile( repo, branch, "README" );
+ if( file )
+ return { file: removeTrailingWhiteSpace( file ), isMd: false };
+
+ return null;
+}
+
+function isIndex( repo ) {
+ let path = location.pathname;
+ return path.replaceAll( "/", "" ) === repo;
+}
+function parseLink( text, start ) {
+ let isImg = 0;
+
+ const open = text.indexOf( "[", start );
+ if( open === -1 ) return null;
+ const close = text.indexOf( "]", open );
+ if( close === -1 ) return null;
+
+ const lopen = text.indexOf( "(", close );
+ if( lopen === -1 ) return null;
+ const lclose = text.indexOf( ")", lopen );
+ if( lclose === -1 ) return null;
+
+ const title = text.substring( open + 1, close );
+ const link = text.substring( lopen + 1, lclose );
+
+ if( open > 0 && text[open-1] == "!" ) isImg = 1;
+ return { title, link, start: open - (isImg?1:0), end: lclose + 1, img: isImg };
+}
+
+function parseLinks( text ) {
+ let start = 0;
+ const links = [];
+
+ while( true ) {
+ const res = parseLink( text, start );
+ if( !res )
+ break;
+
+ links.push( res );
+ start = res.end + 1;
+ }
+
+ return links;
+}
+
+function replaceLinks( text, links ) {
+ let offset = 0;
+ for( let link of links ) {
+ const start = link.start + offset;
+ const end = link.end + offset;
+
+ const textFirst = text.slice( 0, start );
+ const textSecond = text.slice( end );
+
+ let textMid = "";
+ if( link.img ) {
+ textMid = `<img src="${link.link}" alt="${link.title}" />`;
+ } else {
+ textMid = `<a href="${link.link}">${link.title}</a>`;
+ }
+
+ text = textFirst + textMid + textSecond;
+ offset += textMid.length - ( link.end - link.start );
+ }
+
+ return text;
+}
+
+function replaceCodeTicks( text ) {
+ let inBlock = 0;
+ let tick = text.indexOf( "```" );
+ while( tick != -1 ) {
+ if( inBlock == 0 ) {
+ let second = text.slice( tick + 3 );
+ while( isWhiteChar( second[0] ) )
+ second = second.slice( 1 );
+ text = text.slice( 0, tick ) + "<code>" + second;
+ tick = text.indexOf( "```", tick + 3 );
+ } else {
+ let second = text.slice( tick + 3 );
+ while( second.length > 1 && isWhiteChar( second[0] ) && isWhiteChar( second[1] ) )
+ second = second.slice( 1 );
+ text = text.slice( 0, tick ) + "</code>" + second;
+ tick = text.indexOf( "```", tick + 3 );
+ }
+ inBlock = !inBlock;
+ }
+
+ return text;
+}
+
+function runHighlight() {
+ if( hljs === undefined || !hljs )
+ return setTimeout( runHighlight, 200 );
+
+ hljs.highlightAll();
+}
+
+
+function createReadme( text, isMd ) {
+ const tr = document.createElement( "tr" );
+ const td = document.createElement( "td" );
+ const pre = document.createElement( "pre" );
+ tr.appendChild( td );
+ td.appendChild( pre );
+ td.setAttribute( "colspan", "4" );
+ if( !isMd )
+ pre.innerHTML = text;
+ else {
+ const noTicks = replaceCodeTicks( text );
+ const links = parseLinks( noTicks );
+ pre.innerHTML = replaceLinks( noTicks, links );
+ }
+
+ pre.style.whiteSpace = "pre-wrap";
+ pre.style.fontFamily = "JPN12";
+ pre.style.padding = 0;
+ pre.style.marginTop = "0px";
+ pre.style.marginBottom = "0px";
+ tr.classList.add( "nohover" );
+ tr.style.backgroundColor = "#808080"
+ const list = document.querySelector( ".list" );
+ const tbody = list.querySelector( "tbody" );
+ tbody.insertBefore( tr, tbody.children[3] );
+
+ const th = document.createElement( "th" );
+ th.classList.add( "left" );
+ th.setAttribute( "colspan", "4" );
+ th.innerHTML = "Readme";
+ tbody.insertBefore( th, tr );
+
+ setTimeout( runHighlight );
+}
+
+function isCodeView() {
+ return location.pathname.includes( "/tree/src" );
+}
+
+const main = async () => {
+ if( isCodeView() ) {
+ return setTimeout( runHighlight );
+ }
+
+ const mainEl = document.querySelector( ".main" );
+ if( !mainEl )
+ return;
+
+ const repoEl = mainEl.querySelectorAll( "a" )[1];
+ if( !repoEl )
+ return;
+
+ const repo = repoPathFromLink( repoEl );
+ if( !repo )
+ return;
+
+ if( !isIndex( repo ) )
+ return;
+
+ const branch = branchFromForm();
+ const { file, isMd } = await getReadmeFile( repo, branch );
+ createReadme( file, isMd );
+}
+
+setTimeout( main );
+</script>
+<link rel="stylesheet" href="https://networkheaven.net/static/highlight.css" type="text/css" />
diff --git a/web/git.css b/web/git.css
new file mode 100644
index 0000000..84ef9ad
--- /dev/null
+++ b/web/git.css
@@ -0,0 +1,1003 @@
+:root {
+ --back: #888;
+ --front: #E76969;
+ --green: #69E769;
+ --site-font: JPN16;
+ --gradient: linear-gradient(90deg,rgba(255, 100, 255, 1) 0%, rgba(0, 255, 255, 1) 100%);
+}
+
+code {
+ background: #606060;
+ display: inline-block;
+ padding: 5px;
+ width: fit-content !important;
+}
+
+@font-face {
+ font-family: JPN12;
+ src: url( /static/fonts/Web437_DOS-V_re_JPN12.woff )
+}
+
+@font-face {
+ font-family: JPN16;
+ src: url( /static/fonts/Web437_DOS-V_re_JPN16.woff )
+}
+
+
+@font-face {
+ font-family: JPN19;
+ src: url( /static/fonts/Web437_DOS-V_re_JPN19.woff )
+}
+
+@font-face {
+ font-family: JPN24;
+ src: url( /static/fonts/Web437_DOS-V_re_JPN24.woff )
+}
+
+@font-face {
+ font-family: JPN30;
+ src: url( /static/fonts/Web437_DOS-V_re_JPN30.woff )
+}
+
+
+html {
+ background: #888;
+ font-family: JPN12;
+}
+
+a,
+.list th a {
+ text-decoration: none;
+ background: var( --gradient );
+ background-clip: border-box;
+ text-decoration: underline;
+ -webkit-text-fill-color: transparent;
+ -webkit-background-clip: text;
+ color: #c6a6ff;
+ font-weight: normal !important;
+}
+
+
+a:hover {
+ cursor: pointer;
+ background: var( --gradient );
+ background-clip: border-box;
+ text-decoration: underline;
+ -webkit-text-fill-color: unset;
+ -webkit-background-clip: text;
+ text-decoration: underline;
+ color: #fff;
+ font-weight: normal !important;
+}
+
+.list a,
+.sha1 a:nth-child(2) {
+ color: #c6a6ff;
+ -webkit-text-fill-color: unset;
+ background-clip: border-box;
+ background: unset;
+}
+
+
+.list a:hover,
+.sha1 a:nth-child(2):hover {
+ color: #fff;
+}
+
+div#cgit {
+ padding: 0em;
+ margin: 0em;
+ font-size: 13px;
+ color: #fff;
+ background: #888;
+ padding: 4px;
+}
+
+div#cgit a {
+ text-decoration: none;
+}
+
+div#cgit a:hover {
+ text-decoration: underline;
+}
+
+div#cgit table {
+ border-collapse: collapse;
+}
+
+div#cgit table#header {
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+div#cgit table#header td.logo {
+ width: 96px;
+ vertical-align: top;
+}
+
+div#cgit table#header td.main {
+ font-size: 48px;
+ font-family: JPN30;
+ padding-left: 10px;
+ white-space: nowrap;
+}
+
+div#cgit table#header td.main a {
+}
+
+div#cgit table#header td.form {
+ text-align: right;
+ vertical-align: bottom;
+ padding-right: 1em;
+ padding-bottom: 2px;
+ white-space: nowrap;
+}
+
+div#cgit table#header td.form form,
+div#cgit table#header td.form input,
+div#cgit table#header td.form select {
+}
+
+div#cgit table#header td.sub {
+ color: #fff;
+ border-top: solid 1px #fff;
+ padding-left: 10px;
+}
+
+div#cgit table.tabs {
+ border-bottom: solid 1px #fff;
+ border-collapse: collapse;
+ margin-top: 2em;
+ margin-bottom: 0px;
+ width: 100%;
+ font-size: 18px;
+ font-family: JPN16;
+}
+
+div#cgit table.tabs td {
+ padding: 0px 1em;
+ vertical-align: bottom;
+}
+
+div#cgit table.tabs td a {
+ padding: 2px 0.75em;
+ font-size: 110%;
+ color: #fff;
+}
+
+div#cgit table.tabs td a.active {
+ color: #fff;
+ background-color: #ccc;
+}
+
+div#cgit table.tabs a[href^="http://"]:after, div#cgit table.tabs a[href^="https://"]:after {
+ content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgAhcJDQY+gm2TAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAABbSURBVAhbY2BABs4MU4CwhYHBh2Erww4wrGFQZHjI8B8IgUIscJWyDHcggltQhI4zGDCcRwhChPggHIggP1QoAVmQkSETrGoHsiAEsACtBYN0oDAMbgU6EBcAAL2eHUt4XUU4AAAAAElFTkSuQmCC);
+ opacity: 0.5;
+ margin: 0 0 0 5px;
+}
+
+div#cgit table.tabs td.form {
+ text-align: right;
+}
+
+div#cgit table.tabs td.form form {
+ padding-bottom: 2px;
+ font-size: 90%;
+ white-space: nowrap;
+}
+
+div#cgit table.tabs td.form input,
+div#cgit table.tabs td.form select {
+ font-size: 90%;
+}
+
+div#cgit div.path {
+ margin: 0px;
+ padding: 5px 2em 2px 2em;
+ color: #fff;
+ background-color: #707070;
+}
+
+div#cgit div.content {
+ margin: 0px;
+ padding: 2em;
+ border-bottom: solid 1px #fff;
+}
+
+
+div#cgit table.list {
+ width: 100%;
+ border: none;
+ border-collapse: collapse;
+}
+
+div#cgit table.list tr {
+ background: white;
+}
+
+div#cgit table.list tr.logheader {
+ background: #eee;
+}
+
+div#cgit table.list tr:nth-child(even) {
+ background: #808080;
+}
+
+div#cgit table.list tr:nth-child(odd) {
+ background: #909090;
+}
+
+div#cgit table.list tr:hover {
+ background: #777;
+}
+
+div#cgit table.list tr.nohover {
+ background: var(--back);
+}
+
+div#cgit table.list th {
+ border-bottom: 1px solid #fff;
+ font-size: 18px;
+ font-family: JPN16;
+ font-weight: normal;
+}
+
+
+div#cgit table.list tr.nohover:hover {
+ background: var(--back);
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(even) {
+ background: #808080;
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) {
+ background: #909090;
+}
+
+div#cgit table.list td:nth-child(2) a {
+ color: #fff;
+ background: none;
+ background-clip: unset;
+ -webkit-text-fill-color: unset !important;
+ -webkit-background-clip: unset !important;
+}
+
+div#cgit table.list th {
+ /* color: #888;
+ border-top: dashed 1px #888;
+ border-bottom: dashed 1px #888;
+ */
+ padding: 0.1em 0.5em 0.05em 0.5em;
+ vertical-align: baseline;
+}
+
+div#cgit table.list td {
+ border: none;
+ padding: 0.1em 0.5em 0.1em 0.5em;
+}
+
+div#cgit table.list td.commitgraph {
+ font-family: monospace;
+ white-space: pre;
+}
+
+div#cgit table.list td.commitgraph .column1 {
+ color: #a00;
+}
+
+div#cgit table.list td.commitgraph .column2 {
+ color: #0a0;
+}
+
+div#cgit table.list td.commitgraph .column3 {
+ color: #aa0;
+}
+
+div#cgit table.list td.commitgraph .column4 {
+ color: #00a;
+}
+
+div#cgit table.list td.commitgraph .column5 {
+ color: #a0a;
+}
+
+div#cgit table.list td.commitgraph .column6 {
+ color: #0aa;
+}
+
+div#cgit table.list td.logsubject {
+ font-family: monospace;
+ font-weight: bold;
+}
+
+div#cgit table.list td.logmsg {
+ font-family: monospace;
+ white-space: pre;
+ padding: 0 0.5em;
+}
+
+div#cgit table.list td a {
+}
+
+div#cgit table.list td a.ls-dir {
+ color: #c6a6ff;
+}
+
+div#cgit table.list td a:hover {
+}
+
+div#cgit img {
+ border: none;
+}
+
+div#cgit input#switch-btn {
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit td#sidebar input.txt {
+ width: 100%;
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit table#grid {
+ margin: 0px;
+}
+
+div#cgit td#content {
+ vertical-align: top;
+ padding: 1em 2em 1em 1em;
+ border: none;
+}
+
+div#cgit div#summary {
+ vertical-align: top;
+ margin-bottom: 1em;
+}
+
+div#cgit table#downloads {
+ float: right;
+ border-collapse: collapse;
+ border: solid 1px #777;
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+div#cgit table#downloads th {
+ background-color: #909090;
+}
+
+div#cgit div#blob {
+ border: solid 1px #aaa;
+}
+
+div#cgit div.error {
+ color: red;
+ margin: 1em 2em;
+}
+
+div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit .ls-mod {
+ font-family: monospace;
+}
+
+div#cgit td.ls-size {
+ text-align: right;
+ font-family: monospace;
+ width: 10em;
+}
+
+div#cgit td.ls-mode {
+ font-family: monospace;
+ width: 10em;
+}
+
+div#cgit table.blob {
+ margin-top: 0.5em;
+ border: solid 1px #fff;
+ background: #707070;
+}
+
+div#cgit table.blob td.hashes,
+div#cgit table.blob td.lines {
+ margin: 0; padding: 0 0 0 0.5em;
+ vertical-align: top;
+ color: #fff;
+}
+
+div#cgit table.blob td.linenumbers {
+ margin: 0; padding: 0 0.5em 0 0.5em;
+ vertical-align: top;
+ text-align: right;
+ border-right: 1px solid gray;
+}
+
+div#cgit table.blob pre {
+ padding: 0; margin: 0;
+}
+
+div#cgit table.blob td.linenumbers a,
+div#cgit table.ssdiff td.lineno a {
+ color: gray;
+ text-align: right;
+ text-decoration: none;
+}
+
+div#cgit table.blob td.linenumbers a:hover,
+div#cgit table.ssdiff td.lineno a:hover {
+ color: black;
+}
+
+div#cgit table.blame td.hashes,
+div#cgit table.blame td.lines,
+div#cgit table.blame td.linenumbers {
+ padding: 0;
+}
+
+div#cgit table.blame td.hashes div.alt,
+div#cgit table.blame td.lines div.alt {
+ padding: 0 0.5em 0 0.5em;
+}
+
+div#cgit table.blame td.linenumbers div.alt {
+ padding: 0 0.5em 0 0;
+}
+
+div#cgit table.blame div.alt:nth-child(even) {
+ background: #eee;
+}
+
+div#cgit table.blame div.alt:nth-child(odd) {
+ background: white;
+}
+
+div#cgit table.blame td.lines > div {
+ position: relative;
+}
+
+div#cgit table.blame td.lines > div > pre {
+ padding: 0 0 0 0.5em;
+ position: absolute;
+ top: 0;
+}
+
+pre > code {
+ background-color: #606060 !important;
+ padding: 4px !important;
+ font-family: JPN12 !important;
+ min-width: 33%;
+}
+
+pre > img {
+ max-width: 75%;
+}
+
+div#cgit table.bin-blob {
+ margin-top: 0.5em;
+ border: solid 1px black;
+}
+
+div#cgit table.bin-blob th {
+ font-family: monospace;
+ white-space: pre;
+ border: solid 1px #777;
+ padding: 0.5em 1em;
+}
+
+div#cgit table.bin-blob td {
+ font-family: monospace;
+ white-space: pre;
+ border-left: solid 1px #777;
+ padding: 0em 1em;
+}
+
+div#cgit table.nowrap td {
+ white-space: nowrap;
+}
+
+div#cgit table.commit-info {
+ border-collapse: collapse;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel {
+ float: right;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel table {
+ border-collapse: collapse;
+ border: solid 1px #aaa;
+ background-color: #707070;
+}
+
+div#cgit div.cgit-panel th {
+ text-align: center;
+}
+
+div#cgit div.cgit-panel td {
+ padding: 0.25em 0.5em;
+}
+
+div#cgit div.cgit-panel td.label {
+ padding-right: 0.5em;
+}
+
+div#cgit div.cgit-panel td.ctrl {
+ padding-left: 0.5em;
+}
+
+div#cgit table.commit-info th {
+ text-align: left;
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+ vertical-align: top;
+}
+
+div#cgit table.commit-info td {
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+}
+
+div#cgit div.commit-subject {
+ font-size: 125%;
+ margin: 1.5em 0em 0.5em 0em;
+ padding: 0em;
+}
+
+div#cgit div.commit-msg {
+ white-space: pre;
+ font-family: monospace;
+}
+
+div#cgit div.notes-header {
+ padding-top: 1.5em;
+}
+
+div#cgit div.notes {
+ white-space: pre;
+ font-family: monospace;
+ border: solid 1px #ee9;
+ background-color: #ffd;
+ padding: 0.3em 2em 0.3em 1em;
+ float: left;
+}
+
+div#cgit div.notes-footer {
+ clear: left;
+}
+
+div#cgit div.diffstat-header {
+ padding-top: 1.5em;
+}
+
+div#cgit table.diffstat {
+ border-collapse: collapse;
+ border: solid 1px #aaa;
+ background-color: #707070;
+}
+
+div#cgit table.diffstat th {
+ font-weight: normal;
+ text-align: left;
+ text-decoration: underline;
+ padding: 0.1em 1em 0.1em 0.1em;
+ font-size: 100%;
+}
+
+div#cgit table.diffstat td {
+ padding: 0.2em 0.2em 0.1em 0.1em;
+ font-size: 100%;
+ border: none;
+}
+
+div#cgit table.diffstat td.mode {
+ white-space: nowrap;
+}
+
+div#cgit table.diffstat td span.modechange {
+ padding-left: 1em;
+ color: red;
+}
+
+div#cgit table.diffstat td.add a {
+ color: green;
+}
+
+div#cgit table.diffstat td.del a {
+ color: red;
+}
+
+div#cgit table.diffstat td.upd a {
+ color: blue;
+}
+
+div#cgit table.diffstat td.graph {
+ width: 500px;
+ vertical-align: middle;
+}
+
+div#cgit table.diffstat td.graph table {
+ border: none;
+}
+
+div#cgit table.diffstat td.graph td {
+ padding: 0px;
+ border: 0px;
+ height: 7pt;
+}
+
+div#cgit table.diffstat td.graph td.add {
+ background-color: #5c5;
+}
+
+div#cgit table.diffstat td.graph td.rem {
+ background-color: #c55;
+}
+
+div#cgit div.diffstat-summary {
+ color: #fff;
+ padding-top: 0.5em;
+}
+
+div#cgit table.diff {
+ background: #707070;
+ border: 1px solid #aaa;
+}
+
+div#cgit table.diff td {
+ font-family: monospace;
+ white-space: pre-wrap;
+}
+
+div#cgit table.diff td div.head {
+ margin-top: 3px;
+ color: #fff;
+}
+
+div#cgit table.diff td div.hunk {
+ color: #c6a6ff;
+}
+
+div#cgit table.diff td div.add {
+ color: #0f0;
+}
+
+div#cgit table.diff td div.del {
+ color: red;
+}
+
+div#cgit .sha1 {
+ font-family: monospace;
+ font-size: 90%;
+}
+
+div#cgit .left {
+ text-align: left;
+}
+
+div#cgit .right {
+ text-align: right;
+}
+
+div#cgit table.list td.reposection {
+ font-style: italic;
+ color: #888;
+}
+
+div#cgit a.button {
+ font-size: 80%;
+ padding: 0em 0.5em;
+}
+
+div#cgit a.primary {
+ font-size: 100%;
+}
+
+div#cgit a.secondary {
+ font-size: 90%;
+}
+
+div#cgit td.toplevel-repo {
+
+}
+
+div#cgit table.list td.sublevel-repo {
+ padding-left: 1.5em;
+}
+
+div#cgit ul.pager {
+ list-style-type: none;
+ text-align: center;
+ margin: 1em 0em 0em 0em;
+ padding: 0;
+}
+
+div#cgit ul.pager li {
+ display: inline-block;
+ margin: 0.25em 0.5em;
+}
+
+div#cgit ul.pager a {
+ color: #777;
+}
+
+div#cgit ul.pager .current {
+}
+
+div#cgit span.age-mins {
+ color: #0f0;
+}
+
+div#cgit span.age-hours {
+ color: #0f0;
+}
+
+div#cgit span.age-days {
+ color: #040;
+}
+
+div#cgit span.age-weeks {
+ color: #444;
+}
+
+div#cgit span.age-months {
+ color: #aaa;
+}
+
+div#cgit span.age-years {
+ color: #fff;
+}
+
+div#cgit span.insertions {
+ color: #0f0;
+}
+
+div#cgit span.deletions {
+ color: #800;
+}
+
+div#cgit div.footer {
+ margin-top: 0.5em;
+ text-align: center;
+ font-size: 80%;
+ color: #ccc;
+}
+
+div#cgit div.footer a {
+ color: #ccc;
+ text-decoration: none;
+}
+
+div#cgit div.footer a:hover {
+ text-decoration: underline;
+}
+
+div#cgit a.branch-deco {
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #88ff88;
+ border: solid 1px #0f0;
+}
+
+div#cgit a.tag-deco {
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ffff88;
+ border: solid 1px #ffff00;
+}
+
+div#cgit a.tag-annotated-deco {
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ffcc88;
+ border: solid 1px #ffff00;
+}
+
+div#cgit a.remote-deco {
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ccccff;
+ border: solid 1px #000077;
+}
+
+div#cgit a.deco {
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ background-color: #ff8888;
+ border: solid 1px #ff0000;
+}
+
+div#cgit div.commit-subject a.branch-deco,
+div#cgit div.commit-subject a.tag-deco,
+div#cgit div.commit-subject a.tag-annotated-deco,
+div#cgit div.commit-subject a.remote-deco,
+div#cgit div.commit-subject a.deco {
+ margin-left: 1em;
+ font-size: 75%;
+}
+
+div#cgit table.stats {
+ border: solid 1px black;
+ border-collapse: collapse;
+}
+
+div#cgit table.stats th {
+ text-align: left;
+ padding: 1px 0.5em;
+ background-color: #eee;
+ border: solid 1px black;
+}
+
+div#cgit table.stats td {
+ text-align: right;
+ padding: 1px 0.5em;
+ border: solid 1px black;
+}
+
+div#cgit table.stats td.total {
+ text-align: left;
+}
+
+div#cgit table.stats td.sum {
+ color: #c00;
+/* background-color: #eee; */
+}
+
+div#cgit table.stats td.left {
+ text-align: left;
+}
+
+div#cgit table.vgraph {
+ border-collapse: separate;
+ border: solid 1px black;
+ height: 200px;
+}
+
+div#cgit table.vgraph th {
+ background-color: #eee;
+ border: solid 1px white;
+ padding: 1px 0.5em;
+}
+
+div#cgit table.vgraph td {
+ vertical-align: bottom;
+ padding: 0px 10px;
+}
+
+div#cgit table.vgraph div.bar {
+ background-color: #eee;
+}
+
+div#cgit table.hgraph {
+ border: solid 1px black;
+ width: 800px;
+}
+
+div#cgit table.hgraph th {
+ background-color: #eee;
+ border: solid 1px black;
+ padding: 1px 0.5em;
+}
+
+div#cgit table.hgraph td {
+ vertical-align: middle;
+ padding: 2px 2px;
+}
+
+div#cgit table.hgraph div.bar {
+ background-color: #eee;
+ height: 1em;
+}
+
+div#cgit table.ssdiff {
+ width: 100%;
+ background: #707070;
+}
+
+div#cgit table.ssdiff td {
+ font-size: 75%;
+ font-family: monospace;
+ white-space: pre;
+ padding: 1px 4px 1px 4px;
+ border-left: solid 1px #aaa;
+ border-right: solid 1px #aaa;
+}
+
+div#cgit table.ssdiff td.add {
+ color: black;
+ background: #cfc;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.add_dark {
+ color: black;
+ background: #aca;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.add {
+ background: #cfc;
+}
+
+div#cgit table.ssdiff td.del {
+ color: black;
+ background: #fcc;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.del_dark {
+ color: black;
+ background: #caa;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.del {
+ background: #fcc;
+}
+
+div#cgit table.ssdiff td.changed {
+ color: black;
+ background: #ffc;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.changed_dark {
+ color: black;
+ background: #cca;
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.lineno {
+ text-align: right;
+ width: 3em;
+ min-width: 3em;
+}
+
+div#cgit table.ssdiff td.hunk {
+ color: black;
+ background: #ccf;
+ border-top: solid 1px #aaa;
+ border-bottom: solid 1px #aaa;
+}
+
+div#cgit table.ssdiff td.head {
+ border-top: solid 1px #aaa;
+ border-bottom: solid 1px #aaa;
+ font-size: 13px;
+ font-weight: normal;
+}
+
+div#cgit table.ssdiff td.head div.head {
+}
+
+div#cgit table.ssdiff td.foot {
+ border-top: solid 1px #aaa;
+ border-left: none;
+ border-right: none;
+ border-bottom: none;
+}
+
+div#cgit table.ssdiff td.space {
+ border: none;
+}
+
+div#cgit table.ssdiff td.space div {
+ min-height: 3em;
+}
+
+/* Style definition file generated by highlight 3.9, http://www.andre-simon.de/ */
+/* Highlighting theme: Kwrite Editor */
+/* adapted for cgit */
+div#cgit table.blob .num { color:#b07e00; }
+div#cgit table.blob .esc { color:#ff00ff; }
+div#cgit table.blob .str { color:#bf0303; }
+div#cgit table.blob .pps { color:#818100; }
+div#cgit table.blob .slc { color:#838183; font-style:italic; }
+div#cgit table.blob .com { color:#838183; font-style:italic; }
+div#cgit table.blob .ppc { color:#008200; }
+div#cgit table.blob .opt { color:#000000; }
+div#cgit table.blob .lin { color:#555555; }
+div#cgit table.blob .kwa { color:#000000; font-weight:bold; }
+div#cgit table.blob .kwb { color:#0057ae; }
+div#cgit table.blob .kwc { color:#000000; font-weight:bold; }
+div#cgit table.blob .kwd { color:#010181; }