:root { --red: #c1272d; --red-dark: #a02026; --red-light: #e8494f; --white: #fff; --light: #f4f4f2; --light-gray: #e8e8e4; --medium-gray: #c8c8c4; --gray: #888; --dark: #444; --darker: #1a1a1a; --sans-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; --mono-font: "JetBrains Mono", "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", "Roboto Mono", Menlo, Consolas, monospace; --border-radius: 4px; } @media (prefers-color-scheme: dark) { :root { color-scheme: dark light; --red: #e8494f; --red-dark: #c1272d; --red-light: #f06a6f; --white: #0d0d0d; --light: #1a1a1a; --light-gray: #2a2a2a; --medium-gray: #3a3a3a; --gray: #888; --dark: #ccc; --darker: #eee; } } html { background: var(--white); -webkit-text-size-adjust: none; font-family: var(--sans-font); font-weight: 400; font-size: 15px; line-height: 1.6; } pre, code, kbd, samp { font-family: var(--mono-font); } ::selection { background: var(--red); color: #fff; opacity: 0.85; } * { box-sizing: border-box; padding: 0; margin: 0; } body { max-width: 1000px; padding: 0 20px; margin: 0 auto 60px; border-top: 6px solid var(--red); } /* ── Typography ── */ h1, h2, h3, h4 { font-weight: 700; letter-spacing: -0.02em; line-height: 1.2; } h1 { font-size: 2rem; padding: 1.5rem 0 0.25rem; } h2 { font-size: 1.5rem; padding: 1.25rem 0 0.25rem; } h3 { font-size: 1.1rem; padding: 1.5rem 0 0.5rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray); font-weight: 600; } strong { font-weight: 600; } /* ── Header ── */ header { padding: 1rem 0 0.5rem; } header h1 { font-size: 2.2rem; font-weight: 800; letter-spacing: -0.03em; padding: 0; } header h1 a { color: var(--darker); border: none; } header h1 a:hover { border: none; color: var(--red); } header h2 { font-size: 1.3rem; font-weight: 700; padding: 0.5rem 0 0; } header .ref { font-family: var(--mono-font); font-size: 0.85rem; font-weight: 400; color: var(--gray); display: inline-block; padding-top: 0.2em; letter-spacing: 0; } header .desc { color: var(--gray); font-weight: 400; font-style: italic; font-size: 1rem; padding: 0.25rem 0 0.5rem; } /* ── Navigation ── */ nav { padding: 0.5rem 0 1.5rem; border-bottom: 2px solid var(--light-gray); margin-bottom: 0.5rem; } nav ul { list-style: none; display: flex; gap: 0.25rem; flex-wrap: wrap; } nav ul li { display: inline; } nav ul li a { display: inline-block; padding: 0.3rem 0.8rem; font-size: 0.85rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--darker); border: 2px solid var(--medium-gray); border-radius: var(--border-radius); transition: all 0.15s ease; } nav ul li a:hover { color: var(--red); border-color: var(--red); } nav ul li:first-child a { border-color: var(--red); color: var(--red); } nav ul li:first-child a:hover { background: var(--red); color: #fff; } /* ── Links ── */ a { text-decoration: none; color: var(--darker); word-wrap: break-word; transition: color 0.15s ease; } a:hover { color: var(--red); } main a { font-weight: 500; } main a:hover { border-bottom: 2px solid var(--red); } /* ── Index Page ── */ .index { padding-top: 1.5rem; display: grid; grid-template-columns: 1fr auto; grid-row-gap: 0.15em; min-width: 0; } .index-name { font-weight: 600; font-size: 1.05rem; padding: 0.4rem 0; } .index-name a { border-left: 3px solid var(--red); padding-left: 0.75rem; transition: border-width 0.1s ease; } .index-name a:hover { border-left-width: 6px; color: var(--red); border-bottom: none; } .index-idle { text-align: right; color: var(--gray); font-size: 0.85rem; font-family: var(--mono-font); padding: 0.5rem 0; grid-column: 2; } .index .desc { grid-column: 1 / -1; font-weight: 400; color: var(--gray); font-style: italic; font-size: 0.9rem; padding: 0 0 0.6rem 1rem; border-bottom: 1px solid var(--light-gray); margin-bottom: 0.2rem; min-height: 1.2em; } .index > div:nth-child(3n) { grid-column: 1 / -1; } .index > div:nth-child(3n-1) { grid-column: 2; } .index > div:nth-child(1) { grid-column: 1; } .index > div:nth-child(2) { grid-column: 2; } /* clone url */ .clone-url { padding: 2rem 0 0.5rem; } .clone-url strong { display: block; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gray); padding-bottom: 0.4rem; } .clone-url pre { background: var(--light); padding: 0.75rem 1rem; border-radius: var(--border-radius); border-left: 3px solid var(--red); font-size: 0.85rem; color: var(--dark); white-space: pre-wrap; overflow-x: auto; } /* ── File Tree ── */ .tree { display: grid; grid-template-columns: minmax(10ch, auto) 8ch 1fr; grid-row-gap: 0.15em; grid-column-gap: 1em; min-width: 0; } .tree > div { padding: 0.25rem 0; border-bottom: 1px solid var(--light-gray); } .tree > div:nth-child(3n+1) { font-family: var(--mono-font); font-size: 0.8rem; color: var(--gray); } .tree > div:nth-child(3n+2) { font-family: var(--mono-font); font-size: 0.8rem; color: var(--gray); text-align: right; } .tree > div:nth-child(3n) { font-weight: 500; } .tree > div:nth-child(3n) a { border-bottom: 1px solid transparent; } .tree > div:nth-child(3n) a:hover { border-bottom: 1px solid var(--red); } .mode, .size { font-family: var(--mono-font); } .size { text-align: right; } /* ── Commit Log ── */ .log { display: grid; grid-template-columns: 1fr auto; grid-row-gap: 0; } .log > div { padding: 0.6rem 0; } .log > div:nth-child(4n+1), .log > div:nth-child(4n+2) { border-bottom: 1px solid var(--light-gray); padding-bottom: 0.8rem; } .log > div:nth-child(4n+3) { grid-column: 1; } .log > div:nth-child(4n+4) { grid-column: 2; } .log > div:nth-child(4n+3), .log > div:nth-child(4n+4) { border-bottom: 1px solid var(--light-gray); padding-top: 0; } .log > div:nth-child(1), .log > div:nth-child(2) { padding-top: 0; } .commit-hash { font-family: var(--mono-font); font-size: 0.85rem; font-weight: 600; color: var(--red); } .commit-hash:hover { text-decoration: underline; } .log > div:nth-child(4n+1) pre { font-family: var(--sans-font); font-weight: 600; font-size: 1rem; padding-top: 0.2rem; white-space: pre-wrap; overflow: hidden; } .log > div:nth-child(4n+2), .log > div:nth-child(4n+4) { text-align: right; font-size: 0.8rem; color: var(--gray); padding-top: 0.1rem; line-height: 1.4; max-width: 22rem; overflow-wrap: break-word; } .log > div:nth-child(4n+2) .commit-email, .log > div:nth-child(4n+4) .commit-email { display: none; } /* ── Readme ── */ .readme { margin: 2rem 0 1rem; padding: 1.5rem; background: var(--light); border-radius: var(--border-radius); border-left: 3px solid var(--red); } .readme h1, .readme h2, .readme h3 { text-transform: none; letter-spacing: 0; color: var(--darker); } .readme h1 { font-size: 1.5rem; } .readme h2 { font-size: 1.25rem; } .readme h3 { font-size: 1.1rem; } .readme pre { white-space: pre-wrap; overflow-x: auto; background: var(--white); padding: 0.75rem; border-radius: 3px; font-size: 0.85rem; } .readme ul { padding: revert; } .readme img { max-width: 100%; } .readme a { color: var(--red); font-weight: 500; } .readme a:hover { border-bottom: 2px solid var(--red); } .readme code { font-size: 0.85em; background: var(--white); padding: 0.15em 0.3em; border-radius: 3px; } /* ── Diff / Commit ── */ .diff { margin: 1.5rem 0; padding: 1rem 0 1rem; border-top: 2px solid var(--light-gray); } .diff:first-child { border-top: none; } .diff pre { overflow-x: auto; font-size: 0.85rem; line-height: 1.5; background: var(--light); padding: 1rem; border-radius: var(--border-radius); } .diff-stat { padding: 1rem 0; font-size: 0.9rem; color: var(--dark); } .diff-stat div:first-child { font-weight: 600; padding-bottom: 0.5rem; } .diff-stat strong { display: block; font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gray); padding: 0.5rem 0 0.25rem; } .diff-stat ul { list-style: none; } .diff-stat ul li { padding-left: 0.5em; font-size: 0.85rem; line-height: 1.6; } .diff-stat ul li a { font-weight: 400; } .commit-hash { font-family: var(--mono-font); } .commit-email { font-family: var(--mono-font); font-size: 0.85em; color: var(--gray); } .commit-email:before { content: "<"; } .commit-email:after { content: ">"; } .commit { margin-bottom: 1.5rem; } .commit pre { font-family: var(--sans-font); font-weight: 600; font-size: 1.1rem; padding-bottom: 0.75rem; white-space: pre-wrap; } .commit-info { color: var(--gray); padding-bottom: 1.5rem; font-size: 0.85rem; line-height: 1.6; } .commit .commit-info { padding-bottom: 0; } .commit strong { display: inline-block; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--gray); min-width: 5rem; } .commit p { display: inline; font-family: var(--mono-font); font-size: 0.85rem; word-break: break-all; } .commit p a { font-weight: 400; } .diff-add { color: #2e7d32; } @media (prefers-color-scheme: dark) { .diff-add { color: #66bb6a; } } .diff-del { color: #c62828; } @media (prefers-color-scheme: dark) { .diff-del { color: #ef5350; } } .diff-noop { color: var(--gray); } .diff-type { display: inline-block; font-family: var(--mono-font); font-weight: 700; font-size: 0.8rem; padding: 0.1rem 0.4rem; border-radius: 3px; background: var(--light-gray); color: var(--dark); margin-right: 0.5rem; } /* ── Refs (branches & tags) ── */ .refs { margin-bottom: 1rem; } .refs > div { padding: 0.6rem 0.75rem; border-bottom: 1px solid var(--light-gray); display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; } .refs > div:hover { background: var(--light); } .refs strong { font-family: var(--mono-font); font-size: 0.9rem; font-weight: 600; min-width: 12rem; } .refs a { font-size: 0.85rem; font-weight: 500; color: var(--gray); } .refs a:hover { color: var(--red); } .refs pre { width: 100%; font-size: 0.85rem; white-space: pre-wrap; color: var(--gray); padding: 0.5rem 0 0; } /* ── File View ── */ .line-numbers { white-space: pre-line; -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; user-select: none; display: flex; float: left; flex-direction: column; margin-right: 1ch; font-size: 0.8rem; color: var(--gray); text-align: right; padding-right: 0.75rem; border-right: 2px solid var(--light-gray); min-width: 3.5rem; } .line-numbers a { color: var(--gray); font-weight: 400; } .line-numbers a:hover { color: var(--red); border: none; } .file-wrapper { display: flex; flex-direction: row; grid-template-columns: 1rem minmax(0, 1fr); gap: 1rem; padding: 0.5rem; background: var(--light); border-radius: var(--border-radius); border: 1px solid var(--light-gray); overflow-x: auto; } .chroma-file-wrapper { display: flex; flex-direction: row; grid-template-columns: 1rem minmax(0, 1fr); overflow-x: auto; padding: 0.5rem; background: var(--light); border-radius: var(--border-radius); border: 1px solid var(--light-gray); } .file-content { background: var(--light); overflow-y: hidden; overflow-x: auto; font-size: 0.85rem; } .file-content pre { white-space: pre; } main > p:first-child { font-size: 0.9rem; color: var(--gray); padding-bottom: 1rem; border-bottom: 1px solid var(--light-gray); margin-bottom: 1rem; } main > p:first-child a { color: var(--red); font-weight: 500; } /* ── Error Pages ── */ main h3:only-child { text-align: center; padding: 3rem 0; font-size: 1.3rem; color: var(--gray); text-transform: none; letter-spacing: 0; } /* ── Responsive ── */ @media (max-width: 600px) { body { padding: 0 12px; } h1 { font-size: 1.5rem; } .index { grid-template-columns: 1fr; } .index-name { border-bottom: 1px solid var(--light-gray); } .index .desc { padding-bottom: 0.6rem; margin-bottom: 0; } .index-idle { grid-column: 1; text-align: left; padding: 0 0 0.5rem 1rem; border-bottom: 1px solid var(--light-gray); } .index > div:nth-child(3n), .index > div:nth-child(3n-1), .index > div:nth-child(1), .index > div:nth-child(2) { grid-column: 1; } .log { grid-template-columns: 1fr; } .log > div:nth-child(4n+3) { grid-column: 1; } .log > div:nth-child(4n+4) { grid-column: 1; } .tree { grid-template-columns: 1fr; } .tree > div:nth-child(3n+1), .tree > div:nth-child(3n+2) { display: none; } pre { font-size: 0.8rem; } nav ul { gap: 0.2rem; } nav ul li a { font-size: 0.78rem; padding: 0.2rem 0.6rem; } .refs strong { min-width: 8rem; font-size: 0.85rem; } .commit { font-size: 0.9rem; } header h1 { font-size: 1.6rem; } header h2 { font-size: 1.1rem; } }