summaryrefslogtreecommitdiff
path: root/src/default.css
diff options
context:
space:
mode:
Diffstat (limited to 'src/default.css')
-rw-r--r--src/default.css2194
1 files changed, 2194 insertions, 0 deletions
diff --git a/src/default.css b/src/default.css
new file mode 100644
index 0000000..6218a0c
--- /dev/null
+++ b/src/default.css
@@ -0,0 +1,2194 @@
+/* This CSS file holds the default implementations for all of fossil's
+ CSS classes. When /style.css is requested, the rules in this file
+ are emitted first, followed by (1) page-specific CSS (if any) and
+ (2) skin-specific CSS.
+*/
+body {
+ z-index: 0 /* Used by robot.c:robot_proofofwork() and href.js */;
+}
+div.sidebox {
+ float: right;
+ background-color: white;
+ border-width: medium;
+ border-style: double;
+ margin: 10px;
+}
+div.sideboxTitle {
+ display: inline;
+ font-weight: bold;
+}
+div.sideboxDescribed {
+ display: inline;
+ font-weight: bold;
+}
+span.disabled {
+ color: red;
+}
+table.timelineTable {
+ border-spacing: 0px 2px;
+}
+.timelineDate {
+ white-space: nowrap;
+}
+span.timelineDisabled {
+ font-style: italic;
+ font-size: small;
+}
+tr.timelineCurrent {
+ padding: .1em .2em;
+ border: 1px dashed #446979;
+ box-shadow: 1px 1px 4px 1px rgba(0, 0, 0, 0.5);
+}
+.timelineSelected {
+ padding: .1em .2em;
+ border: 2px solid lightgray;
+ background-color: #ffc;
+ box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5);
+}
+.timelineSecondary {
+ background-color: #cff;
+}
+tr.timelineSelected td {
+ border-radius: 0;
+ border-width: 0;
+}
+tr.timelineCurrent td {
+ border-radius: 0;
+ border-width: 0;
+}
+span.timelineLeaf {
+ font-weight: bold;
+}
+span.timelineHash {
+ font-weight: bold;
+}
+span.timelineHistDsp {
+ font-weight: bold;
+}
+td.timelineTime {
+ vertical-align: top;
+ text-align: right;
+ white-space: nowrap;
+}
+td.timelineGraph {
+ width: 20px;
+ text-align: left;
+ vertical-align: top;
+}
+span.timelineCompactComment {
+ cursor: pointer;
+}
+span.timelineEllipsis {
+ cursor: pointer;
+}
+.timelineModernCell, .timelineColumnarCell, .timelineDetailCell {
+ vertical-align: top;
+ text-align: left;
+ padding: 0.75em;
+ border-radius: 1em;
+}
+.timelineModernCell[id], .timelineColumnarCell[id], .timelineDetailCell[id] {
+ background-color: #efefef;
+}
+.timelineModernDetail {
+ font-size: 80%;
+ text-align: right;
+ float: right;
+ opacity: 0.75;
+ margin-top: 0.5em;
+ margin-left: 1em;
+}
+.tl-canvas {
+ margin: 0 6px 0 10px;
+}
+.tl-rail {
+ width: 18px;
+}
+.tl-mergeoffset {
+ width: 2px;
+}
+.tl-nodemark {
+ margin-top: 5px;
+}
+.tl-node {
+ width: 10px;
+ height: 10px;
+ border: 1px solid #000;
+ background: #fff;
+ cursor: pointer;
+}
+.tl-node.leaf:after {
+ content: '';
+ position: absolute;
+ top: 3px;
+ left: 3px;
+ width: 4px;
+ height: 4px;
+ background: #000;
+}
+.tl-node.closed-leaf svg {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 10px;
+ height: 10px;
+ color: #000;
+}
+.tl-node.sel:after {
+ content: '';
+ position: absolute;
+ top: 2px;
+ left: 2px;
+ width: 6px;
+ height: 6px;
+ background: red;
+}
+.tl-arrow {
+ width: 0;
+ height: 0;
+ transform: scale(.999);
+ border: 0 solid transparent;
+}
+.tl-arrow.u {
+ margin-top: -1px;
+ border-width: 0 3px;
+ border-bottom: 7px solid #000;
+}
+.tl-arrow.u.sm {
+ border-bottom: 5px solid #000;
+}
+.tl-line {
+ background: #000;
+ width: 2px;
+}
+.tl-arrow.merge {
+ height: 1px;
+ border-width: 2px 0;
+}
+.tl-arrow.merge.l {
+ border-right: 3px solid #000;
+}
+.tl-arrow.merge.r {
+ border-left: 3px solid #000;
+}
+.tl-line.merge {
+ width: 1px;
+}
+.tl-arrow.cherrypick {
+ height: 1px;
+ border-width: 2px 0;
+}
+.tl-arrow.cherrypick.l {
+ border-right: 3px solid #000;
+}
+.tl-arrow.cherrypick.r {
+ border-left: 3px solid #000;
+}
+.tl-line.cherrypick.h {
+ width: 0px;
+ border-top: 1px dashed #000;
+ border-left: 0px dashed #000;
+ background: rgba(255,255,255,0);
+}
+.tl-line.cherrypick.v {
+ width: 0px;
+ border-top: 0px dashed #000;
+ border-left: 1px dashed #000;
+ background: rgba(255,255,255,0);
+}
+.tl-arrow.warp {
+ margin-left: 1px;
+ border-width: 3px 0;
+ border-left: 7px solid #600000;
+}
+.tl-line.warp {
+ background: #600000;
+}
+.tl-line.dotted.v {
+ width: 0px;
+ border-left-width: 2px;
+ border-left-style: dotted;
+ background: rgba(255,255,255,0);
+}
+.tl-tooltip {
+ text-align: center;
+ padding: 5px 1em;
+ border: 1px solid black;
+ border-radius: 6px;
+ position: absolute;
+ z-index: 100;
+ box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.75);
+}
+
+span.tagDsp {
+ font-weight: bold;
+}
+span.wikiError {
+ font-weight: bold;
+ color: red;
+}
+span.infoTagCancelled {
+ font-weight: bold;
+ text-decoration: line-through;
+}
+span.infoTag {
+ font-weight: bold;
+}
+span.wikiTagCancelled {
+ text-decoration: line-through;
+}
+div.columns {
+ padding: 0 2em 0 2em;
+ max-width: 1000px;
+}
+div.columns > ul {
+ margin: 0;
+ padding: 0 0 0 1em;
+}
+div.columns > ul li:first-child {
+ margin-top:0px;
+}
+.columns li {
+ break-inside: avoid;
+ page-break-inside: avoid;
+}
+body.help .columns li {
+ white-space: nowrap /* keep command name aliases from wrapping */;
+}
+.filetree {
+ margin: 1em 0;
+ line-height: 1.5;
+}
+.filetree > ul {
+ display: inline-block;
+}
+.filetree ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.filetree ul.collapsed {
+ display: none;
+}
+.filetree ul ul {
+ position: relative;
+ margin: 0 0 0 21px;
+}
+.filetree li {
+ position: relative;
+ margin: 0;
+ padding: 0;
+}
+.filetree li li:before {
+ content: '';
+ position: absolute;
+ top: -.8em;
+ left: -14px;
+ width: 14px;
+ height: 1.5em;
+ border-left: 2px solid #aaa;
+ border-bottom: 2px solid #aaa;
+}
+.filetree li > ul:before {
+ content: '';
+ position: absolute;
+ top: -1.5em;
+ bottom: 0;
+ left: -35px;
+ border-left: 2px solid #aaa;
+}
+.filetree li.last > ul:before {
+ display: none;
+}
+.filetree a {
+ position: relative;
+ z-index: 1;
+ display: table-cell;
+ min-height: 16px;
+ padding-left: 21px;
+ background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/y\
+EhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14GqFX\
+ImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
+ background-position: center left;
+ background-repeat: no-repeat;
+}
+ul.browser {
+ list-style-type: none;
+ padding: 10px;
+ margin: 0px;
+ white-space: nowrap;
+}
+ul.browser li.file {
+ padding-top: 2px;
+}
+ul.browser li.file > a {
+ padding-left: 20px;
+ background-repeat: no-repeat;
+ background-position: 0px center;
+ background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP\/\/\/\
+yEhIf\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAIvlIKpxqcfmgOUvoaqDSCxrEEfF14Gq\
+FXImJZsu73wepJzVMNxrtNTj3NATMKhpwAAOw==");
+}
+ul.browser li.dir {
+ padding-top: 2px;
+}
+ul.browser li.dir > a {
+ padding-left: 20px;
+ background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\
+v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo+\
+jUs6b5Z/K4siDu5RPUFADs=");
+ background-repeat: no-repeat;
+ background-position: 0px center;
+}
+div.filetreeline {
+ display: table;
+ width: 100%;
+ white-space: nowrap;
+}
+.filetree .dir > div.filetreeline > a {
+ background-image: url("data:image/gif;base64,R0lGODlhEAAQAJEAAP/WVCIiI\
+v\/\/\/wAAACH5BAEHAAIALAAAAAAQABAAAAInlI9pwa3XYniCgQtkrAFfLXkiFo1jaXpo\
++jUs6b5Z/K4siDu5RPUFADs=");
+}
+div.filetreeage {
+ display: table-cell;
+ padding-left: 1.5em;
+ text-align: right;
+ width: 8em;
+}
+div.filetreesize {
+ display: table-cell;
+ padding-left: 1em;
+ text-align: right;
+ width: 7em;
+}
+div.filetreeline:hover {
+ background-color: #eee;
+}
+table.login_out {
+ text-align: left;
+ margin-right: 10px;
+ margin-left: 10px;
+ margin-top: 10px;
+}
+div.captcha {
+ text-align: center;
+ padding: 1ex;
+}
+table.captcha {
+ margin: auto;
+ padding: 10px;
+ border-width: 4px;
+ border-style: double;
+ border-color: black;
+}
+pre.captcha {
+ font-size: 50%;
+}
+td.login_out_label {
+ text-align: center;
+}
+span.loginError {
+ color: red;
+}
+span.note {
+ font-weight: bold;
+}
+span.textareaLabel {
+ font-weight: bold;
+}
+table.usetupLayoutTable {
+ outline-style: none;
+ padding: 0;
+ margin: 25px;
+}
+td.usetupColumnLayout {
+ vertical-align: top
+}
+table.usetupUserList {
+ outline-style: double;
+ outline-width: 1px;
+ padding: 10px;
+}
+th.usetupListUser {
+ text-align: right;
+ padding-right: 20px;
+}
+th.usetupListCap {
+ text-align: center;
+ padding-right: 15px;
+}
+th.usetupListCon {
+ text-align: left;
+}
+td.usetupListUser {
+ text-align: right;
+ padding-right: 20px;
+ white-space:nowrap;
+}
+td.usetupListCap {
+ text-align: center;
+ padding-right: 15px;
+}
+td.usetupListCon {
+ text-align: left
+}
+div.ueditCapBox {
+ margin-right: 20px;
+ margin-bottom: 20px;
+}
+td.usetupEditLabel {
+ text-align: right;
+ vertical-align: top;
+ white-space: nowrap;
+}
+span.ueditInheritNobody {
+ color: green;
+ padding: .2em;
+}
+span.ueditInheritDeveloper {
+ color: red;
+ padding: .2em;
+}
+span.ueditInheritReader {
+ color: black;
+ padding: .2em;
+}
+span.ueditInheritAnonymous {
+ color: blue;
+ padding: .2em;
+}
+span.capability {
+ font-weight: bold;
+}
+span.usertype {
+ font-weight: bold;
+}
+span.usertype:before {
+ content:"'";
+}
+span.usertype:after {
+ content:"'";
+}
+p.missingPriv {
+ color: blue;
+}
+span.wikiruleHead {
+ font-weight: bold;
+}
+td.tktDspLabel {
+ text-align: right;
+}
+td.tktDspValue {
+ text-align: left;
+ vertical-align: top;
+ background-color: #d0d0d0;
+}
+td.tktTlOpen {
+ color: #800;
+}
+td.tktTlClosed {
+ color: #888;
+}
+span.tktError {
+ color: red;
+ font-weight: bold;
+}
+table.rpteditex {
+ float: right;
+ margin: 0;
+ padding: 0;
+ width: 125px;
+ text-align: center;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+table.report {
+ border: 1px solid #999;
+ margin: 1em 0 1em 0;
+ cursor: pointer;
+}
+td.rpteditex {
+ border-width: thin;
+ border-color: #000000;
+ border-style: solid;
+}
+div.endContent {
+ clear: both;
+}
+p.generalError {
+ color: red;
+}
+p.tktsetupError {
+ color: red;
+ font-weight: bold;
+}
+p.xfersetupError {
+ color: red;
+ font-weight: bold;
+}
+p.thmainError {
+ color: red;
+ font-weight: bold;
+}
+span.thTrace {
+ color: red;
+}
+p.reportError {
+ color: red;
+ font-weight: bold;
+}
+blockquote.reportError {
+ color: red;
+ font-weight: bold;
+}
+p.noMoreShun {
+ color: blue;
+}
+p.shunned {
+ color: blue;
+}
+span.brokenlink {
+ color: red;
+}
+ul.filelist {
+ margin-top: 3px;
+ line-height: 100%;
+}
+ul.filelist li {
+ padding-top: 1px;
+}
+
+/* Rules governing diff layout and colors */
+table.diff {
+ width: 100%;
+ border-spacing: 0;
+ border-radius: 5px;
+ border: 1px solid black;
+ overflow: hidden; /* Prevent background from overlapping rounded borders. */
+ font-size: 80%;
+}
+table.diff td.diffln{
+ padding: 0;
+}
+table.diff td.diffln > pre{
+ padding: 0 0.25em 0 0.5em;
+ margin: 0;
+}
+table.diff td {
+ vertical-align: top;
+ padding: 0;
+ overflow: hidden /*work around inner PRE slight overflow/overlap*/;
+}
+table.diff pre {
+ margin: 0 0 0 0;
+ padding: 0 0.5em;
+ line-height: 1.275/*for mobile: forum post e6f4ee7de98b55c0*/;
+ text-size-adjust: none
+ /* ^^^ attempt to keep mobile from inflating some text */;
+}
+table.diff pre > ins,
+table.diff pre > del {
+ /* Fill platform-dependent color gaps caused by
+ inflated line-height */
+ padding: 0.062em 0 0.062em 0;
+}
+table.diff pre > ins > *,
+table.diff pre > del > *{
+ /* Avoid odd-looking color swatches in conjunction with
+ (table.diff pre > ins/del) padding */
+ padding: inherit;
+}
+table.diff td.diffln > pre {
+ padding: 0 0.35em 0 0.5em;
+}
+table.diff td > pre {
+ box-sizing: border-box;
+ /* Workaround for "slight wiggle" when using mouse-wheel in some FF
+ versions, apparently caused by the increased line-height forcing
+ these elements to be a *tick* larger than they should be but not
+ large enough to force a scroll bar to show up. */
+ overflow-y: hidden;
+}
+tr.diffskip.jchunk {
+ /* jchunk gets added from JS to diffskip rows when they are
+ plugged into the /jchunk route. */
+ background-color: aliceblue;
+ padding: 0;
+}
+tr.diffskip.jchunk > td {
+ padding: 0.25em 0.5em;
+ margin: 0;
+}
+tr.diffskip.jchunk:hover {
+ /*background-color: rgba(127,127,127,0.5);
+ cursor: pointer;*/
+}
+tr.diffskip > td.chunkctrl {
+ text-align: left;
+}
+tr.diffskip > td.chunkctrl > div {
+ display: flex;
+ align-items: center;
+}
+tr.diffskip > td.chunkctrl > div > span.error {
+ padding: 0.25em 0.5em;
+ border-radius: 0.5em;
+}
+tr.diffskip > td.chunkctrl .jcbutton
+/* class name .button breaks w/ some skins! */ {
+ min-width: 3.5ex;
+ max-width: 3.5ex;
+ text-align: center;
+ display: inline-block;
+ padding: 0.1em 1em;
+ margin: 0 1em 0 0;
+ background-color: rgba(127,127,127,0.2);
+ border-style: outset;
+ border-width: 0;
+ border-radius: 0.5em;
+ opacity: 0.7;
+}
+tr.diffskip > td.chunkctrl .jcbutton.up:not(.down){
+ /* Simulate an arrow pointing up */
+ border-radius: 3em 3em 0.25em 0.25em;
+}
+tr.diffskip > td.chunkctrl .jcbutton.down:not(.up){
+ /* Simulate an arrow pointing down */
+ border-radius: 0.25em 0.25em 3em 3em;
+}
+tr.diffskip > td.chunkctrl .jcbutton > span {
+ /* In order to increase the glyph size w/o increasing the em-based
+ button size or border-radius, we need an extra layer of DOM
+ element for the glyph. */
+ font-size: 150%;
+}
+tr.diffskip > td.chunkctrl .jcbutton.up > span::before {
+ content: '⇡';
+}
+tr.diffskip > td.chunkctrl .jcbutton.down > span::before {
+ content: '⇣';
+}
+tr.diffskip > td.chunkctrl .jcbutton.up.down > span::before {
+ content: '⇡⇣';
+}
+tr.diffskip > td.chunkctrl .jcbutton:hover {
+ cursor: pointer;
+ opacity: 1;
+ filter: contrast(1);
+}
+tr.diffchunk {
+ display: grid;
+ gap: 0px 0px;
+ grid-template-rows: 1fr;
+}
+table.splitdiff tr.diffchunk {
+ grid-template-columns: auto 1fr auto auto 1fr;
+ grid-template-areas: "difflnl difftxtl diffsep difflnr difftxtr";
+}
+table.udiff tr.diffchunk {
+ grid-template-columns: auto auto auto 1fr;
+ grid-template-areas: "difflnl difflnr diffsep difftxtu";
+}
+td.difflnl { grid-area: difflnl; }
+td.difflnr { grid-area: difflnr; }
+td.difftxtu { grid-area: difftxtu; }
+td.difftxtl { grid-area: difftxtl; }
+td.difftxtr { grid-area: difftxtr; }
+td.diffln {
+ width: fit-content;
+ text-align: right;
+ padding: 0 1em 0 0;
+}
+td.difflne {
+ padding-bottom: 0.4em;
+}
+td.diffsep {
+ width: fit-content;
+ padding: 0 0.3em 0 0.5em;
+ grid-area: diffsep;
+}
+td.difftxt pre {
+ overflow-x: auto;
+}
+td.diffln ins {
+ background-color: #a0e4b2;
+ text-decoration: none;
+}
+td.diffln del {
+ background-color: #ffc0c0;
+ text-decoration: none;
+}
+td.difftxt del {
+ background-color: #ffe8e8;
+ text-decoration: none;
+}
+td.difftxt del > del {
+ background-color: #ffc0c0;
+ text-decoration: none;
+ font-weight: bold;
+}
+td.difftxt del > del.edit {
+ background-color: #c0c0ff;
+ text-decoration: none;
+ font-weight: bold;
+}
+td.difftxt ins {
+ background-color: #dafbe1;
+ text-decoration: none;
+}
+td.difftxt ins > ins {
+ background-color: #a0e4b2;
+ text-decoration: none;
+ font-weight: bold;
+}
+td.difftxt ins > ins.edit {
+ background-color: #c0c0ff;
+ text-decoration: none;
+ font-weight: bold;
+}
+body.tkt div.content li > table.udiff {
+ margin-left: 1.5em;
+ margin-top: 0.5em;
+}
+body.tkt div.content ol.tkt-changes > li:target > p > span {
+ border-bottom: 3px solid gold;
+}
+body.tkt div.content ol.tkt-changes > li:target > ol {
+ border-left: 1px solid gold;
+}
+body.tkt .tktCommentArea {
+ display: flex;
+ flex-direction: column;
+}
+body.tkt .newest-first-controls {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+}
+body.tkt .tktCommentArea.reverse {
+ flex-direction: column-reverse;
+}
+body.cpage-ckout .file-change-line,
+body.cpage-info .file-change-line,
+body.cpage-vinfo .file-change-line,
+body.cpage-ci .file-change-line,
+body.cpage-vdiff .file-change-line {
+ margin-top: 16px;
+ margin-bottom: 16px;
+ margin-right: 1em /* keep it from nudging right up against the scrollbar-reveal zone */;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+span.modpending {
+ color: #b03800;
+ font-style: italic;
+}
+pre.th1result {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+pre.th1error {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ color: red;
+}
+pre.textPlain {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+.statistics-report-graph-line {
+ border: 2px solid #446979;
+ background-color: #446979;
+}
+.statistics-report-graph-extra {
+ border: 2px dashed #446979;
+ border-left-style: none;
+}
+.statistics-report-table-events th {
+ padding: 0 1em 0 1em;
+}
+.statistics-report-table-events td {
+ padding: 0.1em 1em 0.1em 1em;
+}
+.statistics-report-row-year {
+ text-align: left;
+}
+.statistics-report-week-number-label {
+ text-align: right;
+ font-size: 0.8em;
+}
+.statistics-report-week-of-year-list {
+ font-size: 0.8em;
+}
+#usetupEditCapability {
+ font-weight: bold;
+}
+table.adminLogTable {
+ text-align: left;
+}
+.adminLogTable .adminTime {
+ text-align: left;
+ vertical-align: top;
+ white-space: nowrap;
+}
+.fileage table {
+ border-spacing: 0;
+}
+.fileage tr:hover {
+ background-color: #eee;
+}
+.fileage td {
+ vertical-align: top;
+ text-align: left;
+ border-top: 1px solid #ddd;
+ padding-top: 3px;
+}
+.fileage td:first-child {
+ white-space: nowrap;
+}
+.fileage td:nth-child(2) {
+ padding-left: 1em;
+ padding-right: 1em;
+}
+.fileage td:nth-child(3) {
+ word-wrap: break-word;
+ max-width: 50%;
+}
+.brlist table {
+ border-spacing: 0;
+}
+.brlist table th {
+ text-align: left;
+ padding: 0px 1em 0.5ex 0px;
+ vertical-align: bottom;
+}
+.brlist table td {
+ padding: 0px 2em 0px 0px;
+ white-space: nowrap;
+}
+th.sort:after {
+ margin-left: .4em;
+ cursor: pointer;
+ text-shadow: 0 0 0 #000;
+}
+th.sort.none:after {
+ content: '\2666';
+}
+th.sort.asc:after {
+ content: '\2193';
+}
+th.sort.desc:after {
+ content: '\2191';
+}
+span.snippet>mark {
+ background-color: inherit;
+ font-weight: bold;
+}
+div.searchForm {
+ text-align: center;
+}
+p.searchEmpty {
+ font-style: italic;
+}
+.clutter {
+ display: none;
+}
+table.label-value th {
+ vertical-align: top;
+ text-align: right;
+ padding: 0.2ex 1ex;
+}
+table.forum_post {
+ margin-top: 1ex;
+ margin-bottom: 1ex;
+ margin-left: 0;
+ margin-right: 0;
+ border-spacing: 0;
+}
+span.forum_author {
+ color: #888;
+ font-size: 75%;
+}
+span.forum_author::after {
+ content: " | ";
+}
+span.forum_age {
+ color: #888;
+ font-size: 85%;
+}
+span.forum_buttons {
+ font-size: 85%;
+}
+span.forum_buttons::before {
+ color: #888;
+ content: " | ";
+}
+span.forum_npost {
+ color: #888;
+ font-size: 75%;
+}
+table.forumeditform td {
+ vertical-align: top;
+ border-collapse: collapse;
+ padding: 1px;
+}
+div.forum_body p {
+ margin-top: 0;
+}
+div.forum-editor-widget{
+ display: flex;
+ flex-direction: column;
+}
+div.forum-editor-widget > textarea {
+ max-width: initial;
+}
+td.form_label {
+ vertical-align: top;
+ text-align: right;
+}
+.debug {
+ background-color: #ffc;
+ border: 2px solid #ff0;
+}
+div.forumEdit {
+ border: 1px solid black;
+ padding-left: 1ex;
+ padding-right: 1ex;
+}
+div.forumTimeline {
+ border: 1px solid black;
+ padding-left: 1ex;
+ padding-right: 1ex;
+ max-width: 50em;
+ overflow: auto;
+}
+div.forumTimeline code {
+ white-space: pre-wrap;
+}
+div.markdown code {
+ white-space: pre-wrap;
+}
+div.forumTime {
+ border: 1px solid black;
+ padding-left: 1ex;
+ padding-right: 1ex;
+ margin-top: 1ex;
+ display: flex;
+ flex-direction: column;
+}
+div.forumClosed {
+}
+div.forumClosed > .forumPostBody {
+ opacity: 0.7;
+}
+div.forumClosed > .forumPostHdr::before {
+ content: "[CLOSED] ";
+}
+/*div.forumClosed > div.forumPostBody {
+ filter: blur(5px);
+}*/
+div.forumpost-closure-warning {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border-style: solid;
+ padding: 0.25em 0.5em;
+ background: #f4f400bb;
+ /*font-weight: bold;*/
+}
+div.forumpost-closure-warning input[type=submit] {
+ padding: 0.25em;
+}
+div.forumpost-single-controls {
+ /* UI controls along the bottom of a single post
+ ** in the thread view. */
+}
+.forum div > form {
+ margin: 0.5em 0;
+ display: inline-block;
+}
+body.cpage-forumedit div > form,
+body.cpage-forume2 div > form{
+ width: 100%;
+}
+.forum div > form > * {
+ margin-bottom: 0.35em;
+}
+.forum-post-collapser {
+ /* Common style for the bottom-of-post and right-of-post
+ expand/collapse widgets. */
+ font-size: 0.8em;
+ padding: 0;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0 0 0.5em 0.5em;
+ background-color: rgba(0, 0, 0, 0.05);
+ opacity: 0.8;
+ cursor: pointer;
+}
+.forum-post-collapser.bottom {
+ margin: 0 0 0.4em 0;
+ height: 1.75em;
+ line-height: 1.75em;
+ /* ^^^ Those sizes are finely tuned for the current selection of
+ arrow characters. If those change, these should, too. Remember that
+ FF/Chrome simply do not agree on alignment with most values :/. */
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+.forum-post-collapser.bottom > span {
+ margin: 0 1em 0 1em;
+ vertical-align: middle;
+}
+.forum-post-collapser.bottom > span::before {
+ content: "⇣⇣⇣";
+}
+.forum-post-collapser.bottom.expanded > span::before {
+ content: "⇡⇡⇡" /*reminder: FF/Chrome cannot agree on alignment of ⮝*/;
+}
+div.forumPostBody{
+ max-height: 50em;
+ overflow: auto;
+}
+div.forumPostBody.with-expander {
+ display: flex;
+ flex-direction: row;
+ overflow: auto;
+}
+div.forumPostBody.with-expander:not(.expanded) > :first-child {
+ overflow-y: hidden;
+}
+div.forumPostBody.with-expander > *:first-child {
+ /* Main content DIV/PRE */
+ overflow: auto;
+ flex: 10 1 auto;
+}
+div.forumPostBody.with-expander.expanded > *:first-child {
+ margin-bottom: 0.5em /* try to suppress scroll bar */;
+}
+div.forumPostBody.with-expander .forum-post-collapser.right {
+ /* "Tap zone" for expansion of the post, sits to the right of the
+ post's content. */
+ flex: 1 10 auto;
+ min-width: 1.25em;
+ max-width: 1.25em;
+ margin: 0 0 0 0.2em;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-around;
+ align-items: center;
+ border-radius: 0.1em;
+ cursor: pointer;
+ border-bottom: 0;
+ border-radius: 0 0.5em 0 0;
+}
+div.forumPostBody.with-expander .forum-post-collapser.right > span:before {
+ content: "⇣";
+}
+div.forumPostBody.with-expander.expanded .forum-post-collapser.right > span:before {
+ content: "⇡";
+}
+div.forumPostBody.expanded {
+ max-height: initial;
+}
+div.forumPostBody.shrunken {
+ /* When an expandable post is un-expanded, it is shrunkend down
+ to this size instead of its original size. */
+ max-height: 8em;
+}
+span.forumPostReplyTitle {
+ /* thread title part of the page header when replying to a post */
+ font-style: italic;
+}
+
+div.forumSel {
+ background-color: #cef;
+}
+div.forumObs {
+ color: #bbb;
+}
+
+div.setup_forum-column {
+ display: flex;
+ flex-direction: column;
+}
+
+body.forum span.forum-status-selection {
+ white-space: nowrap;
+}
+
+body.cpage-forum div.forumPosts tr[data-status] td.status {
+ /* Add a gap before the "X posts spanning Y time" labels,
+ ** which sometimes wrap and look odd without this gap. */
+ padding-left: 1em;
+}
+body.cpage-forum div.forumPosts tr[data-status="open"] {
+}
+body.cpage-forum div.forumPosts tr[data-status="resolved"] {
+}
+
+body.cpage-setup_forum > .content table {
+ margin-bottom: 1em;
+}
+body.cpage-setup_forum > .content table.bordered {
+ border: 1px solid;
+ border-radius: 0.25em;
+}
+body.cpage-setup_forum > .content table td,
+body.cpage-setup_forum > .content table th {
+ text-align: left;
+}
+body.cpage-setup_forum table.forum-settings-list > tbody > tr > td {
+ min-width: 2em;
+}
+
+#capabilitySummary {
+ text-align: center;
+}
+#capabilitySummary td {
+ padding-left: 3ex;
+ padding-right: 3ex;
+}
+#capabilitySummary th {
+ padding-left: 1ex;
+ padding-right: 1ex;
+}
+.capsumOff {
+ background-color: #bbb;
+}
+.capsumRead {
+ background-color: #bfb;
+}
+.capsumWrite {
+ background-color: #ffb;
+}
+label {
+ white-space: nowrap;
+}
+label[for] {
+ cursor: pointer;
+}
+button.copy-button,
+button.copy-button:hover,
+button.copy-button:focus,
+button.copy-button:active {
+ width: 14px;
+ height: 14px;
+/*Note: .24em is slightly smaller than the average width of a normal space.*/
+ margin: -2px .24em 0 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ background: none;
+ font-size: inherit; /* Required for horizontal spacing. */
+ vertical-align: middle;
+ user-select: none;
+ cursor: pointer;
+}
+button.copy-button-flipped,
+button.copy-button-flipped:hover,
+button.copy-button-flipped:focus,
+button.copy-button-flipped:active {
+ margin: -2px 0 0 .24em;
+}
+button.copy-button span {
+ display: block;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ border: 0;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' \
+viewBox='0,0,14,14'%3E%3Cpath style='fill:black;opacity:0' \
+d='M14,14H0V0h14v14z'/%3E%3Cpath style='fill:rgb(240,240,240)' \
+d='M1,0h6.6l2,2h1l3.4,3.4v8.6h-10v-2h-3z'/%3E%3Cpath style='fill:rgb(64,64,64)' \
+d='M2,1h5l3,3v7h-8z'/%3E%3Cpath style='fill:rgb(248,248,248)' \
+d='M3,2h3.6l2.4,2.4v5.6h-6z'/%3E%3Cpath style='fill:rgb(80,128,208)' \
+d='M4,5h4v1h-4zm0,2h4v1h-4z'/%3E%3Cpath style='fill:rgb(64,64,64)' \
+d='M5,3h5l3,3v7h-8z'/%3E%3Cpath style='fill:rgb(248,248,248)' \
+d='M10,4.4v1.6h1.6zm-4,-0.6h3v3h-3zm0,3h6v5.4h-6z'/%3E%3Cpath style='fill:rgb(80,128,208)' \
+d='M7,8h4v1h-4zm0,2h4v1h-4z'/%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: center;
+ cursor: pointer;
+}
+button.copy-button:enabled:active span {
+ background-size: 90%;
+}
+button.copy-button:disabled span {
+ filter: grayscale(1);
+ opacity: 0.4;
+}
+.nobr {
+ white-space: nowrap;
+}
+.accordion {
+ cursor: pointer;
+}
+.accordion_btn {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ margin-right: .5em;
+ vertical-align: middle;
+}
+/* Note: the order of the next 3 entries should be
+ maintained for the hierarchical cascade to work. */
+.accordion > .accordion_btn_plus {
+ display: none;
+}
+.accordion_closed > .accordion_btn_minus {
+ display: none;
+}
+.accordion_closed > .accordion_btn_plus {
+ display: inline-block;
+}
+.accordion_panel {
+ overflow-y: clip;
+ transition: max-height 0.25s ease-out;
+}
+.error {
+ color: darkred;
+ background: yellow;
+}
+.warning {
+ color: black;
+ background: yellow;
+}
+.hidden, .initially-hidden {
+ /* The framework-wide way of hiding elements is to assign them th
+ .hidden class. To make them visible again, remove it. The
+ !important qualifiers are unfortunate but sometimes necessary
+ when hidden element has other classes which specify
+ visibility-related options. The .initially-hidden class is for
+ pages which need to show, e.g., a progress widget while a large
+ WASM blob loads. Elements aside from that load-time widget can be
+ made .initially-hidden and then have that class removed once the
+ long-running startup process is done. See /pikchrshow for an
+ example. */
+ position: absolute !important;
+ opacity: 0 !important;
+ pointer-events: none !important;
+ display: none !important;
+}
+input {
+ max-width: 95%;
+}
+textarea {
+ max-width: 95%;
+}
+img {
+ max-width: 100%;
+}
+hr {
+ /* Needed to keep /dir README.txt from floating right in some skins */
+ clear: both;
+}
+
+/**
+ .tab-xxx: styles for fossil.tabs.js.
+*/
+.tab-container {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+}
+.tab-container > #fossil-status-bar {
+ margin-top: 0;
+}
+.tab-container > .tabs {
+ padding: 0.25em;
+ margin: 0;
+ display: flex;
+ flex-direction: column;
+ border-width: 1px;
+ border-style: outset;
+ border-color: inherit;
+}
+.tab-container > .tabs > .tab-panel {
+ align-self: stretch;
+ flex: 10 1 auto;
+ display: block;
+ border: 0;
+ padding: 0;
+ margin: 0;
+}
+.tab-container > .tab-bar {
+ display: flex;
+ flex-direction: row;
+ flex: 1 10 auto;
+ align-self: stretch;
+ flex-wrap: wrap;
+}
+.tab-container > .tab-bar > .tab-button {
+ display: inline-block;
+ border-radius: 0.25em 0.25em 0 0;
+ margin: 0 0.1em;
+ padding: 0.25em 0.75em;
+ align-self: baseline;
+ border-color: inherit;
+ border-width: 1px;
+ border-bottom: none;
+ border-top-style: inset;
+ border-left-style: inset;
+ border-right-style: inset;
+ cursor: pointer;
+ opacity: 0.6;
+}
+.tab-container > .tab-bar > .tab-button.selected {
+ text-decoration: underline;
+ opacity: 1.0;
+ border-top-style: outset;
+ border-left-style: outset;
+ border-right-style: outset;
+}
+
+/**
+ The flex-xxx classes can be used to create basic flexbox layouts
+ through the application of classes to the containing/contained
+ objects.
+*/
+.flex-container {
+ display: flex;
+}
+.flex-container.flex-row {
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+}
+.flex-container .flex-grow {
+ flex-grow: 10;
+ flex-shrink: 0;
+}
+.flex-container .flex-shrink {
+ flex-grow: 0;
+ flex-shrink: 10;
+}
+.flex-container.flex-row.stretch {
+ flex-wrap: wrap;
+ align-items: baseline;
+ justify-content: stretch;
+ margin: 0;
+}
+.flex-container.flex-column {
+ flex-direction: column;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: center;
+}
+.flex-container.flex-column.stretch {
+ align-items: stretch;
+ margin: 0;
+}
+.flex-container.child-gap-small > * {
+ margin: 0.25em;
+}
+#fossil-status-bar {
+ display: block;
+ border-width: 1px;
+ border-style: inset;
+ border-color: inherit;
+ min-height: 1.5em;
+ font-size: 1.2em;
+ padding: 0.2em;
+ margin: 0.25em 0;
+ flex: 0 0 auto;
+}
+.font-size-80 {
+ font-size: 80%;
+}
+.font-size-100 {
+ font-size: 100%;
+}
+.font-size-125 {
+ font-size: 125%;
+}
+.font-size-150 {
+ font-size: 150%;
+}
+.font-size-175 {
+ font-size: 175%;
+}
+.font-size-200 {
+ font-size: 200%;
+}
+
+/**
+ .input-with-label is intended to be a wrapper element which contain
+ both a LABEL tag and an INPUT or SELECT control. The wrapper is
+ "necessary", as opposed to placing the INPUT in the LABEL, so that
+ we can include multiple INPUT elements (e.g. a set of radio
+ buttons). Note that these elements must sometimes be BLOCK elements
+ (e.g. DIV) so that certain nesting constructs are legal.
+*/
+.input-with-label {
+ border: 1px inset rgba(128, 128, 128, 0.5);
+ border-radius: 0.25em;
+ padding: 0.1em;
+ margin: 0 0.5em;
+ display: inline-block
+ /* We would really like flex layout but changing that
+ currently introduces a good deal of UI breakage
+ to chase down. The advantage would be better alignment
+ of the contained elements. */;
+ cursor: default;
+ white-space: nowrap;
+}
+.submenu .input-with-label {
+ border: none;
+}
+.input-with-label > * {
+ vertical-align: middle;
+}
+.input-with-label > label {
+ display: inline; /* some skins set label display to block! */
+ cursor: pointer;
+ white-space: nowrap;
+}
+.input-with-label > input {
+ margin: 0;
+}
+.input-with-label > button {
+ margin: 0;
+}
+.input-with-label > select {
+ margin: 0;
+}
+.input-with-label > input[type=text] {
+ margin: 0;
+}
+.input-with-label > textarea {
+ margin: 0;
+}
+/* Browsers are unfortunately inconsistent in how they
+ align checkboxes and radio buttons, even if they're
+ given the same vertical-align value. 'middle' seems to
+ be the least bad option, rather than the ideal. */
+.input-with-label > input[type=checkbox] {
+ vertical-align: middle;
+}
+.input-with-label > input[type=radio] {
+ vertical-align: middle;
+}
+.input-with-label > label {
+ font-weight: initial;
+ margin: 0 0.25em 0 0.25em;
+ vertical-align: middle;
+}
+
+table.numbered-lines {
+ width: 100%;
+ table-layout: fixed /* required to keep ultra-wide code from exceeding
+ window width, and instead force a scrollbar
+ on them. */;
+}
+table.numbered-lines > tbody > tr {
+ line-height: 1.35;
+ white-space: pre;
+}
+table.numbered-lines > tbody > tr > td {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+ white-space: inherit;
+ margin: 0;
+ vertical-align: top;
+ padding: 0.25em 0 0 0 /*prevents slight overlap at top */;
+}
+table.numbered-lines td.line-numbers {
+ width: 4.5em;
+}
+table.numbered-lines td.line-numbers > pre {
+ margin: 0.25em/*must match top PADDING of td.file-content
+ > pre > code*/ 0 0 0;
+ padding: 0;
+ line-height: inherit;
+ font-size: inherit;
+ font-family: inherit;
+}
+table.numbered-lines td.line-numbers span {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ line-height: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ cursor: pointer;
+ white-space: pre;
+ margin-right: 2px/*keep selection from nudging the right column */;
+ text-align: right;
+}
+table.numbered-lines td.line-numbers span:hover {
+ background-color: rgba(112, 112, 112, 0.25);
+}
+table.numbered-lines td.file-content {
+ padding-left: 0.25em;
+}
+table.numbered-lines td.file-content > pre,
+table.numbered-lines td.file-content > pre > code {
+ margin: 0;
+ padding: 0;
+ line-height: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ white-space: pre;
+ display: block/*necessary for certain skins!*/;
+}
+table.numbered-lines td.file-content > pre {
+}
+table.numbered-lines td.file-content > pre > code {
+ overflow: auto;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.25em/*any top padding here must match the top MARGIN of
+ td.line-numbers's first span child or the
+ lines/code will get misaligned. */;
+ padding-bottom: 0.25em/*prevents a slight overlap at bottom from
+ triggering a scroller*/;
+}
+table.numbered-lines td.file-content > pre > code > * {
+ /* Defense against syntax highlighters indirectly messing up these
+ properties... */
+ line-height: inherit;
+ font-size: inherit;
+ font-family: inherit;
+}
+table.numbered-lines td.line-numbers span.selected-line/*replacement*/ {
+ font-weight: bold;
+ color: blue;
+ background-color: #d5d5ff;
+ border: 1px blue solid;
+ border-top-width: 0;
+ border-bottom-width: 0;
+ padding: 0;
+ margin: 0;
+}
+table.numbered-lines td.line-numbers span.selected-line.start {
+ border-top-width: 1px;
+ margin-top: -1px/*restore alignment*/;
+}
+table.numbered-lines td.line-numbers span.selected-line.end {
+ border-bottom-width: 1px;
+ margin-top: -1px/*restore alignment*/;
+}
+table.numbered-lines td.line-numbers span.selected-line.start.end {
+ margin-top: -2px/*restore alignment*/;
+}
+
+.fossil-tooltip {
+ text-align: center;
+ padding: 0.2em 1em;
+ border: 1px solid black;
+ border-radius: 0.5em;
+ position: absolute;
+ display: inline-block;
+ z-index: 19/*below default skin's hamburger popup*/;
+ box-shadow: -0.15em 0.15em 0.2em rgba(0, 0, 0, 0.75);
+ background-color: inherit;
+ color: inherit;
+}
+.fossil-PopupWidget {
+ /* This class is ALWAYS set on every fossil.PopupWidget instance, in
+ addition to client/app-configured classes. It should not get any
+ style - it is only used for DOM element selecting/filtering
+ purposes. */
+}
+.fossil-toast-message {
+ /* "toast"-style popup message.
+ See fossil.popupwidget:toast() */
+ position: absolute;
+ display: block;
+ z-index: 1001;
+ text-align: left;
+ padding: 0.15em 0.5em;
+ margin: 0;
+ font-size: 1em;
+ border-width: 1px;
+ border-style: solid;
+ border-color: rgba( 127, 127, 127, 0.75 );
+ border-radius: 0.25em;
+ background-color: rgba(20, 20, 20, 1)
+ /* problem: if we inherit the color it may either be
+ transparent or inherit translucency via the
+ skin, leaving it unreadable. Since we set the bg
+ color we must also set the fg color. */;
+ color: rgba(235, 235, 235, 0.9);
+}
+.fossil-PopupWidget a,
+.fossil-PopupWidget a:visited {
+ color: initial;
+}
+.fossil-toast-message.error,
+.fossil-toast-message.warning {
+ background: yellow;
+}
+.fossil-toast-message.error {
+ font-weight: bold;
+ color: darkred;
+ border-color: darkred;
+}
+.fossil-toast-message.warning {
+ color: black;
+}
+
+blockquote.file-content {
+ /* file content block in the /file page */
+ margin: 0 1em;
+}
+
+/* Generic sidebar styling inherited by skins that don't make their own
+ * arrangements. */
+.markdown blockquote, p.blockquote, .sidebar {
+ background-color: rgba(0, 0, 0, 0.05);
+ border-left: 3px solid #777;
+ padding: 0.1em 1em;
+}
+.sidebar {
+ /* Generic form that can be applied to any block element. */
+ font-size: 90%;
+}
+div.sidebar {
+ /* Special exception for div-type sidebars, where there is no p
+ * wrapper inside to give us the extra padding we want. */
+ padding: 1em;
+}
+div.sidebar:not(.no-label):before {
+ content: "Sidebar: ";
+ font-weight: bold;
+}
+
+
+/**
+ Circular "help" buttons intended to be placed to the right of
+ another element and hold text text for it. These typically get
+ initialized automatically at page startup via
+ fossil.popupwidget.js, and can be manually initialized/created
+ using window.fossil.helpButtonlets.setup/create(). All of their
+ child content (plain text and/or DOM elements) gets moved out of
+ the DOM and shown in a singleton popup when they are clicked. They
+ may be SPAN elements if their children are all inline elements,
+ otherwise they must be DIVs (block elements) so that nesting of
+ block-element content is legal.
+*/
+.help-buttonlet {
+ display: inline-block;
+ min-width: 1em;
+ max-width: 1em;
+ min-height: 1em;
+ max-height: 1em;
+ cursor: pointer;
+ margin: 0 0 0 0.35em;
+ background-image: /* white question mark on blue circular background */
+ url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' \
+viewBox='0 0 15.867574 15.867574'%3e%3ccircle cx='7.9337869' cy='7.9337869' r='7.9337869' \
+style='fill:%23f0f0f0;stroke-width:1' /%3e%3ccircle cx='7.9337869' cy='7.9337869' \
+r='6.9662519' style='fill:%23404040;stroke-width:1' /%3e%3ccircle cx='7.9337869' \
+cy='7.9337869' r='5.9987168' style='fill:%235080d0;stroke-width:1' /%3e%3cpath \
+d='M 9.2253789,9.8629486 H 6.5997716 v -0.356384 q 0,-0.5963983 0.2400139,-1.0546067 \
+0.240014,-0.4654816 1.0109681,-1.1782504 L 8.316235,6.8518647 Q 8.7308046,6.473661 \
+8.9199065,6.1390961 9.1162816,5.8045312 9.1162816,5.4699662 q 0,-0.5091205 -0.3491113,-0.7927734 \
+-0.3491111,-0.2909259 -0.9746021,-0.2909259 -0.5891252,0 -1.2728012,0.247287 \
+-0.6836761,0.240014 -1.4255375,0.720042 V 3.0698267 q 0.8800513,-0.3054724 1.6073661,-0.4509353 \
+0.7273151,-0.145463 1.403718,-0.145463 1.7746486,0 2.7056104,0.727315 0.930965,0.720042 \
+0.930965,2.1092135 0,0.7127686 -0.283654,1.2800746 -0.283652,0.5600324 -0.967329,1.2073428 \
+L 10.025425,8.2119439 Q 9.530851,8.6628792 9.3781148,8.9392588 9.2253789,9.2083654 \
+9.2253789,9.535657 Z M 6.5997716,10.939376 h 2.6256073 v 2.589241 H 6.5997716 Z' \
+style='fill:%23f8f8f8;stroke-width:1.35412836' /%3e%3c/svg%3e ");
+ background-repeat: no-repeat;
+ background-position: center;
+ /* When not using a background image, this additional style works
+ reasonably well along with a ::before content of "?": */
+ /*border-width: 1px;
+ border-style: outset;
+ border-radius: 0.5em;
+ font-size: 100%;
+ font-family: monspace;
+ font-weight: 700;
+ overflow: hidden;
+ background-color: rgba(54, 54, 255,1);
+ color: rgb(255, 255, 255);
+ text-align: center;
+ line-height: 1; */
+}
+/*.help-buttonlet::before {
+ content: "?";
+}*/
+/**
+ We really want to hide all help text via CSS but CSS cannot select
+ TEXT nodes. Thus we move them out of the way programmatically
+ during initialization.
+*/
+.help-buttonlet > *{}
+
+/**
+ CSS class for PopupWidget which wraps .help-buttonlet content.
+ They also have class fossil-tooltip. We need an overly-exact
+ selector here to be certain that this class's style overrides
+ that of fossil-tooltip.
+*/
+.fossil-tooltip.help-buttonlet-content {
+ cursor: default;
+ text-align: left;
+ border-style: outset;
+}
+
+noscript > .error {
+ /* Part of the style_emit_noscript_for_js_page() interface. */
+ padding: 1em;
+ font-size: 150%;
+}
+
+/************************************************************
+ pikchr...
+ DOM structure:
+ <DIV.pikchr-wrapper>
+ <DIV.pikchr-svg>
+ <SVG.pikchr>...</SVG>
+ </DIV.pikchr-svg>
+ <DIV.pikchr-src>
+ <PRE>pikchr source code</PRE>
+ <SPAN class='hidden'><A>link to open pikchr in /pikchrshow</A></SPAN>
+ <!-- ^^^ is unhidden and activated by JS code -->
+ </DIV.pikchr-src>
+ </DIV.pikchr-wrapper>
+
+************************************************************/
+div.pikchr-wrapper {/*outer wrapper elem for a pikchr construct*/}
+div.pikchr-svg {/*wrapper for SVG.pikchr element*/}
+svg.pikchr {/*pikchr SVG*/
+ width: 100%/*necessary for SOME SVGs for Chrome!*/;
+}
+
+div.pikchr-src {
+ /*Wrapper for source code view of a pikchr (see fossil.pikchr.js)*/
+ display: flex;
+ flex-direction: column;
+}
+div.pikchr-src > pre {
+ /*Source code for a pikchr*/
+ box-sizing: border-box;
+ text-align: left;
+}
+div.pikchr-src > span {
+ /*Wrapper for a link to open a pikchr in /pikchrshow*/
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 85%;
+}
+div.pikchr-src > span::before {
+ content: "[";
+}
+div.pikchr-src > span::after {
+ content: "]";
+}
+/* The .source-inline class tells the .source class that the
+ source view, when enabled, should be "inline" (same position
+ as the graphic), else the sources are shifted to the left as
+ if they were "plain text". */
+div.pikchr-wrapper.center:not(.source),
+div.pikchr-wrapper.center.source.source-inline{
+ text-align: center;
+ /* Reminder for The Future: this impl also works:
+
+ display: grid; place-items: center;
+
+ and does not require setting display:inline-block on the relevant
+ child items, but caniuse.com/css-grid suggests that some
+ still-seemingly-legitimate browsers don't support grid mode. */
+}
+div.pikchr-wrapper.center > div.pikchr-svg {
+ width: 100%/*necessary for Chrome!*/;
+}
+div.pikchr-wrapper.center:not(.source) > div.pikchr-src,
+div.pikchr-wrapper.center:not(.source) > div.pikchr-svg,
+/* ^^^ Centered non-source-view elements */
+div.pikchr-wrapper.center.source.source-inline div.pikchr-src,
+div.pikchr-wrapper.center.source.source-inline > div.pikchr-svg
+/* ^^^ Centered inline-source-view elements */{
+ display:inline-block/*allows parent text-align to do the alignment*/;
+ /* ^^^^ Browser incompatibility: inline-block causes the centered
+ pikchr to shrink to the point of illegiblity in Chrome. The
+ closest match on Chrome seems to be using 'unset', which centers
+ by virtue of stretching it to the width of the window. Similarly,
+ using {display: grid; place-items: center} centers and sizes well
+ on FF but Chrome shrinks it in the same way. */
+}
+div.pikchr-wrapper.indent:not(.source),
+div.pikchr-wrapper.indent.source.source-inline{
+ margin-left: 4em;
+}
+div.pikchr-wrapper.float-left:not(.source),
+div.pikchr-wrapper.float-left.source.source-inline {
+ float: left;
+ padding: 1em 2em;
+}
+div.pikchr-wrapper.float-right:not(.source),
+div.pikchr-wrapper.float-right.source.source-inline{
+ float: right;
+ padding: 1em 2em;
+}
+
+/* For pikchr-wrapper.source mode, toggle pre.pikchr-src and
+ svg.pikchr visibility... */
+div.pikchr-wrapper.source > div.pikchr-src {
+ /* Source code ^^^^^^^ is visible, else it is hidden */
+}
+div.pikchr-wrapper:not(.source) > div.pikchr-src {
+ /* Hide sources when image is being shown. */
+ position: absolute !important;
+ opacity: 0 !important;
+ pointer-events: none !important;
+ display: none !important;
+}
+div.pikchr-wrapper.source > div.pikchr-svg {
+ /* Hide image when sources are being shown. */
+ position: absolute !important;
+ opacity: 0 !important;
+ pointer-events: none !important;
+ display: none !important;
+}
+
+
+/* An icon element intended for use as a button/menu for
+ accessing app-specific settings. */
+.settings-icon {
+ /* Icon source: https://de.wikipedia.org/wiki/Datei:OOjs_UI_icon_settings.svg
+ MIT License. */
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg \
+xmlns='http://www.w3.org/2000/svg' width='24' height='24' \
+viewBox='0, 0, 24, 24'%3e%3cg id='settings'%3e%3cpath id='gear' \
+d='M3 4h3v2h-3zM12 4h9v2h-9zM8 3h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 \
+0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 11h9v2h-9zM18 11h3v2h-3zM14 10h2c.552 0 1 .448 \
+1 1v2c0 .552-.448 1-1 1h-2c-.552 0-1-.448-1-1v-2c0-.552.448-1 1-1zM3 18h6v2h-6zM15 \
+18h6v2h-6zM11 17h2c.552 0 1 .448 1 1v2c0 .552-.448 1-1 1h-2c-.552 \
+0-1-.448-1-1v-2c0-.552.448-1 1-1z'/%3e%3c/g%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: center;
+ display: inline-block;
+ min-height: 1em;
+ max-height: 1em;
+ min-width: 1em;
+ max-width: 1em;
+ margin: 0;
+ padding: 0.2em/*needed to avoid image truncation*/;
+ border: 1px solid rgba(0,0,0,0.0)/*avoid resize when hover style kicks in*/;
+ cursor: pointer;
+ border-radius: 0.25em;
+}
+.settings-icon:hover {
+ border: 1px outset rgba(127,127,127,1);
+}
+body.fossil-dark-style .settings-icon {
+ filter: invert(100%);
+}
+
+body.branch .brlist > table > tbody > tr:hover:not(.selected),
+body.branch .brlist > table > tbody > tr.selected {
+ background-color: #ffc;
+}
+body.branch .brlist > table > tbody td:first-child > input {
+ cursor: pointer;
+}
+body.branch .brlist > table > tbody > tr > td:nth-child(1) {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+body.branch .submenu > a.timeline-link {
+ display: none;
+}
+body.branch .submenu > a.timeline-link.selected {
+ display: inline;
+}
+
+/* Candidate fonts for various forms of monospaced text. Collected here
+ * to avoid repeating this long list of fonts. */
+code, kbd, pre, samp, tt, var,
+ div.markdown ol.footnotes > li.fn-joined > sup.fn-joined,
+ table.numbered-lines > tbody > tr,
+ tr.diffskip > td.chunkctrl,
+ #fossil-status-bar,
+ .monospace {
+ font-family: "MesloLGSDZ Nerd Font Mono", /* 2025 hotness */
+ "Source Code Pro", /* 2012 hotness */
+ "Menlo", "Monaco", "SF Mono", /* Safari reverted to Courier in 2022 */
+ monospace; /* let OS/browser default take over */
+}
+
+div.markdown > ol.footnotes {
+ font-size: 90%;
+}
+div.markdown > ol.footnotes > li {
+ margin-bottom: 0.5em;
+}
+div.markdown ol.footnotes > li.fn-joined > sup.fn-joined {
+ color: gray;
+}
+div.markdown ol.footnotes > li.fn-joined > sup.fn-joined::after {
+ content: "(joined from multiple locations) ";
+}
+div.markdown ol.footnotes > li.fn-misreference {
+ margin-top: 0.75em;
+ margin-bottom: 0.75em;
+}
+div.markdown ol.footnotes > li.fn-toodeep > i,
+div.markdown ol.footnotes > li.fn-misreference,
+div.markdown ol.footnotes > li.fn-unreferenced {
+ color: gray;
+}
+div.markdown ol.footnotes > li.fn-misreference > span {
+ color: red;
+}
+div.markdown ol.footnotes > li.fn-misreference > span::after {
+ content: " (use of undefined label).";
+}
+div.markdown ol.footnotes > li.fn-unreferenced {
+ padding-left: 0.5em;
+}
+div.markdown ol.footnotes > li.fn-unreferenced > code {
+ color: red;
+}
+div.markdown ol.footnotes > li.fn-unreferenced > i::after {
+ content: " was defined but is not referenced";
+}
+div.markdown ol.footnotes > li.fn-toodeep > i::after {
+ content: " depth of nesting of inline footnotes exceeded the limit";
+}
+div.markdown ol.footnotes > li.fn-toodeep > pre,
+div.markdown ol.footnotes > li.fn-unreferenced > pre {
+ color: gray;
+ font-size: 85%;
+ padding-left: 0.5em;
+ margin-top: 0.25em;
+ border-left: 2px solid red;
+}
+div.markdown ol.footnotes > li.fn-toodeep > pre {
+ margin-left: 0.5em;
+}
+div.markdown > ol.footnotes > li > .fn-backrefs {
+ margin-right: 0.5em;
+ font-weight: bold;
+}
+div.markdown > ol.footnotes > li > .fn-backrefs > a,
+div.markdown sup.noteref > a {
+ padding-left: 2px;
+ padding-right: 2px;
+}
+div.markdown sup.noteref.misref,
+div.markdown sup.noteref.misref > a {
+ color: red;
+ font-size: 90%;
+}
+div.markdown sup.noteref > a:target,
+div.markdown span.notescope:target > sup.noteref > a,
+div.markdown span.notescope:hover > sup.noteref > a,
+div.markdown > ol.footnotes > li > .fn-backrefs > a:target {
+ background: gold;
+}
+div.markdown span.notescope:hover,
+div.markdown span.notescope:target {
+ border-bottom: 2px solid gold;
+}
+
+/* Cause <dd> elements to be aligned complete to the
+** right of their <dt> on help pages. */
+dl.helpOptions {
+ display: grid;
+ grid-template-columns: max-content 1fr;
+ column-gap: 1rem;
+}
+dl.helpOptions > dt {
+ grid-column: 1;
+}
+dl.helpOptions > dd {
+ grid-column: 2;
+ margin: 0;
+}
+div.helpPage blockquote {
+ margin-left: 0.2em;
+}
+
+/* .attach* = styles for file attachments */
+section.attachlist {}
+details.attachlist > summary {
+ cursor: pointer;
+}
+/* .Attacher is the top container element used by the JS Attacher
+ class in fossil.attach.js. */
+.Attacher {
+ margin-bottom: 1em;
+ display: flex;
+ flex-direction: column;
+ gap: 0.75em;
+}
+.Attacher.reverse {
+ flex-direction: column-reverse;
+}
+.Attacher .attach-row {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5em;
+ padding: 0.75em;
+ border: 1px dashed #ccc;
+ border-radius: 0.25em;
+ background-color: #fafafa;
+}
+.Attacher .error {
+ padding: 0.5em;
+ background-color: #d32f2f;
+ color: #fff;
+}
+.Attacher .error a {
+ color: inherit;
+ text-decoration: underline;
+}
+body.fossil-dark-style .Attacher .attach-row {
+ background-color: initial;
+}
+.Attacher .attach-dropzone {
+ padding: 1em;
+ text-align: center;
+ background: #ffffff;
+ border: 1px solid #ddd;
+ cursor: pointer;
+ border-radius: 0.25em;
+ transition: background-color 0.15s linear;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+}
+body.fossil-dark-style .Attacher .attach-dropzone{
+ background: initial;
+}
+.Attacher .attach-dropzone.populated {
+ background-color: #f1f8e9;
+ border-color: #8bc34a;
+ border-style: solid;
+ text-align: left;
+}
+body.fossil-dark-style .Attacher .attach-dropzone.populated{
+ background-color: initial;
+}
+.Attacher .attach-dropzone.dragover {
+ background-color: #e1f5fe;
+ color: black;
+ border-color: #03a9f4;
+}
+body.fossil-dark-style .Attacher .attach-dropzone.dragover{
+ background-color: #e1f5fe;
+ border-color: #03a9f4;
+}
+.Attacher .thumbnail {
+ max-width: 10em;
+ max-height: 10em;
+ margin: 0 1em;
+}
+.Attacher .attach-row-info{
+ font-family: monospace;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+}
+.Attacher .attach-filename {}
+.Attacher .attach-size {/*size and mimetype*/}
+.Attacher .attach-desc {
+ max-width: initial;
+ width: 100%;
+ box-sizing: border-box;
+ min-height: 4em;
+ padding: 0.5em;
+ font-family: inherit;
+ resize: vertical;
+}
+.Attacher .attach-row-remove {
+ align-self: center;
+ padding: 0.25em 0.75em;
+ margin-left: 1em;
+ background-color: #d32f2f;
+ color: #fff;
+ border: none;
+ border-radius: 0.25em;
+ cursor: pointer;
+ font-weight: bold;
+}
+.Attacher .attach-row-remove:hover {
+ background-color: #b71c1c;
+}
+.Attacher .attach-controls {
+ display: flex;
+ flex-direction: row;
+ gap: 1em;
+}
+.Attacher .attach-controls .attach-add-button {
+ padding: 0.5em 1em;
+ cursor: pointer;
+ flex-grow: 2;
+ line-height: initial/*work around an inherited alignment quirk*/;
+}
+
+/* .animate-X and their associated @keyframes are used by various
+ widgets to animate their comings and goings. */
+.animate-entrance {
+ animation: slideFadeIn 0.25s linear forwards;
+ transform-origin: top;
+ overflow: hidden /*prevent content bleeding during expansion*/;
+}
+.animate-exit {
+ animation: slideFadeOut 0.25s linear forwards;
+ transform-origin: top;
+ overflow: hidden;
+}
+@keyframes slideFadeIn {
+ 0% {
+ opacity: 0;
+ transform: translateY(-1em/*must match slideFadeOut*/);
+ max-height: 0;
+ }
+ 100% {
+ opacity: 1;
+ transform: translateY(0);
+ max-height: 100em /*a value safely larger than the widget*/;
+ }
+}
+@keyframes slideFadeOut {
+ 0% {
+ opacity: 1;
+ transform: translateY(0);
+ max-height: 100em /*must match slideFadeIn*/;
+ }
+ 100% {
+ opacity: 0;
+ transform: translateY(-1em/*must match slideFadeIn*/);
+ max-height: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+}
+
+/* Objects in the "desktoponly" class are invisible on mobile */
+@media screen and (max-width: 600px) {
+ .desktoponly {
+ display: none;
+ }
+}
+/* Float sidebars to the right of the main content only if there's room. */
+@media screen and (min-width: 600px) {
+ .sidebar {
+ float: right;
+ max-width: 33%;
+ margin-left: 1em;
+ }
+}
+/* Objects in the "wideonly" class are invisible only on wide-screen desktops */
+@media screen and (max-width: 1200px) {
+ .wideonly {
+ display: none;
+ }
+}