aboutsummaryrefslogtreecommitdiffstats
path: root/static/css
diff options
context:
space:
mode:
Diffstat (limited to 'static/css')
-rw-r--r--static/css/style.css893
1 files changed, 893 insertions, 0 deletions
diff --git a/static/css/style.css b/static/css/style.css
new file mode 100644
index 0000000..16dbe65
--- /dev/null
+++ b/static/css/style.css
@@ -0,0 +1,893 @@
+:root {
+ --btn-bg: #f0f0f0;
+ --btn-border: #cccccc;
+ --btn-color: #333333;
+ --btn-bg-hover: #e0e0e0;
+ --btn-border-hover: #aaaaaa;
+
+ --width-max: 75ch;
+ --font-secondary: "Georgia", "Noto Serif", "Times New Roman", serif;
+ --font-size-primary: 1.08rem;
+ --font-size-secondary: 1.05rem;
+
+ --font-size-h1: calc(var(--font-size-primary) * 1.953125); /* ≈2.11rem ≈33.8px */
+ --font-size-h2: calc(var(--font-size-primary) * 1.5625); /* ≈1.69rem ≈27.0px */
+ --font-size-h3: calc(var(--font-size-primary) * 1.25); /* ≈1.35rem ≈21.6px */
+ --font-size-h4: calc(var(--font-size-primary) * 1.0); /* ≈1.08rem ≈17.3px */
+ --font-size-h5: calc(var(--font-size-primary) * 0.875); /* ≈0.945rem ≈15.1px */
+ --font-size-h6: calc(var(--font-size-primary) * 0.75);
+
+ /* --body-bg-color: #fbf8f2; */
+ /* --body-bg-color: #fff; */
+ --body-bg-color: #eee;
+ --bold-text-color: #1e1e1e;
+ --body-text-color: #2b2b2b;
+
+
+ --link-color: #03539e;
+ --link-visited-color: #5e4684;
+
+ --table-border-color: #e6dfd1;
+ --table-th-bg-color: #f3efe6;
+ --img-border-color: #e6dfd1;
+ --code-bg-color: #f4efe4;
+ --code-text-color: #362c21;
+ --blockquote-border-color: #c0b6a4;
+ --blockquote-text-color: #5e5a52;
+
+ --upvoted-color: #c47062;
+ --caption-text-color: #7d7870;
+ --summary-text-color: #6b6660;
+ --toc-text-color: #d7cebc;
+ --toc-hover-color: #b7aa8f;
+ --music-bg-hover-light: #ede4d4;
+ --music-bg-light: rgba(237, 228, 212, 0.5);
+ --music-text-secondary: #7d7870;
+
+ --music-shadow:
+ 0 10px 15px -3px rgba(80, 70, 50, 0.08),
+ 0 4px 6px -2px rgba(80, 70, 50, 0.04);
+
+ /* ── 标题 & 图标 ── */
+ --title-color: #4d4840;
+ --svg-size: 0.85em;
+}
+
+h1 { font-size: var(--font-size-h1); font-weight: 700; line-height: 1.2; margin: 0.67em 0; }
+h2 { font-size: var(--font-size-h2); font-weight: 600; line-height: 1.25; margin: 0.83em 0; }
+h3 { font-size: var(--font-size-h3); font-weight: 600; line-height: 1.3; margin: 1em 0; }
+h4 { font-size: var(--font-size-h4); font-weight: 600; line-height: 1.4; margin: 1.33em 0; }
+h5 { font-size: var(--font-size-h5); font-weight: 500; line-height: 1.5; margin: 1.67em 0; text-transform: uppercase; }
+h6 { font-size: var(--font-size-h6); font-weight: 500; line-height: 1.5; margin: 2em 0; color: #666; }
+
+p, li {
+ font-size: var(--font-size-primary);
+ line-height: 2;
+}
+
+p, details {
+ margin: 0;
+}
+
+p, details {
+ margin: 1em 0;
+}
+
+/* .recent-title { */
+/* border: none; */
+/* font-weight: bold; */
+/* } */
+
+.grouped {
+ margin-right: 0.5rem;
+}
+
+.recent-date {
+ display: block;
+}
+
+summary, summary p {
+ color: var(--summary-text-color);
+}
+
+:is(article, .summary) p:not(.music-card *) {
+ margin-top: 1.6rem;
+ line-height: 1.8;
+ letter-spacing: 0.05em;
+ margin-bottom: 1.5rem;
+}
+
+gnu {
+ display: none;
+}
+
+h1,
+h2 {
+ margin: 0;
+ padding: 0;
+}
+
+.site-title {
+ margin: 15px 0 15px 0;
+ font-size: 2.15em;
+ font-weight: 700;
+}
+
+.badge-88x31 {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 5px;
+}
+
+.badge-88x31 a {
+ flex: 0 0 auto;
+ line-height: 0;
+}
+
+.badge-88x31 img {
+ display: block;
+}
+
+.post-title a.item-link {
+ font-size: 1.25rem;
+ margin-bottom: 0;
+}
+
+.e-content :is(h1, h2, h3, h4, h5, h6),
+.summary :is(h1, h2, h3, h4, h5, h6) {
+ margin-top: 1.5em;
+}
+
+.post-meta-item a,
+.rss-icon a,
+.post-title a,
+a.title h1,
+p {
+ color: var(--body-text-color);
+}
+
+body {
+ font-family: "Baskerville", "Georgia", "Songti SC", "SimSun", serif;
+ margin: auto;
+ padding: 20px;
+ max-width: var(--width-max);
+ text-align: left;
+ background-color: var(--body-bg-color);
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ line-height: 1.6;
+ color: var(--body-text-color);
+}
+
+.post-title a {
+ margin: 16px 0;
+}
+
+div.summary p {
+ line-height: 2;
+}
+
+div.faq summary {
+ color: var(--body-text-color);
+
+}
+
+a {
+ text-decoration: none;
+ border-bottom: 1px dotted;
+ color: var(--body-text-color) !important;
+}
+
+strong,
+b {
+ color: var(--bold-text-color);
+}
+
+i {
+ font-style: normal;
+}
+
+/* hr { */
+/* border: 0; */
+/* border-top: 1px dashed; */
+/* } */
+
+
+hr {
+ border: 0;
+ border-top: 1px solid var(--table-border-color);
+ margin: 3rem 0 1rem 0;
+}
+
+time {
+ font-size: 1rem;
+ color: var(--body-text-color);
+}
+
+div.post-meta {
+ font-weight: 500;
+}
+
+header {
+ margin-top: 30px;
+}
+
+.title {
+ text-align: left;
+ text-decoration: none !important;
+}
+
+.title:hover {
+ text-decoration: none;
+}
+
+a.title h1 {
+ margin: 15px 0 15px 0;
+ font-size: 2.15em;
+}
+
+div.title {
+ display: inline-block;
+}
+
+.theme-toggler {
+ float: right;
+ margin-top: 1.3rem;
+ padding: 0;
+}
+
+#toggle-theme-btn{
+ margin-right: 1rem;
+ padding: 0;
+ background: var(--btn-bg-color);
+ border: 1px solid var(--btn-border-color);
+ color: var(--btn-color);
+ border-radius: 4px;
+ cursor: pointer;
+}
+
+.title span {
+ font-weight: 400;
+}
+
+nav a {
+ margin-right: 8px;
+ border: none;
+}
+
+footer {
+ padding: 25px 0;
+ text-align: left;
+ font-size: var(--font-size-secondary);
+}
+
+.recent-posts-item {
+ margin: 0 0 120px 0;
+}
+
+.recent-item {
+ margin-bottom: 4rem;
+}
+
+.recent-list {
+ padding-left: 2vw;
+}
+
+.post-title a.item-link {
+ font-size: 1.8rem;
+ border: none;
+}
+
+h1.post-title {
+ margin-top: 0;
+ margin-bottom: 0.7rem;
+}
+
+.post-title {
+ display: inline-block;
+}
+
+.post-date,
+.post-date-shortcode {
+ font-size: 0.9em;
+ color: #666;
+ display: inline;
+ min-width: 80px;
+ flex-shrink: 0;
+ margin-left: auto;
+}
+
+.recent-empty {
+ text-align: center;
+ font-style: italic;
+}
+
+ul,blog-posts li span.grouped a {
+ border: none;
+}
+
+ul.blog-posts {
+ list-style-type: none;
+ padding: unset;
+}
+
+ul.blog-posts li {
+ display: flex;
+ margin-bottom: 8px;
+}
+
+ul.blog-posts li span {
+ flex: 0 0 130px;
+}
+
+ul.blog-posts li span.grouped {
+ flex: 0 0 80px;
+}
+
+.posts-list li {
+ margin-bottom: 12px;
+}
+
+.post-meta {
+ margin-top: 20px;
+ margin-bottom: 5px;
+}
+
+.recent-posts .post-meta {
+ margin-bottom: 3em;
+}
+
+.post-meta-item {
+ margin-right: 0.3rem;
+ display: inline-block;
+}
+
+.post-meta-item svg {
+ display: inline;
+ width: var(--svg-size);
+ height: var(--svg-size);
+}
+
+.post-meta-item p {
+ margin: 0;
+}
+
+img {
+ max-width: 100%;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ content-visibility: auto;
+}
+
+img.missing {
+ display: none;
+}
+
+img[src*="#minipic"] {
+ max-width: 50%;
+ margin-left: 0;
+ margin-right: auto;
+}
+
+.image-caption {
+ margin: auto;
+}
+
+.image-caption figcaption {
+ text-align: center;
+ font-style: italic;
+ font-size: 0.8em;
+ margin-top: 0.6em;
+ color: var(--caption-text-color);
+}
+
+.booklist {
+ display: grid;
+ grid-template-columns: repeat(5, 1fr);
+ gap: 20px;
+}
+
+.booklist-item {
+ transform: translateZ(0);
+ transition:
+ transform 0.25s,
+ box-shadow 0.25s;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+}
+
+.booklist-item:hover {
+ transform: translateY(-5px) translateZ(20px);
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5);
+}
+
+.booklist-item img {
+ height: 100%;
+}
+
+.footer-item {
+ display: inline;
+ font-size: 16px;
+ float: right;
+ font-family: var(--font-primary);
+}
+
+.social-icons {
+ margin: 15px 15px 5px 15px;
+ text-align: center;
+}
+
+.social-icons a {
+ padding: 5px 5px;
+}
+
+code {
+ font-family: var(--font-secondary);
+ background-color: var(--code-bg-color);
+ color: var(--code-text-color);
+ padding: 2px;
+ border-radius: 4px;
+}
+
+pre code {
+ display: block;
+ padding: 16px;
+ white-space: pre-wrap;
+ overflow-x: auto;
+}
+
+div.highlight pre {
+ border-radius: 4px;
+}
+
+div.highlight code {
+ background-color: var(--code-bg-color);
+ color: var(--code-text-color);
+}
+
+blockquote {
+ margin: 17px 0 0 0;
+ padding-left: 20px;
+ font-style: normal;
+}
+
+blockquote p {
+ color: var(--blockquote-text-color);
+}
+
+table {
+ width: 100%;
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+ border-radius: 4px;
+ margin-top: 16px;
+}
+
+th,
+td {
+ border: 1px solid var(--table-border-color);
+ padding: 4px;
+}
+
+th {
+ background-color: var(--table-th-bg-color);
+}
+
+.wm {
+ border: 1px #d0d7de solid;
+ border-radius: 0.25em;
+ padding: 1.5vw;
+ padding-top: 0;
+ background-color: #fffaed;
+ margin-top: 1vh;
+}
+
+.wm p {
+ margin-top: 1px;
+}
+
+textarea {
+ width: 100%;
+ font-size: 16px;
+}
+
+input {
+ font-size: 14px;
+}
+
+div.footnotes hr::before {
+ content: "Footnotes";
+ display: block;
+ font-size: 1.5em;
+ color: var(--bold-text-color);
+ margin-top: 16px;
+}
+
+.music-card {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ width: 100%;
+}
+
+.music-card img {
+ border: none !important;
+}
+
+.music-info {
+ display: flex;
+ align-items: center;
+ gap: 1.25rem;
+}
+
+.music-cover {
+ width: 3.75rem;
+ height: 3.75rem;
+ border-radius: 0.5rem;
+ box-shadow: var(--music-shadow);
+ margin: 0 !important;
+ object-fit: cover;
+}
+
+.music-title {
+ margin: 0;
+ font-size: 1rem;
+ font-weight: bold;
+ line-height: 1.2;
+}
+
+.music-artist {
+ margin: 0;
+ font-size: 0.875rem;
+ color: var(--music-text-secondary);
+}
+
+.music-links {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.music-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.25rem;
+ padding: 0 0.75rem;
+ height: 2rem;
+ border-radius: 9999px;
+ text-decoration: none !important;
+ font-size: 0.75rem;
+ transition: background-color 0.3s ease;
+ background-color: var(--music-bg-light);
+ color: inherit;
+}
+
+.music-btn:hover {
+ background-color: var(--music-bg-hover-light);
+}
+
+.music-icon {
+ display: block;
+ width: 0.75rem;
+ height: 0.75rem;
+ margin: 0 !important;
+}
+
+.music-btn-text {
+ display: inline;
+}
+
+/* 容器基础样式 */
+#ms_toc {
+ border-left: 1px solid #ddd; /* 目录左侧的整体引导线 */
+ padding: 0 0 0 1em; /* 只留左侧内边距,给缩进留空间 */
+ margin-bottom: 2em;
+ font-size: 0.9em;
+ line-height: 1.6; /* 稍微增加行高,更有大纲感 */
+}
+
+#ms_toc strong {
+ display: block;
+ margin-bottom: 0.8em;
+ text-transform: uppercase;
+ font-size: 0.8em;
+ color: #666; /* 标题颜色稍微减淡,突出内容 */
+ letter-spacing: 1px;
+}
+
+/* 核心:列表缩进逻辑 */
+#ms_toc nav ul {
+ list-style: none; /* 彻底移除圆点 */
+ padding-left: 0;
+ margin: 0;
+}
+
+/* 所有的列表项 */
+#ms_toc nav li {
+ margin: 0.4em 0;
+}
+
+/* 关键:通过层级选择器实现逐级缩进 */
+/* 第一级不需要额外缩进 */
+#ms_toc nav > ul > li {
+ padding-left: 0;
+}
+
+/* 第二级及更深层级:每深入一级,增加 1.2em 的缩进 */
+#ms_toc nav ul ul {
+ padding-left: 1.2em;
+ margin-left: 0.2em; /* 与父级垂直线错开 */
+}
+
+/* 链接样式 */
+#ms_toc a {
+ text-decoration: none;
+ color: #555; /* 默认深灰色,更像大纲 */
+ display: inline-block;
+ transition: color 0.2s ease;
+}
+
+#ms_toc a:hover {
+ color: #0056b3; /* 悬停时变蓝 */
+ text-decoration: underline;
+}
+
+/* 响应式设计:大屏幕时侧靠 (Desktop) */
+@media (min-width: 1100px) {
+ #ms_toc_container {
+ position: fixed;
+
+ /* 使用 calc 动态定位,确保在 600px 正文的右侧 */
+ left: calc(50% + 350px);
+ top: 20%; /* 距离顶部 15%,比 20% 稍微靠上一点 */
+
+ width: 260px;
+ max-height: 75vh; /* 限制高度,防止遮挡底部 */
+ overflow-y: auto;
+ z-index: 100;
+ margin: 0;
+ }
+
+ #ms_toc {
+ margin-bottom: 0;
+ }
+}
+
+/* 移动端或窄屏样式:回归到正文流中 */
+@media (max-width: 1099px) {
+ #ms_toc {
+ margin: 2em 0; /* 手机端上下留白 */
+ width: auto;
+ position: static;
+ border-left: 2px solid #eee;
+ }
+}
+
+button.upvote-btn {
+ padding: 0;
+ border: none;
+ background: none;
+ cursor: pointer;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ color: var(--body-text-color);
+}
+
+button.upvoted {
+ color: var(--upvoted-color);
+}
+
+span.upvote-count {
+ margin-top: -4px;
+ font-size: smaller;
+}
+
+ul li:has(input) {
+ list-style-type: none;
+ margin-left: -25.5px;
+}
+
+button {
+background: var(--btn-bg-color);
+ border: 1px solid var(--btn-border-color);
+ color: var(--btn-color, currentColor);
+ padding: 0.5rem 1rem;
+ border-radius: 0.25rem;
+ cursor: pointer;
+}
+
+body.dark-mode {
+
+ --btn-bg: #3a3a3a;
+ --btn-border: #555555;
+ --btn-color: #eeeeee;
+ --btn-bg-hover: #4a4a4a;
+ --btn-border-hover: #777777;
+
+
+ --body-text-color: #c8c8c8;
+
+ --title-color: #aaa;
+
+ --body-bg-color: #16161a;
+ --summary-text-color: #a8a8a8;
+ --bold-text-color: #ffffff;
+ --text-color-tertiary: #bbb;
+
+ --link-color: #5cc2ff;
+ --link-visited-color: #9d7eff;
+
+ --code-bg-color: #1a1a1a;
+ --code-text-color: #d4d4d4;
+ --blockquote-border-color: #555555;
+ --blockquote-text-color: #bbbbbb;
+
+ --table-border-color: #444444;
+ --table-th-bg-color: #1f1f1f;
+
+ --img-border-color: #444444;
+ --toc-text-color: #aaaaaa;
+ --toc-hover-color: #5cc2ff;
+ --summary-text-color: #878686;
+ --color-background: var(--body-bg-color) !important;
+
+ a {
+ color: var(--link-color);
+ cursor: pointer;
+ }
+
+ h3.recent-post-title a {
+ color: var(--body-text-color);
+ }
+
+ .post-meta-item svg {
+ filter: invert(1) hue-rotate(180deg);
+ }
+
+ strong {
+ /* font-weight: 650; */
+ }
+
+ .music-btn {
+ background-color: var(--music-bg-dark);
+ }
+ .music-btn:hover {
+ background-color: var(--music-bg-hover-dark);
+ }
+
+ .category-link {
+ color: #dbdbdb;
+ }
+
+ .wm {
+ background-color: #161b22;
+ border-color: #30363d;
+ color: var(--body-text-color);
+ padding: 10px;
+ }
+
+ .wm input {
+ background-color: #010409;
+ border: #30363d 1px solid;
+ color: var(--body-text-color);
+ outline: none;
+ }
+
+ #webmention-source:focus {
+ border-color: var(--color-accent-fg, #0969da);
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.1);
+ }
+
+ .wm button {
+ color: var(--body-text-color);
+ background-color: #161b22;
+ border: #30363d 1px solid;
+ }
+
+ .post-summary {
+ color: var(--text-color-primary) !important;
+ }
+
+ .post-item {
+ border-bottom: 1px solid #414141 !important;
+ }
+
+ .pagination-link {
+ border: 1px solid #414141 !important;
+ }
+}
+
+@media (min-width: 768px) {
+ .music-card {
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ .music-btn {
+ padding: 1rem;
+ justify-content: center;
+ width: auto;
+ height: auto;
+ }
+
+ .music-icon {
+ width: 1.25rem;
+ height: 1.25rem;
+ }
+
+ .music-btn-text {
+ display: none;
+ }
+}
+
+@media (max-width: 800px) {
+ img[src*="#minipic"] {
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ div.toc {
+ }
+}
+
+@media (max-width: 720px) {
+ .post-date {
+ min-width: auto;
+ font-size: 0.85em;
+ }
+
+ .item-link {
+ white-space: normal;
+ overflow: visible;
+ }
+}
+
+@media (max-width: 700px) {
+ .booklist {
+ grid-template-columns: repeat(3, 1fr);
+ gap: 10px;
+ }
+}
+
+@media (max-width: 400px) {
+ .booklist {
+ grid-template-columns: repeat(2, 1fr);
+ gap: 10px;
+ }
+}
+
+.title h1,
+.title p {
+ margin: 15px 0 !important;
+ font-size: 2.15em !important;
+ /* font-weight: 700 !important; */
+ line-height: 1.2 !important;
+ display: block !important;
+ padding: 0 !important;
+}
+
+.post-title {
+ font-size: 26.4px;
+ line-height: 1.4 !important;
+ display: block !important;
+ padding: 0 !important;
+}
+
+.post-title a {
+ display: inline-block !important;
+ padding: 0 !important;
+}
+
+nav {
+ margin-top: 0 !important;
+ margin-bottom: 20px !important;
+ line-height: 1.6 !important;
+}
+
+header {
+ margin-top: 30px;
+ display: block;
+}