UNPKG

c4dslbuilder

Version:

A CLI tool designed to compile a folder structure of markdowns and mermaid files into a site, pdf, single file markdown or a collection of markdowns with links - inspired by c4builder

520 lines (433 loc) 8.69 kB
/* * Markdown PDF CSS * CSS file bundled from: https://github.com/yzane/vscode-markdown-pdf.git and optimised */ /* Page setup for PDF generation */ @page { margin: 2cm; @bottom-right { content: counter(page); font-size: 10px; color: #666; } } /* Suppress running header on the first page (title page) */ @page :first { @top-center { content: none; } } body { font-family: 'Meiryo', 'Segoe WPC', 'Segoe UI', 'SFUIText-Light', 'HelveticaNeue-Light', sans-serif, 'Droid Sans Fallback'; font-size: 14px; padding: 0 12px; line-height: 22px; word-wrap: break-word; } pre { background-color: #f8f8f8; border: 1px solid #cccccc; border-radius: 3px; overflow-x: auto; white-space: pre-wrap; overflow-wrap: break-word; word-break: break-word; page-break-inside: avoid; } pre:not(.hljs) { padding: 23px; line-height: 19px; } blockquote { background: rgba(127, 127, 127, 0.1); border-color: rgba(0, 122, 204, 0.5); border-left: 5px solid; margin: 0 7px 0 5px; padding: 0 16px 0 10px; page-break-inside: avoid; } .emoji { height: 1.4em; } /* for inline code */ :not(pre):not(.hljs) > code { color: #c9ae75; /* Change the old color so it seems less like an error */ font-size: inherit; } /* Page Break : use <div class="page"/> to insert page break -------------------------------------------------------- */ .page { page-break-after: always; } /* Additional page-break rules for better PDF output */ li { page-break-inside: avoid; } code { word-wrap: break-word; overflow-wrap: break-word; } /* Prevent code blocks from overflowing page width */ pre code { white-space: pre-wrap; word-wrap: break-word; overflow-wrap: break-word; word-break: break-word; } #code-csp-warning { position: fixed; top: 0; right: 0; color: white; margin: 16px; text-align: center; font-size: 12px; font-family: sans-serif; background-color: #444444; cursor: pointer; padding: 6px; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.25); } #code-csp-warning:hover { text-decoration: none; background-color: #007acc; box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.25); } body.scrollBeyondLastLine { margin-bottom: calc(100vh - 22px); } body.showEditorSelection .code-line { position: relative; } body.showEditorSelection .code-active-line:before, body.showEditorSelection .code-line:hover:before { content: ''; display: block; position: absolute; top: 0; left: -12px; height: 100%; } body.showEditorSelection li.code-active-line:before, body.showEditorSelection li.code-line:hover:before { left: -30px; } .vscode-light.showEditorSelection .code-active-line:before { border-left: 3px solid rgba(0, 0, 0, 0.15); } .vscode-light.showEditorSelection .code-line:hover:before { border-left: 3px solid rgba(0, 0, 0, 0.4); } .vscode-dark.showEditorSelection .code-active-line:before { border-left: 3px solid rgba(255, 255, 255, 0.4); } .vscode-dark.showEditorSelection .code-line:hover:before { border-left: 3px solid rgba(255, 255, 255, 0.6); } .vscode-high-contrast.showEditorSelection .code-active-line:before { border-left: 3px solid rgba(255, 160, 0, 0.7); } .vscode-high-contrast.showEditorSelection .code-line:hover:before { border-left: 3px solid rgba(255, 160, 0, 1); } img { max-width: 100%; max-height: 100%; page-break-inside: avoid; display: block; margin: 1.5em 0; } a { color: #4080d0; text-decoration: none; } a:focus, input:focus, select:focus, textarea:focus { outline: 1px solid -webkit-focus-ring-color; outline-offset: -1px; } hr { border: 0; height: 2px; border-bottom: 2px solid; } h1 { padding-bottom: 0.3em; line-height: 1.2; border-bottom-width: 1px; border-bottom-style: solid; page-break-after: avoid; page-break-before: auto; } h2 { page-break-after: avoid; page-break-before: avoid; } h3 { page-break-after: avoid; page-break-before: avoid; } h4 { page-break-after: avoid; page-break-before: avoid; } h1, h2, h3 { font-weight: normal; } /* Utility classes for page-break control */ .chapter-break { page-break-before: always; } .no-break { page-break-before: auto !important; page-break-after: auto !important; page-break-inside: auto !important; } .break-before { page-break-before: always; } h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { font-size: inherit; line-height: auto; } a:hover { color: #4080d0; text-decoration: underline; } table { border-collapse: collapse; page-break-inside: avoid; } table > thead > tr > th { text-align: left; border-bottom: 1px solid; } table > thead > tr > th, table > thead > tr > td, table > tbody > tr > th, table > tbody > tr > td { padding: 5px 10px; } table > tbody > tr + tr > td { border-top: 1px solid; } code { font-family: Menlo, Monaco, Consolas, 'Droid Sans Mono', 'Courier New', monospace, 'Droid Sans Fallback'; font-size: 14px; line-height: 19px; } body.wordWrap pre { white-space: pre-wrap; } .mac code { font-size: 12px; line-height: 18px; } pre:not(.hljs), pre.hljs code > div { padding: 16px; border-radius: 3px; overflow: auto; } .vscode-light, .vscode-light pre code { color: rgb(30, 30, 30); } .vscode-dark, .vscode-dark pre code { color: #ddd; } .vscode-high-contrast, .vscode-high-contrast pre code { color: white; } .vscode-light code { color: #a31515; } .vscode-dark code { color: #d7ba7d; } .vscode-light pre:not(.hljs), .vscode-light code > div { background-color: rgba(220, 220, 220, 0.4); } .vscode-dark pre:not(.hljs), .vscode-dark code > div { background-color: rgba(10, 10, 10, 0.4); } .vscode-high-contrast pre:not(.hljs), .vscode-high-contrast code > div { background-color: rgb(0, 0, 0); } .vscode-high-contrast h1 { border-color: rgb(0, 0, 0); } .vscode-light table > thead > tr > th { border-color: rgba(0, 0, 0, 0.69); } .vscode-dark table > thead > tr > th { border-color: rgba(255, 255, 255, 0.69); } .vscode-light h1, .vscode-light hr, .vscode-light table > tbody > tr + tr > td { border-color: rgba(0, 0, 0, 0.18); } .vscode-dark h1, .vscode-dark hr, .vscode-dark table > tbody > tr + tr > td { border-color: rgba(255, 255, 255, 0.18); } .vscode-light blockquote, .vscode-dark blockquote { background: rgba(127, 127, 127, 0.1); border-color: rgba(0, 122, 204, 0.5); } .vscode-high-contrast blockquote { background: transparent; border-color: #fff; } /* Technical documentation enhancements */ p { widows: 2; orphans: 2; } /* Landscape page for very wide diagrams */ @page landscape { size: a4 landscape; } .landscape { page: landscape; } /* Running header with document title */ @page { @top-center { content: string(doctitle); font-size: 9px; color: #999; } } /* Set document title from first h1 for running header */ body h1:first-of-type { string-set: doctitle content(); } /* Figure caption styling for diagram labels */ figcaption, .figure-caption, .caption { text-align: center; font-size: 12px; color: #555; margin-top: 0.5em; font-style: italic; } /* Prevent large diagrams from overflowing */ img.mermaid, img.diagram, .mermaid svg, .diagram svg { max-height: 80vh; width: auto; } .diagram-fit { max-width: 100%; height: auto; } /* Keep sections together where possible */ section, article { page-break-inside: auto; } /* Print-optimised font sizes */ @media print { body { font-size: 11pt; line-height: 1.5; } h1 { font-size: 20pt; } h2 { font-size: 16pt; } h3 { font-size: 14pt; } pre, code { font-size: 9pt; } } /* Tomorrow Theme */ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ /* Original theme - https://github.com/chriskempson/tomorrow-theme */ /* Tomorrow Comment */ .hljs-comment, .hljs-quote { color: #8e908c; } /* Tomorrow Red */ .hljs-variable, .hljs-template-variable, .hljs-tag, .hljs-name, .hljs-selector-id, .hljs-selector-class, .hljs-regexp, .hljs-deletion { color: #c82829; } /* Tomorrow Orange */ .hljs-number, .hljs-built_in, .hljs-builtin-name, .hljs-literal, .hljs-type, .hljs-params, .hljs-meta, .hljs-link { color: #f5871f; } /* Tomorrow Yellow */ .hljs-attribute { color: #eab700; } /* Tomorrow Green */ .hljs-string, .hljs-symbol, .hljs-bullet, .hljs-addition { color: #718c00; } /* Tomorrow Blue */ .hljs-title, .hljs-section { color: #4271ae; } /* Tomorrow Purple */ .hljs-keyword, .hljs-selector-tag { color: #8959a8; } .hljs { display: block; overflow-x: auto; color: #4d4d4c; padding: 0.5em; } .hljs-emphasis { font-style: italic; } .hljs-strong { font-weight: bold; }