diff options
| author | verdant <i@glowisle.me> | 2026-05-24 21:03:09 +0800 |
|---|---|---|
| committer | verdant <i@glowisle.me> | 2026-05-24 21:03:09 +0800 |
| commit | f6ebd20313af4cde065e737d097338ea9efa5163 (patch) | |
| tree | 7ffdeb756cf54cf381e07f6b2f62b8e0637b6cba /static/css | |
| parent | ef36c6812ed3400afb5e72fd6c8d3fe0e3298837 (diff) | |
| download | blog-f6ebd20313af4cde065e737d097338ea9efa5163.tar.gz blog-f6ebd20313af4cde065e737d097338ea9efa5163.zip | |
Add /static/css/style.css
More standard path
Diffstat (limited to 'static/css')
| -rw-r--r-- | static/css/style.css | 893 |
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; +} |
