mirror of
https://github.com/taylorchen/obsidian-press.git
synced 2026-07-22 06:52:12 +00:00
314 lines
5.8 KiB
CSS
314 lines
5.8 KiB
CSS
/* Obsidian Press — Default PDF Stylesheet */
|
|
|
|
/* === Base === */
|
|
:root {
|
|
--text-color: #1a1a1a;
|
|
--bg-color: #ffffff;
|
|
--code-bg: #f5f5f5;
|
|
--border-color: #e0e0e0;
|
|
--accent-color: #7c3aed;
|
|
}
|
|
|
|
@page {
|
|
size: A4;
|
|
margin: 25mm;
|
|
}
|
|
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
font-size: 11pt;
|
|
line-height: 1.6;
|
|
color: var(--text-color);
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* === Headings === */
|
|
h1, h2, h3, h4, h5, h6 {
|
|
margin-top: 1.5em;
|
|
margin-bottom: 0.5em;
|
|
font-weight: 600;
|
|
line-height: 1.3;
|
|
page-break-after: avoid;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 2em;
|
|
border-bottom: 2px solid var(--accent-color);
|
|
padding-bottom: 0.3em;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 1.5em;
|
|
border-bottom: 1px solid var(--border-color);
|
|
padding-bottom: 0.2em;
|
|
}
|
|
|
|
h3 { font-size: 1.25em; }
|
|
h4 { font-size: 1.1em; }
|
|
h5 { font-size: 1em; }
|
|
h6 { font-size: 0.9em; color: #666; }
|
|
|
|
/* === Paragraphs === */
|
|
p {
|
|
margin: 0.8em 0;
|
|
orphans: 3;
|
|
widows: 3;
|
|
}
|
|
|
|
/* === Links === */
|
|
a {
|
|
color: var(--accent-color);
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* === Images === */
|
|
img {
|
|
max-width: 100%;
|
|
height: auto;
|
|
display: block;
|
|
margin: 1em auto;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
/* Pandoc-style image attributes */
|
|
img[width] {
|
|
display: inline-block;
|
|
}
|
|
|
|
figure {
|
|
margin: 1.5em 0;
|
|
text-align: center;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
figcaption {
|
|
font-size: 0.9em;
|
|
color: #666;
|
|
margin-top: 0.5em;
|
|
}
|
|
|
|
/* === Code === */
|
|
code {
|
|
font-family: "Fira Code", "JetBrains Mono", "SF Mono", "Cascadia Code", Consolas, monospace;
|
|
font-size: 0.85em;
|
|
background: var(--code-bg);
|
|
padding: 0.15em 0.4em;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
pre {
|
|
background: var(--code-bg);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 6px;
|
|
padding: 1em;
|
|
overflow-x: auto;
|
|
page-break-inside: avoid;
|
|
margin: 1em 0;
|
|
}
|
|
|
|
pre code {
|
|
background: none;
|
|
padding: 0;
|
|
font-size: 0.85em;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* Pandoc code blocks */
|
|
.sourceCode {
|
|
background: var(--code-bg);
|
|
}
|
|
|
|
pre.sourceCode {
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
/* === Blockquotes === */
|
|
blockquote {
|
|
margin: 1em 0;
|
|
padding: 0.5em 1em;
|
|
border-left: 4px solid var(--accent-color);
|
|
background: #f8f8f8;
|
|
color: #555;
|
|
}
|
|
|
|
blockquote p {
|
|
margin: 0.3em 0;
|
|
}
|
|
|
|
/* === Callouts (Obsidian-style) === */
|
|
.callout {
|
|
margin: 1.5em 0;
|
|
padding: 1em;
|
|
border-radius: 8px;
|
|
border-left: 4px solid;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.callout-title {
|
|
font-weight: 600;
|
|
font-size: 1.05em;
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
.callout-body {
|
|
font-size: 0.95em;
|
|
}
|
|
|
|
.callout-body p {
|
|
margin: 0.3em 0;
|
|
}
|
|
|
|
/* Callout type colors */
|
|
.callout-note { border-color: #448aff; background: #e8f0fe; }
|
|
.callout-note .callout-title { color: #1a73e8; }
|
|
|
|
.callout-tip { border-color: #00bfa5; background: #e0f7fa; }
|
|
.callout-tip .callout-title { color: #00897b; }
|
|
|
|
.callout-important { border-color: #7c4dff; background: #ede7f6; }
|
|
.callout-important .callout-title { color: #651fff; }
|
|
|
|
.callout-warning { border-color: #ff9100; background: #fff3e0; }
|
|
.callout-warning .callout-title { color: #e65100; }
|
|
|
|
.callout-caution { border-color: #ff5252; background: #ffebee; }
|
|
.callout-caution .callout-title { color: #d50000; }
|
|
|
|
.callout-abstract { border-color: #448aff; background: #e8eaf6; }
|
|
.callout-abstract .callout-title { color: #283593; }
|
|
|
|
.callout-info { border-color: #448aff; background: #e3f2fd; }
|
|
.callout-info .callout-title { color: #1565c0; }
|
|
|
|
.callout-todo { border-color: #448aff; background: #e8f0fe; }
|
|
.callout-todo .callout-title { color: #1a73e8; }
|
|
|
|
.callout-example { border-color: #7c4dff; background: #f3e5f5; }
|
|
.callout-example .callout-title { color: #7b1fa2; }
|
|
|
|
.callout-quote { border-color: #9e9e9e; background: #fafafa; }
|
|
.callout-quote .callout-title { color: #616161; }
|
|
|
|
.callout-success { border-color: #00c853; background: #e8f5e9; }
|
|
.callout-success .callout-title { color: #2e7d32; }
|
|
|
|
.callout-question { border-color: #ff6d00; background: #fff8e1; }
|
|
.callout-question .callout-title { color: #e65100; }
|
|
|
|
.callout-failure { border-color: #ff1744; background: #fce4ec; }
|
|
.callout-failure .callout-title { color: #c62828; }
|
|
|
|
.callout-danger { border-color: #d50000; background: #ffebee; }
|
|
.callout-danger .callout-title { color: #b71c1c; }
|
|
|
|
.callout-bug { border-color: #f44336; background: #fbe9e7; }
|
|
.callout-bug .callout-title { color: #bf360c; }
|
|
|
|
/* === Tables === */
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin: 1em 0;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
thead {
|
|
background: #f0f0f0;
|
|
}
|
|
|
|
th, td {
|
|
padding: 0.5em 0.8em;
|
|
border: 1px solid var(--border-color);
|
|
text-align: left;
|
|
}
|
|
|
|
th {
|
|
font-weight: 600;
|
|
}
|
|
|
|
tbody tr:nth-child(even) {
|
|
background: #fafafa;
|
|
}
|
|
|
|
/* === Lists === */
|
|
ul, ol {
|
|
margin: 0.5em 0;
|
|
padding-left: 2em;
|
|
}
|
|
|
|
li {
|
|
margin: 0.3em 0;
|
|
}
|
|
|
|
li > ul, li > ol {
|
|
margin: 0.2em 0;
|
|
}
|
|
|
|
/* Task lists */
|
|
li.task-list-item {
|
|
list-style: none;
|
|
margin-left: -1.5em;
|
|
}
|
|
|
|
li.task-list-item input[type="checkbox"] {
|
|
margin-right: 0.5em;
|
|
}
|
|
|
|
/* === Horizontal Rule === */
|
|
hr {
|
|
border: none;
|
|
border-top: 2px solid var(--border-color);
|
|
margin: 2em 0;
|
|
}
|
|
|
|
/* === Math === */
|
|
.math-display {
|
|
margin: 1.5em 0;
|
|
text-align: center;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.math-inline {
|
|
font-style: italic;
|
|
}
|
|
|
|
/* === Mark (highlights) === */
|
|
mark {
|
|
background: #fff176;
|
|
padding: 0.1em 0.3em;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
/* === Superscript / Subscript === */
|
|
sup { font-size: 0.75em; vertical-align: super; }
|
|
sub { font-size: 0.75em; vertical-align: sub; }
|
|
|
|
/* === Print adjustments === */
|
|
@media print {
|
|
body {
|
|
font-size: 10pt;
|
|
}
|
|
|
|
h1, h2, h3 {
|
|
page-break-after: avoid;
|
|
}
|
|
|
|
pre, blockquote, table, .callout, figure {
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
a {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
a[href^="http"]::after {
|
|
content: " (" attr(href) ")";
|
|
font-size: 0.8em;
|
|
color: #999;
|
|
}
|
|
}
|