- Editorial web platform built with Node.js, Express, EJS, and Vanilla CSS - Markdown content engine with YAML frontmatter, bilingual variants, and hot-reload watcher - Unified SQLite with FTS5 search indexing, query logging, and schema filters - Centered editorial post layout with margin-docked left TOC and mobile bottom sheet - WordPress-grade comment system with moderation dashboard and bulk operations under /guanli - Complete SEO suite (JSON-LD structured data, RSS/Atom feeds, XML sitemap, robots.txt) - CI/CD workflows for linting, security audits (Gitleaks), automated tests, and Docker releases
119 lines
1.9 KiB
CSS
119 lines
1.9 KiB
CSS
/**
|
|
* Okaidia PrismJS theme matching WordPress Prismatic plugin
|
|
*/
|
|
code[class*="language-"],
|
|
pre[class*="language-"] {
|
|
color: #f8f8f2;
|
|
background: none;
|
|
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
|
|
font-family: 'Maple Mono NF CN', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
font-size: 0.95em;
|
|
text-align: left;
|
|
white-space: pre;
|
|
word-spacing: normal;
|
|
word-break: normal;
|
|
word-wrap: normal;
|
|
line-height: 1.6;
|
|
tab-size: 2;
|
|
hyphens: none;
|
|
}
|
|
|
|
pre[class*="language-"] {
|
|
padding: 1.25rem 1.5rem;
|
|
margin: 1.75rem 0;
|
|
overflow: auto;
|
|
border-radius: 12px;
|
|
background: #272822;
|
|
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
|
|
}
|
|
|
|
:not(pre) > code[class*="language-"],
|
|
pre[class*="language-"] {
|
|
background: #272822;
|
|
}
|
|
|
|
/* Inline code outside pre */
|
|
:not(pre) > code {
|
|
padding: 0.2em 0.4em;
|
|
border-radius: 4px;
|
|
color: #e83e8c;
|
|
background-color: rgba(0, 0, 0, 0.05);
|
|
font-family: 'Maple Mono NF CN', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
font-size: 0.88em;
|
|
}
|
|
|
|
.token.comment,
|
|
.token.prolog,
|
|
.token.doctype,
|
|
.token.cdata {
|
|
color: #8292a2;
|
|
}
|
|
|
|
.token.punctuation {
|
|
color: #f8f8f2;
|
|
}
|
|
|
|
.token.namespace {
|
|
opacity: .7;
|
|
}
|
|
|
|
.token.property,
|
|
.token.tag,
|
|
.token.constant,
|
|
.token.symbol,
|
|
.token.deleted {
|
|
color: #f92672;
|
|
}
|
|
|
|
.token.boolean,
|
|
.token.number {
|
|
color: #ae81ff;
|
|
}
|
|
|
|
.token.selector,
|
|
.token.attr-name,
|
|
.token.string,
|
|
.token.char,
|
|
.token.builtin,
|
|
.token.inserted {
|
|
color: #a6e22e;
|
|
}
|
|
|
|
.token.operator,
|
|
.token.entity,
|
|
.token.url,
|
|
.language-css .token.string,
|
|
.style .token.string,
|
|
.token.variable {
|
|
color: #f8f8f2;
|
|
}
|
|
|
|
.token.atrule,
|
|
.token.attr-value,
|
|
.token.function,
|
|
.token.class-name {
|
|
color: #e6db74;
|
|
}
|
|
|
|
.token.keyword {
|
|
color: #66d9ef;
|
|
}
|
|
|
|
.token.regex,
|
|
.token.important {
|
|
color: #fd971f;
|
|
}
|
|
|
|
.token.important,
|
|
.token.bold {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.token.italic {
|
|
font-style: italic;
|
|
}
|
|
|
|
.token.entity {
|
|
cursor: help;
|
|
}
|