From 4514d6f6d498bcb32266ef1153d9dec38b5212aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Attali?= Date: Sat, 1 Apr 2017 15:48:10 +0200 Subject: [PATCH] #76 Allow theme switch --- QLMarkdown.xcodeproj/project.pbxproj | 4 + github.css | 682 ++++++++++++++++++++++++ markdown.m | 71 +-- styles.css | 754 ++++++--------------------- 4 files changed, 881 insertions(+), 630 deletions(-) create mode 100644 github.css diff --git a/QLMarkdown.xcodeproj/project.pbxproj b/QLMarkdown.xcodeproj/project.pbxproj index 0714b2a..c1306bc 100644 --- a/QLMarkdown.xcodeproj/project.pbxproj +++ b/QLMarkdown.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 0A80BFA70E21A2ED00C8BF14 /* markdown.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A80BFA60E21A2ED00C8BF14 /* markdown.m */; }; 0A80BFB20E21A90900C8BF14 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A80BFB10E21A90900C8BF14 /* Cocoa.framework */; }; 0A80BFCC0E21B61A00C8BF14 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A80BFCB0E21B61A00C8BF14 /* WebKit.framework */; }; + 0C8824D11E8FE4F600ED18A5 /* github.css in Resources */ = {isa = PBXBuildFile; fileRef = 0C8824D01E8FE4F600ED18A5 /* github.css */; }; 2C05A19C06CAA52B00D84F6F /* GeneratePreviewForURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */; }; 4446D0050F41899C00BAC3F4 /* discount-wrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 4446CFF20F41899C00BAC3F4 /* discount-wrapper.c */; }; 4446D0060F41899C00BAC3F4 /* discount-wrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 4446CFF30F41899C00BAC3F4 /* discount-wrapper.h */; }; @@ -50,6 +51,7 @@ 0A80BFB10E21A90900C8BF14 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 0A80BFCB0E21B61A00C8BF14 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = ""; }; 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 0C8824D01E8FE4F600ED18A5 /* github.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = github.css; sourceTree = ""; }; 2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratePreviewForURL.m; sourceTree = ""; }; 4446CFF20F41899C00BAC3F4 /* discount-wrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "discount-wrapper.c"; sourceTree = ""; }; 4446CFF30F41899C00BAC3F4 /* discount-wrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "discount-wrapper.h"; sourceTree = ""; }; @@ -130,6 +132,7 @@ 8D576317048677EA00EA77CD /* Info.plist */, 8D5B49A704867FD3000E48DA /* InfoPlist.strings */, 4446D0230F41AD4700BAC3F4 /* styles.css */, + 0C8824D01E8FE4F600ED18A5 /* github.css */, ); name = Resources; sourceTree = ""; @@ -260,6 +263,7 @@ 8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */, 4446D0240F41AD4700BAC3F4 /* styles.css in Resources */, AB40554314D008B3009A583A /* blocktags in Resources */, + 0C8824D11E8FE4F600ED18A5 /* github.css in Resources */, AB40554614D008B3009A583A /* README.markdown in Resources */, AB40554714D008B3009A583A /* update.sh in Resources */, AB40554A14D00A6A009A583A /* update-discount.sh in Resources */, diff --git a/github.css b/github.css new file mode 100644 index 0000000..6c9ab98 --- /dev/null +++ b/github.css @@ -0,0 +1,682 @@ +@font-face { + font-family: octicons-link; + src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); +} + +body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + color: #333; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; + padding: 3rem 3rem 8rem 3rem; +} + +body .pl-c { + color: #969896; +} + +body .pl-c1, +body .pl-s .pl-v { + color: #0086b3; +} + +body .pl-e, +body .pl-en { + color: #795da3; +} + +body .pl-smi, +body .pl-s .pl-s1 { + color: #333; +} + +body .pl-ent { + color: #63a35c; +} + +body .pl-k { + color: #a71d5d; +} + +body .pl-s, +body .pl-pds, +body .pl-s .pl-pse .pl-s1, +body .pl-sr, +body .pl-sr .pl-cce, +body .pl-sr .pl-sre, +body .pl-sr .pl-sra { + color: #183691; +} + +body .pl-v { + color: #ed6a43; +} + +body .pl-id { + color: #b52a1d; +} + +body .pl-ii { + color: #f8f8f8; + background-color: #b52a1d; +} + +body .pl-sr .pl-cce { + font-weight: bold; + color: #63a35c; +} + +body .pl-ml { + color: #693a17; +} + +body .pl-mh, +body .pl-mh .pl-en, +body .pl-ms { + font-weight: bold; + color: #1d3e81; +} + +body .pl-mq { + color: #008080; +} + +body .pl-mi { + font-style: italic; + color: #333; +} + +body .pl-mb { + font-weight: bold; + color: #333; +} + +body .pl-md { + color: #bd2c00; + background-color: #ffecec; +} + +body .pl-mi1 { + color: #55a532; + background-color: #eaffea; +} + +body .pl-mdr { + font-weight: bold; + color: #795da3; +} + +body .pl-mo { + color: #1d3e81; +} + +body .octicon { + display: inline-block; + vertical-align: text-top; + fill: currentColor; +} + +body a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +body a:active, +body a:hover { + outline-width: 0; +} + +body strong { + font-weight: inherit; +} + +body strong { + font-weight: bolder; +} + +body h1 { + font-size: 2em; + margin: 0.67em 0; +} + +body img { + border-style: none; +} + +body svg:not(:root) { + overflow: hidden; +} + +body code, +body kbd, +body pre { + font-family: monospace, monospace; + font-size: 1em; +} + +body hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +body input { + font: inherit; + margin: 0; +} + +body input { + overflow: visible; +} + +body [type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +body * { + box-sizing: border-box; +} + +body input { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +body a { + color: #4078c0; + text-decoration: none; +} + +body a:hover, +body a:active { + text-decoration: underline; +} + +body strong { + font-weight: 600; +} + +body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid #ddd; +} + +body hr::before { + display: table; + content: ""; +} + +body hr::after { + display: table; + clear: both; + content: ""; +} + +body table { + border-spacing: 0; + border-collapse: collapse; +} + +body td, +body th { + padding: 0; +} + +body h1, +body h2, +body h3, +body h4, +body h5, +body h6 { + margin-top: 0; + margin-bottom: 0; +} + +body h1 { + font-size: 32px; + font-weight: 600; +} + +body h2 { + font-size: 24px; + font-weight: 600; +} + +body h3 { + font-size: 20px; + font-weight: 600; +} + +body h4 { + font-size: 16px; + font-weight: 600; +} + +body h5 { + font-size: 14px; + font-weight: 600; +} + +body h6 { + font-size: 12px; + font-weight: 600; +} + +body p { + margin-top: 0; + margin-bottom: 10px; +} + +body blockquote { + margin: 0; +} + +body ul, +body ol { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; +} + +body ol ol, +body ul ol { + list-style-type: lower-roman; +} + +body ul ul ol, +body ul ol ol, +body ol ul ol, +body ol ol ol { + list-style-type: lower-alpha; +} + +body dd { + margin-left: 0; +} + +body code { + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; + font-size: 12px; +} + +body pre { + margin-top: 0; + margin-bottom: 0; + font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; +} + +body .octicon { + vertical-align: text-bottom; +} + +body input { + -webkit-font-feature-settings: "liga" 0; + font-feature-settings: "liga" 0; +} + +body::before { + display: table; + content: ""; +} + +body::after { + display: table; + clear: both; + content: ""; +} + +body>*:first-child { + margin-top: 0 !important; +} + +body>*:last-child { + margin-bottom: 0 !important; +} + +body a:not([href]) { + color: inherit; + text-decoration: none; +} + +body .anchor { + float: left; + padding-right: 4px; + margin-left: -20px; + line-height: 1; +} + +body .anchor:focus { + outline: none; +} + +body p, +body blockquote, +body ul, +body ol, +body dl, +body table, +body pre { + margin-top: 0; + margin-bottom: 16px; +} + +body hr { + height: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e7e7e7; + border: 0; +} + +body blockquote { + padding: 0 1em; + color: #777; + border-left: 0.25em solid #ddd; +} + +body blockquote>:first-child { + margin-top: 0; +} + +body blockquote>:last-child { + margin-bottom: 0; +} + +body kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #555; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #ccc; + border-bottom-color: #bbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbb; +} + +body h1, +body h2, +body h3, +body h4, +body h5, +body h6 { + margin-top: 24px; + margin-bottom: 16px; + font-weight: 600; + line-height: 1.25; +} + +body h1 .octicon-link, +body h2 .octicon-link, +body h3 .octicon-link, +body h4 .octicon-link, +body h5 .octicon-link, +body h6 .octicon-link { + color: #000; + vertical-align: middle; + visibility: hidden; +} + +body h1:hover .anchor, +body h2:hover .anchor, +body h3:hover .anchor, +body h4:hover .anchor, +body h5:hover .anchor, +body h6:hover .anchor { + text-decoration: none; +} + +body h1:hover .anchor .octicon-link, +body h2:hover .anchor .octicon-link, +body h3:hover .anchor .octicon-link, +body h4:hover .anchor .octicon-link, +body h5:hover .anchor .octicon-link, +body h6:hover .anchor .octicon-link { + visibility: visible; +} + +body h1 { + padding-bottom: 0.3em; + font-size: 2em; + border-bottom: 1px solid #eee; +} + +body h2 { + padding-bottom: 0.3em; + font-size: 1.5em; + border-bottom: 1px solid #eee; +} + +body h3 { + font-size: 1.25em; +} + +body h4 { + font-size: 1em; +} + +body h5 { + font-size: 0.875em; +} + +body h6 { + font-size: 0.85em; + color: #777; +} + +body ul, +body ol { + padding-left: 2em; +} + +body ul ul, +body ul ol, +body ol ol, +body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +body li>p { + margin-top: 16px; +} + +body li+li { + margin-top: 0.25em; +} + +body dl { + padding: 0; +} + +body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: bold; +} + +body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +body table { + display: block; + width: 100%; + overflow: auto; +} + +body table th { + font-weight: bold; +} + +body table th, +body table td { + padding: 6px 13px; + border: 1px solid #ddd; +} + +body table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} + +body table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +body img { + max-width: 100%; + box-sizing: content-box; + background-color: #fff; +} + +body code { + padding: 0; + padding-top: 0.2em; + padding-bottom: 0.2em; + margin: 0; + font-size: 85%; + background-color: rgba(0,0,0,0.04); + border-radius: 3px; +} + +body code::before, +body code::after { + letter-spacing: -0.2em; + content: "\00a0"; +} + +body pre { + word-wrap: normal; +} + +body pre>code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +body .highlight { + margin-bottom: 16px; +} + +body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +body .highlight pre, +body pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f7f7f7; + border-radius: 3px; +} + +body pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; +} + +body pre code::before, +body pre code::after { + content: normal; +} + +body .pl-0 { + padding-left: 0 !important; +} + +body .pl-1 { + padding-left: 3px !important; +} + +body .pl-2 { + padding-left: 6px !important; +} + +body .pl-3 { + padding-left: 12px !important; +} + +body .pl-4 { + padding-left: 24px !important; +} + +body .pl-5 { + padding-left: 36px !important; +} + +body .pl-6 { + padding-left: 48px !important; +} + +body .full-commit .btn-outline:not(:disabled):hover { + color: #4078c0; + border: 1px solid #4078c0; +} + +body kbd { + display: inline-block; + padding: 3px 5px; + font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; + line-height: 10px; + color: #555; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #ccc; + border-bottom-color: #bbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbb; +} + +body :checked+.radio-label { + position: relative; + z-index: 1; + border-color: #4078c0; +} + +body .task-list-item { + list-style-type: none; +} + +body .task-list-item+.task-list-item { + margin-top: 3px; +} + +body .task-list-item input { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} + +body hr { + border-bottom-color: #eee; +} diff --git a/markdown.m b/markdown.m index a025c5f..5a27d41 100644 --- a/markdown.m +++ b/markdown.m @@ -4,35 +4,44 @@ NSData* renderMarkdown(NSURL* url) { @autoreleasepool { - NSString *styles = [[NSString alloc] initWithContentsOfFile:[[NSBundle bundleWithIdentifier: @"com.fiatdev.QLMarkdown"] - pathForResource:@"styles" ofType:@"css"] - encoding:NSUTF8StringEncoding - error:nil]; - - NSStringEncoding usedEncoding = 0; - NSError *e = nil; - - NSString *source = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&usedEncoding error:&e]; - - if (usedEncoding == 0) { - NSLog(@"Wasn't able to determine encoding for file “%@”", [url path]); - } - - char *output = convert_markdown_to_string([source UTF8String]); - NSString *html = [NSString stringWithFormat:@"\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "%@" - "\n" - "", - styles, url, [NSString stringWithUTF8String:output]]; - - free(output); - return [html dataUsingEncoding:NSUTF8StringEncoding]; + NSString *domainName = @"com.fiatdev.QLMarkdown"; + + // command line switch theme + NSDictionary *defaults = [[NSUserDefaults standardUserDefaults] persistentDomainForName:domainName]; + NSString *styleName = [[defaults valueForKey:@"theme"] lowercaseString]; + + if ([styleName length] == 0 || [styleName isEqual:@"default"]) { + styleName = @"styles"; + } + NSString *styles = [[NSString alloc] initWithContentsOfFile:[[NSBundle bundleWithIdentifier:domainName] + pathForResource:styleName ofType:@"css"] + encoding:NSUTF8StringEncoding + error:nil]; + + NSStringEncoding usedEncoding = 0; + NSError *e = nil; + + NSString *source = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&usedEncoding error:&e]; + + if (usedEncoding == 0) { + NSLog(@"Wasn't able to determine encoding for file “%@”", [url path]); + } + + char *output = convert_markdown_to_string([source UTF8String]); + NSString *html = [NSString stringWithFormat:@"\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "%@" + "\n" + "", + styles, url, [NSString stringWithUTF8String:output]]; + + free(output); + return [html dataUsingEncoding:NSUTF8StringEncoding]; } -} \ No newline at end of file +} diff --git a/styles.css b/styles.css index 62e4cdd..f613d18 100644 --- a/styles.css +++ b/styles.css @@ -1,682 +1,238 @@ -@font-face { - font-family: octicons-link; - src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); -} +/* Extracted and interpreted from adcstyle.css and frameset_styles.css */ +/* body */ body { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - line-height: 1.5; - color: #333; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-size: 16px; - line-height: 1.5; - word-wrap: break-word; - padding: 3rem 3rem 8rem 3rem; -} - -body .pl-c { - color: #969896; -} - -body .pl-c1, -body .pl-s .pl-v { - color: #0086b3; -} - -body .pl-e, -body .pl-en { - color: #795da3; -} - -body .pl-smi, -body .pl-s .pl-s1 { - color: #333; -} - -body .pl-ent { - color: #63a35c; -} - -body .pl-k { - color: #a71d5d; -} - -body .pl-s, -body .pl-pds, -body .pl-s .pl-pse .pl-s1, -body .pl-sr, -body .pl-sr .pl-cce, -body .pl-sr .pl-sre, -body .pl-sr .pl-sra { - color: #183691; -} - -body .pl-v { - color: #ed6a43; -} - -body .pl-id { - color: #b52a1d; -} - -body .pl-ii { - color: #f8f8f8; - background-color: #b52a1d; -} - -body .pl-sr .pl-cce { - font-weight: bold; - color: #63a35c; -} - -body .pl-ml { - color: #693a17; -} - -body .pl-mh, -body .pl-mh .pl-en, -body .pl-ms { - font-weight: bold; - color: #1d3e81; -} - -body .pl-mq { - color: #008080; -} - -body .pl-mi { - font-style: italic; - color: #333; -} - -body .pl-mb { - font-weight: bold; - color: #333; -} - -body .pl-md { - color: #bd2c00; - background-color: #ffecec; -} - -body .pl-mi1 { - color: #55a532; - background-color: #eaffea; -} - -body .pl-mdr { - font-weight: bold; - color: #795da3; -} - -body .pl-mo { - color: #1d3e81; -} - -body .octicon { - display: inline-block; - vertical-align: text-top; - fill: currentColor; -} - -body a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} - -body a:active, -body a:hover { - outline-width: 0; -} - -body strong { - font-weight: inherit; -} - -body strong { - font-weight: bolder; -} - -body h1 { - font-size: 2em; - margin: 0.67em 0; -} - -body img { - border-style: none; -} - -body svg:not(:root) { - overflow: hidden; -} - -body code, -body kbd, -body pre { - font-family: monospace, monospace; - font-size: 1em; -} - -body hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -body input { - font: inherit; - margin: 0; -} - -body input { - overflow: visible; -} - -body [type="checkbox"] { - box-sizing: border-box; - padding: 0; -} - -body * { - box-sizing: border-box; -} - -body input { - font-family: inherit; - font-size: inherit; - line-height: inherit; + margin: 20px 40px; + background-color: #fff; + color: #000; + font: 13px -apple-system, "Helvetica Neue", "Myriad Pro", "Lucida Grande", Lucida, Verdana, sans-serif; + overflow: auto; + word-wrap: break-word; + -webkit-hyphens: auto; } -body a { - color: #4078c0; - text-decoration: none; +/* links */ +a:link { + color: #00f; + text-decoration: none; } -body a:hover, -body a:active { - text-decoration: underline; +a:visited { + color: #00a; + text-decoration: none; } -body strong { - font-weight: 600; +a:hover { + color: #f60; + text-decoration: underline; } -body hr { - height: 0; - margin: 15px 0; - overflow: hidden; - background: transparent; - border: 0; - border-bottom: 1px solid #ddd; +a:active { + color: #f60; + text-decoration: underline; } -body hr::before { - display: table; - content: ""; -} -body hr::after { - display: table; - clear: both; - content: ""; -} +/* html tags */ +/* Work around IE/Win code size bug - courtesy Jesper, waffle.wootest.net */ -body table { - border-spacing: 0; - border-collapse: collapse; +* html code{ + font-size: 101%; } -body td, -body th { - padding: 0; +* html pre { + font-size: 101%; } -body h1, -body h2, -body h3, -body h4, -body h5, -body h6 { - margin-top: 0; - margin-bottom: 0; -} +/* code */ -body h1 { - font-size: 32px; - font-weight: 600; +pre, code { + font-size: 11px; font-family: monaco, courier, consolas, monospace; } -body h2 { - font-size: 24px; - font-weight: 600; +pre { + margin-top: 5px; + margin-bottom: 10px; + border: 1px solid #c7cfd5; + background: #f1f5f9; + margin: 20px 0; + padding: 8px; + text-align: left; + overflow: auto; + word-wrap: normal; } -body h3 { - font-size: 20px; - font-weight: 600; +hr { + color: #919699; + size: 1; + width: 100%; + noshade: "noshade"; } -body h4 { - font-size: 16px; - font-weight: 600; -} +/* headers */ -body h5 { - font-size: 14px; - font-weight: 600; -} -body h6 { - font-size: 12px; - font-weight: 600; +h1, h2, h3, h4, h5, h6 { + font-family: -apple-system, "Helvetica Neue", "Myriad Pro", "Lucida Grande", Lucida, Verdana, sans-serif; + font-weight: bold; } -body p { - margin-top: 0; - margin-bottom: 10px; +h1 { + margin-top: 1em; + margin-bottom: 25px; + color: #000; + font-weight: bold; + font-size: 30px; } -body blockquote { - margin: 0; +h2 { + margin-top: 2.5em; + font-size: 24px; + color: #000; + padding-bottom: 2px; + border-bottom: 1px solid #919699; } -body ul, -body ol { - padding-left: 0; - margin-top: 0; - margin-bottom: 0; +h3 { + margin-top: 2em; + margin-bottom: .5em; + font-size: 17px; + color: #000; } -body ol ol, -body ul ol { - list-style-type: lower-roman; +h4 { + margin-top: 2em; + margin-bottom: .5em; + font-size: 15px; + color: #000; } -body ul ul ol, -body ul ol ol, -body ol ul ol, -body ol ol ol { - list-style-type: lower-alpha; +h5 { + margin-top: 20px; + margin-bottom: .5em; + padding: 0; + font-size: 13px; + color: #000; } -body dd { - margin-left: 0; +h6 { + margin-top: 20px; + margin-bottom: .5em; + padding: 0; + font-size: 11px; + color: #000; } -body code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; - font-size: 12px; +p { + margin-top: 0px; + margin-bottom: 10px; } -body pre { - margin-top: 0; - margin-bottom: 0; - font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; -} +/* lists */ -body .octicon { - vertical-align: text-bottom; +ul { + list-style: square outside; + margin: 0 0 0 30px; + padding: 0 0 12px 6px; } -body input { - -webkit-font-feature-settings: "liga" 0; - font-feature-settings: "liga" 0; +li { + margin-top: 7px; } -body::before { - display: table; - content: ""; +ol { + list-style-type: decimal; + list-style-position: outside; + margin: 0 0 0 30px; + padding: 0 0 12px 6px; } -body::after { - display: table; - clear: both; - content: ""; +ol ol { + list-style-type: lower-alpha; + list-style-position: outside; + margin: 7px 0 0 30px; + padding: 0 0 0 10px; } -body>*:first-child { - margin-top: 0 !important; +ul ul { + margin-left: 40px; + padding: 0 0 0 6px; } -body>*:last-child { - margin-bottom: 0 !important; -} +li > p { display: inline } +li > p + p { display: block } +li > a + p { display: block } -body a:not([href]) { - color: inherit; - text-decoration: none; -} -body .anchor { - float: left; - padding-right: 4px; - margin-left: -20px; - line-height: 1; -} +/* table */ -body .anchor:focus { - outline: none; +table { + border-top: 1px solid #919699; + border-left: 1px solid #919699; + border-spacing: 0; } -body p, -body blockquote, -body ul, -body ol, -body dl, -body table, -body pre { - margin-top: 0; - margin-bottom: 16px; +table th { + padding: 4px 8px 4px 8px; + background: #E2E2E2; + font-size: 12px; + border-bottom: 1px solid #919699; + border-right: 1px solid #919699; } -body hr { - height: 0.25em; - padding: 0; - margin: 24px 0; - background-color: #e7e7e7; - border: 0; +table th p { + font-weight: bold; + margin-bottom: 0px; } -body blockquote { - padding: 0 1em; - color: #777; - border-left: 0.25em solid #ddd; +table td { + padding: 8px; + font-size: 12px; + vertical-align: top; + border-bottom: 1px solid #919699; + border-right: 1px solid #919699; } -body blockquote>:first-child { - margin-top: 0; +table td p { + margin-bottom: 0px; } -body blockquote>:last-child { - margin-bottom: 0; +table td p + p { + margin-top: 5px; } -body kbd { - display: inline-block; - padding: 3px 5px; - font-size: 11px; - line-height: 10px; - color: #555; - vertical-align: middle; - background-color: #fcfcfc; - border: solid 1px #ccc; - border-bottom-color: #bbb; - border-radius: 3px; - box-shadow: inset 0 -1px 0 #bbb; +table td p + p + p { + margin-top: 5px; } -body h1, -body h2, -body h3, -body h4, -body h5, -body h6 { - margin-top: 24px; - margin-bottom: 16px; - font-weight: 600; - line-height: 1.25; -} - -body h1 .octicon-link, -body h2 .octicon-link, -body h3 .octicon-link, -body h4 .octicon-link, -body h5 .octicon-link, -body h6 .octicon-link { - color: #000; - vertical-align: middle; - visibility: hidden; -} - -body h1:hover .anchor, -body h2:hover .anchor, -body h3:hover .anchor, -body h4:hover .anchor, -body h5:hover .anchor, -body h6:hover .anchor { - text-decoration: none; -} - -body h1:hover .anchor .octicon-link, -body h2:hover .anchor .octicon-link, -body h3:hover .anchor .octicon-link, -body h4:hover .anchor .octicon-link, -body h5:hover .anchor .octicon-link, -body h6:hover .anchor .octicon-link { - visibility: visible; -} - -body h1 { - padding-bottom: 0.3em; - font-size: 2em; - border-bottom: 1px solid #eee; -} - -body h2 { - padding-bottom: 0.3em; - font-size: 1.5em; - border-bottom: 1px solid #eee; -} - -body h3 { - font-size: 1.25em; -} - -body h4 { - font-size: 1em; -} - -body h5 { - font-size: 0.875em; -} - -body h6 { - font-size: 0.85em; - color: #777; -} - -body ul, -body ol { - padding-left: 2em; -} - -body ul ul, -body ul ol, -body ol ol, -body ol ul { - margin-top: 0; - margin-bottom: 0; -} - -body li>p { - margin-top: 16px; -} - -body li+li { - margin-top: 0.25em; -} - -body dl { - padding: 0; -} - -body dl dt { - padding: 0; - margin-top: 16px; - font-size: 1em; - font-style: italic; - font-weight: bold; -} - -body dl dd { - padding: 0 16px; - margin-bottom: 16px; -} - -body table { - display: block; - width: 100%; - overflow: auto; -} - -body table th { - font-weight: bold; -} - -body table th, -body table td { - padding: 6px 13px; - border: 1px solid #ddd; -} - -body table tr { - background-color: #fff; - border-top: 1px solid #ccc; -} - -body table tr:nth-child(2n) { - background-color: #f8f8f8; -} - -body img { - max-width: 100%; - box-sizing: content-box; - background-color: #fff; -} - -body code { - padding: 0; - padding-top: 0.2em; - padding-bottom: 0.2em; - margin: 0; - font-size: 85%; - background-color: rgba(0,0,0,0.04); - border-radius: 3px; -} - -body code::before, -body code::after { - letter-spacing: -0.2em; - content: "\00a0"; -} - -body pre { - word-wrap: normal; -} - -body pre>code { - padding: 0; - margin: 0; - font-size: 100%; - word-break: normal; - white-space: pre; - background: transparent; - border: 0; -} - -body .highlight { - margin-bottom: 16px; -} - -body .highlight pre { - margin-bottom: 0; - word-break: normal; -} - -body .highlight pre, -body pre { - padding: 16px; - overflow: auto; - font-size: 85%; - line-height: 1.45; - background-color: #f7f7f7; - border-radius: 3px; -} - -body pre code { - display: inline; - max-width: auto; - padding: 0; - margin: 0; - overflow: visible; - line-height: inherit; - word-wrap: normal; - background-color: transparent; - border: 0; -} - -body pre code::before, -body pre code::after { - content: normal; -} - -body .pl-0 { - padding-left: 0 !important; -} - -body .pl-1 { - padding-left: 3px !important; -} - -body .pl-2 { - padding-left: 6px !important; -} - -body .pl-3 { - padding-left: 12px !important; -} - -body .pl-4 { - padding-left: 24px !important; -} - -body .pl-5 { - padding-left: 36px !important; -} - -body .pl-6 { - padding-left: 48px !important; -} - -body .full-commit .btn-outline:not(:disabled):hover { - color: #4078c0; - border: 1px solid #4078c0; -} +/* forms */ -body kbd { - display: inline-block; - padding: 3px 5px; - font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; - line-height: 10px; - color: #555; - vertical-align: middle; - background-color: #fcfcfc; - border: solid 1px #ccc; - border-bottom-color: #bbb; - border-radius: 3px; - box-shadow: inset 0 -1px 0 #bbb; +form { + margin: 0; } -body :checked+.radio-label { - position: relative; - z-index: 1; - border-color: #4078c0; +button { + margin: 3px 0 10px 0; } -body .task-list-item { - list-style-type: none; +input { + vertical-align: middle; + padding: 0; + margin: 0 0 5px 0; } -body .task-list-item+.task-list-item { - margin-top: 3px; +select { + vertical-align: middle; + padding: 0; + margin: 0 0 3px 0; } -body .task-list-item input { - margin: 0 0.2em 0.25em -1.6em; - vertical-align: middle; +textarea { + margin: 0 0 10px 0; + width: 100%; } -body hr { - border-bottom-color: #eee; +img { + max-width: 100%; + height: auto; }