/* ── Light Theme (Default) ────────────────────────────────── */ :root { --bg-body: #f4f1ee; --bg-elevated: #faf8f5; --bg-sidebar: #f4f1ee; --text-primary: #1e1a2e; --text-heading: #0f0c1a; --text-secondary: #3d3457; --text-muted: #6b5f82; --border-light: #e2dde8; --border-medium: #cec6d8; --border-accent: #b8aac8; --link-color: #9b2335; --link-hover: #6e1522; --link-border: rgba(155, 35, 53, 0.25); --link-border-hover: rgba(155, 35, 53, 0.6); --strong-color: #0f0c1a; --marker-color: #6b3d7a; --blockquote-bg: #f7f4f9; --blockquote-border: #9b2335; --blockquote-text: #3d3457; --code-inline-bg: #f0ebf5; --code-inline-color: #7c2d8c; --code-block-bg: #12101e; --code-block-color: #d4ccdf; --table-border: #cec6d8; --table-header-bg: #f0ecf5; --table-header-text: #2a2040; --table-row-border: #e8e3ef; --table-cell-text: #3d3457; --hr-color: #c8b850; } /* ── Dark Theme ───────────────────────────────────────────── */ @media (prefers-color-scheme: dark) { :root { --bg-body: #0e0c18; --bg-elevated: #15121f; --bg-sidebar: #0d0d0f; --text-primary: #cfc8dc; --text-heading: #e4dff0; --text-secondary: #9d93b5; --text-muted: #6b5f82; --border-light: #201c30; --border-medium: #2e2844; --border-accent: #3d3557; --link-color: #e05567; --link-hover: #f07d8a; --link-border: rgba(224, 85, 103, 0.3); --link-border-hover: rgba(224, 85, 103, 0.6); --strong-color: #e4dff0; --marker-color: #a07ab5; --blockquote-bg: #15121f; --blockquote-border: #c0293d; --blockquote-text: #9d93b5; --code-inline-bg: #1f1930; --code-inline-color: #c084d8; --code-block-bg: #080710; --code-block-color: #cfc8dc; --table-border: #2e2844; --table-header-bg: #15121f; --table-header-text: #c8c0d8; --table-row-border: #201c30; --table-cell-text: #9d93b5; --hr-color: #8c7a20; } } /* ── Reset & Base ─────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; } html { font-size: 16px; -webkit-text-size-adjust: 100%; -moz-tab-size: 4; tab-size: 4; } @font-face { font-family: "Bookinsanity"; src: url("/fonts/Bookinsanity.otf") format("opentype"); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: "Nodesto Caps Condensed"; src: url("/fonts/Nodesto Caps Condensed.otf") format("opentype"); font-weight: normal; } body { margin: 0 auto; padding: 0; line-height: 1.7; font-family: "Bookinsanity", system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: var(--text-primary); background-color: var(--bg-body); word-break: break-word; overflow-wrap: break-word; } #app { min-height: 100vh; } /* ── Layout Container ─────────────────────────────────────── */ .prose-wrapper { max-width: 720px; margin: 0 auto; padding: 2rem 1.5rem 4rem; } /* ── Typography ───────────────────────────────────────────── */ h1, h2, h3, h4, h5, h6 { margin-top: 60px; margin-bottom: 0.6em; line-height: 1.3; color: var(--text-heading); font-weight: 700; font-family: "Nodesto Caps Condensed", system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; } h1 { font-size: 2.25rem; padding-bottom: 0.5em; border-bottom: 2px solid var(--hr-color); letter-spacing: -0.02em; } h2 { font-size: 1.75rem; padding-bottom: 0.35em; border-bottom: 1px solid var(--border-medium); } h3 { font-size: 1.375rem; } h4 { font-size: 1.125rem; } h5 { font-size: 1rem; } h6 { font-size: 0.875rem; color: var(--text-muted); } p { margin: 0 0 1.25em; line-height: 1.8; } /* ── Links ────────────────────────────────────────────────── */ a { color: var(--link-color); text-decoration: none; border-bottom: 1px solid var(--link-border); transition: color 0.2s, border-color 0.2s; &.dead-link { color: var(--text-muted); border-bottom-color: var(--border-light); pointer-events: none; } } a:hover { color: var(--link-hover); border-bottom-color: var(--link-border-hover); &.dead-link { color: var(--text-muted); border-bottom-color: var(--border-light); } } /* ── Emphasis & Strong ────────────────────────────────────── */ strong { font-weight: 700; color: var(--strong-color); } em { font-style: italic; } /* ── Lists ────────────────────────────────────────────────── */ ul, ol { margin: 0 0 1.25em; padding-left: 1.5rem; } li { margin-bottom: 0.35em; line-height: 1.7; } li::marker { color: var(--marker-color); } /* ── Blockquote ───────────────────────────────────────────── */ blockquote { margin: 0 0 1.25em; padding: 0.85em 1.25em; border-left: 4px solid var(--blockquote-border); background: var(--blockquote-bg); color: var(--blockquote-text); border-radius: 0 6px 6px 0; } blockquote p:last-child { margin-bottom: 0; } /* ── Inline Code ──────────────────────────────────────────── */ code { font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Consolas, monospace; font-size: 0.875em; padding: 0.15em 0.4em; background: var(--code-inline-bg); color: var(--code-inline-color); border-radius: 4px; } /* ── Code Blocks ──────────────────────────────────────────── */ pre { margin: 0 0 1.25em; padding: 0; background: var(--code-block-bg); border-radius: 8px; overflow: auto; } pre code { font-size: 0.835rem; line-height: 1.65; padding: 0; background: none; color: var(--code-block-color); border-radius: 0; } /* ── Tables ───────────────────────────────────────────────── */ table { width: 100%; margin: 0 0 1.25em; border-collapse: separate; border-spacing: 0; border: 1px solid var(--table-border); border-radius: 8px; overflow: hidden; font-size: 0.9375rem; } thead { background: var(--table-header-bg); } th { font-weight: 600; color: var(--table-header-text); border-bottom: 2px solid var(--table-border); } td { padding: 0.6rem 1rem; border-bottom: 1px solid var(--table-row-border); color: var(--table-cell-text); } tr:last-child td { border-bottom: none; } /* ── Horizontal Rule ──────────────────────────────────────── */ hr { margin: 2em 0; border: none; border-top: 2px solid var(--hr-color); } /* ── Images ───────────────────────────────────────────────── */ img { max-width: 600px; height: auto; border-radius: 8px; display: block; margin: 0.5em auto; } /* ── Forms ────────────────────────────────────────────────── */ input, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } /* ── Responsive ───────────────────────────────────────────── */ @media (max-width: 640px) { html { font-size: 15px; } .prose-wrapper { padding: 1.25rem 1rem 3rem; } h1 { font-size: 1.75rem; } h2 { font-size: 1.4rem; } h3 { font-size: 1.2rem; } }