diff --git a/2022/05/26/links/index.html b/2022/05/26/links/index.html new file mode 100644 index 0000000..c1a611e --- /dev/null +++ b/2022/05/26/links/index.html @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + links - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git "a/2023/03/29/Vuepress config.ts\346\240\271\347\233\256\345\275\225\351\205\215\347\275\256\345\222\214\351\227\256\351\242\230\350\247\243\345\206\263/index.html" "b/2023/03/29/Vuepress config.ts\346\240\271\347\233\256\345\275\225\351\205\215\347\275\256\345\222\214\351\227\256\351\242\230\350\247\243\345\206\263/index.html" new file mode 100644 index 0000000..53fba55 --- /dev/null +++ "b/2023/03/29/Vuepress config.ts\346\240\271\347\233\256\345\275\225\351\205\215\347\275\256\345\222\214\351\227\256\351\242\230\350\247\243\345\206\263/index.html" @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + Vuepress(2.x) config.ts base根目录配置和问题解决 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
发布于 
+ +
+

Vuepress(2.x) config.ts base根目录配置和问题解决

+

介绍

与js格式文件不同,ts的base配置仅需一行

+

js配置格式:

+
1
2
3
module.exports = {
base:'/',
}
+ +

ts配置格式:

+
1
2
3
4
export default defineUserconfig({
base : '/',
//下面是其他配置
})
+ +

如果在ts中使用了js格式,代码不会报错,IDE也不会提示,但是会导致base配置问题

+ + +

问题表现如下

home界面标题和介绍变为默认样式

+ + +

菜单栏消失

+ + +

解决方案

把js格式的base配置文件删除,在ts的config里添加base,重启本地调试服务器

+

+

网页已经可以正常浏览!

+

+
+

如果遇到问题请在下方的联系方式里联系我 使用请遵守MIT协议

+ + + + +
+ + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git "a/2023/03/29/Vuepress\344\275\277\347\224\250\351\207\215\345\256\232\345\220\221\350\247\243\345\206\263\351\273\230\350\256\244\350\257\255\350\250\200\351\227\256\351\242\230/index.html" "b/2023/03/29/Vuepress\344\275\277\347\224\250\351\207\215\345\256\232\345\220\221\350\247\243\345\206\263\351\273\230\350\256\244\350\257\255\350\250\200\351\227\256\351\242\230/index.html" new file mode 100644 index 0000000..c93f2af --- /dev/null +++ "b/2023/03/29/Vuepress\344\275\277\347\224\250\351\207\215\345\256\232\345\220\221\350\247\243\345\206\263\351\273\230\350\256\244\350\257\255\350\250\200\351\227\256\351\242\230/index.html" @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + Vuepress使用重定向解决默认语言问题 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
发布于 
+ +
+

Vuepress使用重定向解决默认语言问题

+

前言

Vuepress 默认情况下使用/作为默认语言路径,这导致默认语言文件在文件层级上会比其他语言的文件高一级(下图),影响美观和维护,本教程将使用vuepress-plugin-locale-redirect插件修复此问题。

+
1
2
3
4
5
6
7
8
9
10
docs
├─ README.md
├─ foo.md
├─ nested
│ └─ README.md
└─ zh
├─ README.md
├─ foo.md
└─ nested
└─ README.md
+ +

修改为:

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docs
├─ zh
│ ├─ README.md
│ ├─ foo.md
│ └─ nested
│ └─ README.md
├─ en
│ ├─ README.md
│ ├─ foo.md
│ └─ nested
│ └─ README.md
└─ ja
├─ README.md
├─ foo.md
└─ nested
└─ README.md
+ +

开始配置

步骤一: cd到你的vuepress程序目录

+

步骤二:在终端中使用npm安装vuepress-plugin-locale-redirect插件,如果你使用的是其他包管理软件,那么将npm指令更换为你的包管理软件即可

+
1
npm vuepress-plugin-locale-redirect
+ +

步骤三:在config.js(ts)文件头中添加引用插件

+
1
import { localeRedirectPlugin } from 'vuepress-plugin-locale-redirect'
+ +

步骤四:在config的网页设置文件中添加引用(我这里用的是ts格式,如果你用的是js的话,应该是module.exports = {}这种格式),不要直接复制粘贴,参考你本地的代码做修改。也可以参考完整示例代码(有bug,请勿直接复制其他区域)

+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
export default defineUserConfig({
title: '示例文件',
description: '示例文件源码',
//引用插件
plugins: [
// @ts-ignore
localeRedirectPlugin(),
],
//添加路径
locales: {
//写在最上方的语言将被认为是默认语言
'/zh/': {
lang: 'zh-CN',
title: '',
description: '',
},
'/en/': {
lang: 'en-US',
title: '',
description: '',
},
'/ja/': {
lang: '日本语',
title: '',
description: '',
},
},
+ +

完成~

+

如果要为主题,例如下拉菜单设置多语言,可参考官方文档,将其中的/改为你想要的默认语言即可

+
+

如果遇到问题请在下方的联系方式里联系我 使用请遵守MIT协议

+ + + + +
+ + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/2023/03/29/m1armdos001/dosarm002.png b/2023/03/29/m1armdos001/dosarm002.png new file mode 100644 index 0000000..8ef94a7 Binary files /dev/null and b/2023/03/29/m1armdos001/dosarm002.png differ diff --git a/2023/03/29/m1armdos001/dosarm003.png b/2023/03/29/m1armdos001/dosarm003.png new file mode 100644 index 0000000..79d0694 Binary files /dev/null and b/2023/03/29/m1armdos001/dosarm003.png differ diff --git a/2023/03/29/m1armdos001/index.html b/2023/03/29/m1armdos001/index.html new file mode 100644 index 0000000..4eb6c67 --- /dev/null +++ b/2023/03/29/m1armdos001/index.html @@ -0,0 +1,348 @@ + + + + + + + + + + + + + + + + + + + + + + + M1 MacBook 配置dosbox-x环境(dos汇编debug,MASM环境搭建) - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
发布于 
+ +
+

M1 MacBook 配置dosbox-x环境(dos汇编debug,MASM环境搭建)

+

1.下载dosbox-x

用浏览器访问此网址获取下载请求
https://github.com/joncampbell123/dosbox-x/releases/download/dosbox-x-v0.83.19/dosbox-x-macosx-arm64-20211101100925.zip
先不要急着解压,文件等会再操作

+

2.下载MASM

用浏览器访问此网址获取下载请求(需要梯子)
https://drive.google.com/drive/folders/1rFLz8Vpfu_p_UoYAbqPlISU_Qmk_OvHI?usp=sharing
下载完成后把这两个文件复制到同一个文件夹并解压(记得删除zip包)

+

3.配置磁盘

点击顶部的drive按钮
dosarm001

+

选择C盘并选择从文件夹挂载
dosarm002

+

选取MASM路径
dosarm003

+

进入C盘符
dosarm004

+

使用dir命令列出磁盘内的文件,如果挂载成功则如下图
dosarm005

+

输入masm命令,已经可以正常使用
dosarm006

+

提示:由于macos安全性限制每次打开都需要手动挂载一次

+ + + +
+ + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git "a/2023/03/29/powerlevel10k \345\216\273\351\231\244\347\224\250\346\210\267\345\220\215\346\210\226\344\270\273\346\234\272\345\220\215\346\230\276\347\244\272/index.html" "b/2023/03/29/powerlevel10k \345\216\273\351\231\244\347\224\250\346\210\267\345\220\215\346\210\226\344\270\273\346\234\272\345\220\215\346\230\276\347\244\272/index.html" new file mode 100644 index 0000000..56f38ab --- /dev/null +++ "b/2023/03/29/powerlevel10k \345\216\273\351\231\244\347\224\250\346\210\267\345\220\215\346\210\226\344\270\273\346\234\272\345\220\215\346\230\276\347\244\272/index.html" @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + powerlevel10k 去除用户名或主机名显示 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
发布于 
+ +
+

powerlevel10k 去除用户名或主机名显示

+

如果你不关心过程只想看解决方案请点击这里跳转

+

过程

因为zsh默认会显示用户名,而我的用户名用的是真实姓名,所以为了隐私需要隐藏,在bing了一下之后找到了个修改主题文件的解决方法,我按照教程放到了~/.zshrc里,但是没有生效(这里挖个坑) 教程链接

+

我看到了部分其他教程是将prompt_context() 放在主题文件中,但是我复制到主题文件后仍然无效

+

这个过程中顺带发现我的主题地址和其他教程里的不一样,其他教程里的主题文件路径是在

+
1
~/.oh-my-zsh/themes/xxx.zsh-theme
+

而我是在

+
1
~/.oh-my-zsh/custom/themes/powerlevel10k/powerlevel10k.zsh-theme
+

因而进一步发现了我没有首次配置后自动生成的~/.p10k文件,因为我的所有powerlevel10k自定义主题设置都是放在~.zhsrc的(我是按照这个教程直接设置我的终端 教程链接

+

开始确认要编写的文件确实是.zshrc没错后,怀疑是不是.zshrc的函数声明漏写了;教程中因为是直接放在主题文件下所以默认是函数,我没有修改直接复制到.zshrc,但是加上之后依然没有生效

+

我回看了第一个教程,确实是没有写声明的,问题很明显不是关于prompt_context() {}函数设置的

+

再进一步查找,我在p10k官网仓库的How do I add username and/or hostname to prompt?设置介绍下发现了一个名为 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS的prompt设置函数(prompt在这里应该是提示符的意思,这里得吐槽下微软的蹩脚翻译,把prompt翻译为了“令人惊叹的”😅)

+

在我的.zshrc文件中查找这条函数,内容为:

+
1
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user device virtualenv dir vcs newline prompt_char)
+ +

按照函数名,这些形参显然就是左边显示的内容

+

image-1

+

按照顺序,可以发现user= 用户名 device=主机名

+
+

现在知道了参数属性,只需要按照需要修改就好了,这里我希望只删除用户名,所以改为

+
1
2
#删除user
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(device virtualenv dir vcs newline prompt_char)
+ +

然后重载zsh使配置生效

+
1
2
#终端输入
zsh
+

完成!
image-2

+

解决方法

首先查看是否有~/.p10k文件

+
1
2
3
4
5
6
# 将此命令复制到终端中运行
if ls ~/.p10k >/dev/null 2>&1;then
echo "文件存在"
else
echo "文件不存在"
fi
+ +

如果有则在 .p10k文件中进行操作,如果没有则像我一样在.zshrc中进行操作

+
1
2
3
4
5
6
7
8
9
10
11
12
##找到并修改 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS 设置
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user device virtualenv dir vcs newline prompt_char)
# 如果要只显示用户名
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(device virtualenv dir vcs newline prompt_char)
# 如果要只显示主机名
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user virtualenv dir vcs newline prompt_char)
# 如果要两个都不显示
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(virtualenv dir vcs newline prompt_char)

## 使配置生效
# 终端运行以重新载入zsh
zsh
+

enjoy p10K!

+ + + + +
+ + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/2023/03/29/vscgiterror001/index.html b/2023/03/29/vscgiterror001/index.html new file mode 100644 index 0000000..bceff1c --- /dev/null +++ b/2023/03/29/vscgiterror001/index.html @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + vscode git提示99+的解决方法 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
发布于 
+ +
+

vscode git提示99+的解决方法

+

有一次手贱不小心git init的时候出错了,于是vscode侧边栏的git就一直提示99+ 一打开发现整个usr(用户)文件夹下的内容都被扫描了,不说废话,上解决方法

+

打开终端,cd到出问题的文件夹,输入ls -a 查看父/子文件夹是否有.git文件,然后输入并执行

+
1
rm -rf .git
+ +

如果报错就在前缀加一个 [sudo] (可能要输入密码)

+

千 万 不 要 只 输 入 rm -rf !!!!!!!!!

+ + + +
+ + + + + + + + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..c69bff4 --- /dev/null +++ b/404.html @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

404

+

+ + 很抱歉,您访问的页面不存在 + +

+

+ 可能是输入地址有误或该地址已被删除 +

+

+ 返回主页 +
+ + + + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ + diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..b76a5d4 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +https://WUTONK.xyz diff --git a/archives/2022/05/index.html b/archives/2022/05/index.html new file mode 100644 index 0000000..9456275 --- /dev/null +++ b/archives/2022/05/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/2022/index.html b/archives/2022/index.html new file mode 100644 index 0000000..c0210b5 --- /dev/null +++ b/archives/2022/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/2023/03/index.html b/archives/2023/03/index.html new file mode 100644 index 0000000..bb94d5f --- /dev/null +++ b/archives/2023/03/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/2023/index.html b/archives/2023/index.html new file mode 100644 index 0000000..4bb87c5 --- /dev/null +++ b/archives/2023/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..24671cd --- /dev/null +++ b/archives/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..2f69d63 --- /dev/null +++ b/css/main.css @@ -0,0 +1,4975 @@ +:root { + --width-left: 288px; + --width-main: 720px; + --gap-l: 16px; + --gap-p: 1rem; + --gap-p-compact: 0.75rem; +} +@media screen and (min-width: 2048px) { + :root { + --gap-l: 32px; + --width-left: 352px; + --width-main: 780px; + } +} +@media screen and (min-width: 2560px) { + :root { + --width-main: 860px; + --gap-l: 64px; + } +} +@media screen and (max-width: 768px) { + :root { + --width-left: 252px; + } +} +@media screen and (max-width: 667px) { + :root { + --width-left: 288px; + } +} +:root { + --site-bg: #f9fafb; + --card: #fff; + --block: #f1f2f3; + --block-border: #e3e5e8; + --block-hover: #e9eaec; + --text-p0: #000; + --text-p1: #333; + --text-p2: #4d4d4d; + --text-p3: #808080; + --text-p4: #999; + --text-meta: #ccc; + --text-code: #f53900; + --theme-bg2: #1cd0fd; + --theme-link: #2094f3; +} +@media (prefers-color-scheme: dark) { + :root { + --site-bg: #1c1e21; + --card: #373d43; + --block: #26292c; + --block-border: #383d42; + --block-hover: #2f3337; + --text-p0: #fff; + --text-p1: #ccc; + --text-p2: #b3b3b3; + --text-p3: #858585; + --text-p4: #707070; + --text-meta: #4d4d4d; + --text-code: #ff6333; + } +} +@media screen and (prefers-color-scheme: dark) and (max-width: 667px) { + :root { + --site-bg: #000; + } +} +pre { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-size: 0.8125rem; + tab-size: 4; + -moz-tab-size: 4; + -o-tab-size: 4; + -webkit-tab-size: 4; +} +a { + text-decoration: none; + color: var(--theme-link); +} +a:hover { + color: #ff5724; +} +.md-text p:not([class]) { + text-align: left; +} +hr { + color: var(--text-meta); + opacity: 0.1; +} +img { + max-width: 100%; +} +li { + font-size: 0.9375rem; +} +ul, +ol { + padding-left: 1.5rem; +} +table:not([class]) { + border-collapse: collapse; + overflow: auto; + display: block; + margin: 1rem 0; + max-width: 100%; + vertical-align: text-top; + font-size: 0.875rem; +} +table:not([class]) th { + background: var(--block); +} +table:not([class]) td, +table:not([class]) th { + padding: 0.5em 1em; + border: 1px solid var(--block-hover); + line-height: 1.5; +} +table:not([class]) tr { + word-break: keep-all; + white-space: nowrap; +} +table:not([class]) tr:hover { + background: var(--block); +} +*[ff=title] { + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; +} +blockquote { + display: block; + margin-left: 0; + margin-right: 0; + padding: 0.25rem 0.75rem; + background: var(--block); + border-left: 4px solid var(--text-meta); + border-radius: 4px 6px 6px 4px; + color: var(--text-p2); +} +:root { + --blur-px: 12px; + --blur-bg: rgba(255,255,255,0.5); +} +@media (prefers-color-scheme: dark) { + :root { + --blur-bg: rgba(0,0,0,0.5); + } +} +.blur { + background: var(--blur-bg); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .blur { + background: var(--blur-bg) !important; + backdrop-filter: saturate(200%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(200%) blur(var(--blur-px)); + } +} +.blur:hover { + background: var(--card); +} +button { + border: none; + font-weight: 500; + outline: none; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + cursor: pointer; +} +a.button { + font-weight: 500; + line-height: 1; + padding: 0.75rem 2rem; + border-radius: 4px; + font-size: 0.9375rem; + user-select: none; +} +a.button.theme { + background: #1cd0fd; + color: var(--card); +} +a.button.theme:hover { + background: #ff5724; +} +a.button.start { + border-radius: 100px; + background: var(--text-p1); + color: var(--card); +} +a[onclick]:hover { + cursor: pointer; +} +a.button.start.gradient { + transition: 0.38s ease-out; + position: relative; + z-index: 0; + background: linear-gradient(to right, #92fe9d 0%, #00c9ff 50%, #92fe9d 100%); + background-size: 1000%; + color: #fff; + animation: glow 60s linear infinite; +} +a.button.start.gradient:after { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-radius: 100px; + background: inherit; + z-index: -1; + filter: blur(36px); + transition: 0.38s ease-out; + opacity: 0; +} +a.button.start.gradient:hover:after { + opacity: 1; +} +@-moz-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@-webkit-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@-o-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +.cap { + font-weight: 500; + font-size: 0.75rem; + scrollbar-width: none; + color: var(--text-p3); +} +.cap.blue { + color: #0d87e9; +} +.cap.cyan { + color: #03c3f5; +} +.cap.theme { + color: #03cafc; +} +.dis-select { + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; +} +.mobile-only { + display: none; +} +@media screen and (max-width: 667px) { + .mobile-only { + display: block !important; + } +} +@media screen and (max-width: 667px) { + .mobile-hidden { + display: none !important; + } +} +.float-panel { + position: sticky; + right: 0; + bottom: 2rem; + float: right; + z-index: 10; + display: flex; + border-radius: 2rem; + margin-right: 1rem; + overflow: hidden; + --blur-px: 16px; + --blur-bg: rgba(255,255,255,0.4); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; +} +@media (prefers-color-scheme: dark) { + .float-panel { + --blur-bg: rgba(0,0,0,0.4); + } +} +.sidebar-toggle.mobile { + cursor: pointer; + color: var(--text-p0); + background: none; + padding: 0.5rem; + line-height: 0; + font-size: 20px; + margin: 0; +} +.l_body.mobile.sidebar .float-panel { + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1); + transform: translateY(-2px); +} +.l_body.mobile.sidebar .sidebar-toggle.mobile { + background: var(--card); + color: #ff5724; + border-color: var(--block-border); +} +code { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; +} +p>code:not([class]), +li>code:not([class]) { + font-size: 85%; + background: var(--block); + padding: 0.2em; + border-radius: 4px; + color: var(--text-code); +} +.md-text .highlight, +pre:not([class]):has(>code) { + margin: var(--gap-p) 0; + border-radius: 12px; + overflow: hidden; + background: var(--block); + line-height: 1.5; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + box-sizing: border-box; +} +@media screen and (min-width: 500px) { + .md-text .highlight, + pre:not([class]):has(>code) { + min-width: 180px; + } +} +.md-text .highlight { + position: relative; + overflow: auto; + display: block; +} +.md-text .highlight figcaption { + color: var(--text-p2); + font-size: 0.8125rem; + font-weight: 500; + margin-left: 0.5rem; + display: inline-block; +} +.md-text .highlight figcaption span { + padding: 4px 0.5rem; + display: block; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + background: var(--block-hover); +} +.md-text .highlight >table { + overflow: auto; + display: block; + margin: 0 !important; + background: transparent; + border: none; +} +.md-text .highlight >table td, +.md-text .highlight >table th { + padding: 0; + border: none; + line-height: 1.5; +} +.md-text .highlight >table::-webkit-scrollbar { + height: 4px; + width: 4px; +} +.md-text .highlight >table::-webkit-scrollbar-track-piece { + background: transparent; +} +.md-text .highlight >table::-webkit-scrollbar-thumb { + background: transparent; + cursor: pointer; + border-radius: 6px; +} +.md-text .highlight >table:hover::-webkit-scrollbar-thumb { + background: var(--text-meta); +} +.md-text .highlight >table:hover::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.md-text .highlight >table tr { + background: transparent; +} +.md-text .highlight >table tr:hover { + background: transparent; +} +.md-text .highlight .gutter { + pointer-events: none; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + text-align: right; + padding: 0 1em; + border-width: 0; + margin-left: 0; + left: 0; + z-index: 1; +} +.md-text .highlight .gutter pre .line { + color: var(--text-p4); +} +.md-text .highlight .code pre { + display: block; + padding: 0.5em 1rem; +} +.md-text .highlight .gutter+.code pre { + padding-left: 0.25em; +} +.md-text .gist .gist-file { + border: 1px solid var(--block-border); + border-radius: 12px; +} +.md-text .gist .gist-data { + border-bottom: 1px solid var(--block-border); +} +.md-text .gist .highlight { + display: inherit; + border: none; + border-radius: 0; + background: none; + margin: 0; + padding: 1em 0; +} +.md-text .gist .gist-meta { + background: var(--block-border); +} +table:not([class]) { + border-collapse: collapse; +} +.md-text pre >.caption { + color: var(--text-p3); +} +.md-text pre >.hljs { + padding: 1rem; + border-radius: 12px; + line-height: 1.5; + box-sizing: border-box; +} +.md-text .highlight .code { + vertical-align: top; +} +.md-text .highlight .code:before { + position: absolute; + top: 0; + right: 0; + padding: 4px 0.5rem; + opacity: 0.25; + font-weight: 700; + color: var(--theme); +} +.md-text .highlight.yaml .code:before { + content: "YAML"; +} +.md-text .highlight.json .code:before { + content: "JSON"; +} +.md-text .highlight.diff .code:before { + content: "diff"; +} +.md-text .highlight.html .code:before { + content: "HTML"; +} +.md-text .highlight.js .code:before, +.md-text .highlight.javascript .code:before { + content: "JS"; +} +.md-text .highlight.css .code:before { + content: "CSS"; +} +.md-text .highlight.less .code:before { + content: "Less"; +} +.md-text .highlight.stylus .code:before { + content: "Stylus"; +} +.md-text .highlight.bash .code:before { + content: "bash"; +} +.md-text .highlight.shell .code:before { + content: "shell"; +} +.md-text .highlight.sh .code:before { + content: "sh"; +} +.md-text .highlight.ini .code:before { + content: "ini"; +} +.md-text .highlight.c .code:before { + content: "C"; +} +.md-text .highlight.cpp .code:before { + content: "C++"; +} +.md-text .highlight.objc .code:before, +.md-text .highlight.objectivec .code:before { + content: "Objective-C"; +} +.md-text .highlight.swift .code:before { + content: "Swift"; +} +.md-text .highlight.java .code:before { + content: "Java"; +} +.md-text .highlight.python .code:before { + content: "Python"; +} +.md-text .highlight.php .code:before { + content: "PHP"; +} +.md-text .highlight.rust .code:before, +.md-text .highlight.rs .code:before { + content: "Rust"; +} +.md-text .highlight.sql .code:before { + content: "SQL"; +} +.md-text .highlight.ruby .code:before { + content: "Ruby"; +} +.md-text .highlight.makefile .code:before { + content: "Makefile"; +} +.md-text .highlight.go .code:before { + content: "Go"; +} +.md-text .highlight.typescript .code:before, +.md-text .highlight.ts .code:before { + content: "TS"; +} +.code>pre .code:before { + display: none; +} +.code>pre .line, +.code>pre .params { + color: var(--text-p1); +} +.code>pre .line .addition { + color: #3fa33f; +} +.code>pre .line .deletion { + color: #ee2b29; +} +.code>pre .marked { + background-color: rgba(254,213,66,0.4); + padding: 2px 8px 2px 0; + border-radius: 2px; + width: 100%; +} +.code>pre .title, +.code>pre .attr, +.code>pre .attribute { + color: #3f51b5; +} +.code>pre .comment { + color: var(--text-p4); + font-style: italic; +} +.code>pre .keyword, +.code>pre .meta-keyword, +.code>pre .javascript .function { + color: #8959a8; +} +.code>pre .type, +.code>pre .built_in, +.code>pre .tag .name { + color: #2196f3; +} +.code>pre .variable, +.code>pre .regexp, +.code>pre .ruby .constant, +.code>pre .xml .tag .title, +.code>pre .xml .pi, +.code>pre .xml .doctype, +.code>pre .html .doctype, +.code>pre .css .id, +.code>pre .css .class, +.code>pre .css .pseudo { + color: #fd8607; +} +.code>pre .number, +.code>pre .preprocessor, +.code>pre .literal, +.code>pre .constant { + color: #fd8607; +} +.code>pre .class, +.code>pre .ruby .class .title, +.code>pre .css .rules .attribute { + color: #ff9800; +} +.code>pre .string, +.code>pre .meta-string { + color: #449e48; +} +.code>pre .value, +.code>pre .inheritance, +.code>pre .header, +.code>pre .ruby .symbol, +.code>pre .xml .cdata { + color: #4caf50; +} +.code>pre .css .hexcolor { + color: #6cc; +} +.code>pre .function, +.code>pre .python .decorator, +.code>pre .python .title, +.code>pre .ruby .function .title, +.code>pre .ruby .title .keyword, +.code>pre .perl .sub, +.code>pre .javascript .title, +.code>pre .coffeescript .title { + color: #69c; +} +.highlight.html .line .tag .name, +.highlight.css .line .tag .name, +.highlight.less .line .tag .name, +.highlight.stylus .line .tag .name, +.highlight.html .line .selector-tag, +.highlight.css .line .selector-tag, +.highlight.less .line .selector-tag, +.highlight.stylus .line .selector-tag { + color: #ee2b29; +} +.highlight.html .line .selector-class, +.highlight.css .line .selector-class, +.highlight.less .line .selector-class, +.highlight.stylus .line .selector-class, +.highlight.html .line .selector-attr, +.highlight.css .line .selector-attr, +.highlight.less .line .selector-attr, +.highlight.stylus .line .selector-attr { + color: #fd8607; +} +.highlight.html .line .attribute, +.highlight.css .line .attribute, +.highlight.less .line .attribute, +.highlight.stylus .line .attribute { + color: #3f51b5; +} +.highlight.html .line .number, +.highlight.css .line .number, +.highlight.less .line .number, +.highlight.stylus .line .number { + color: #17afca; +} +.highlight.objc .line .meta, +.highlight.objectivec .line .meta, +.highlight.swift .line .meta, +.highlight.c .line .meta { + color: #8959a8; +} +.highlight.objc .line .class, +.highlight.objectivec .line .class, +.highlight.swift .line .class, +.highlight.c .line .class { + color: var(--text-p1); +} +.highlight.json .line .attr { + color: #e24f5a; +} +.highlight.json .line .literal { + color: #3f51b5; +} +.highlight.yaml .line .attr { + color: #e24f5a; +} +* { + outline: none; +} +html { + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; + font-size: 16px; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + scroll-behavior: smooth; +} +body { + background: var(--site-bg); + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizelegibility; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} +div.lazy.img { + width: 100%; + height: 100%; + background-position: center; + background-size: cover; +} +input { + background: none; + border: none; +} +input.copy-area { + display: block; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-size: 0.75rem; + font-weight: 700; + color: var(--text-p3); +} +svg.loading { + display: block; + position: absolute; + color: var(--text-p3); + z-index: -1; + width: 100%; + height: 2rem; + margin: auto; + animation: spin infinite 2s; + animation-timing-function: linear; +} +@-moz-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-o-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +.loading-wrap { + margin: 0; + text-align: center; + background: var(--block); + border-radius: 12px; + position: relative; + padding: 2rem; +} +.loading-wrap svg { + margin: 4px; +} +.loading-wrap:after { + content: '正在加载'; + color: var(--text-p1); + display: block; + font-size: 14px; +} +.loading-wrap.error:after { + content: '加载失败,请稍后重试。'; +} +pre:not([class]):has(>code) { + display: block; + padding: 1rem; + overflow: auto; +} +pre:not([class]):has(>code) code { + padding: 0; +} +span.dot, +span.sep { + font-size: 0.9em; + margin: 0 0.25em; +} +span.dot:before { + content: '·'; + font-weight: 900; +} +span.sep:before { + content: '/'; + padding-left: 2px; + padding-right: 2px; +} +svg.icon { + width: 1em; + height: 1em; + vertical-align: middle; + fill: currentColor; + overflow: hidden; +} +h1, +.h1 { + font-size: 1.75rem; + font-weight: 700; +} +@media screen and (max-width: 500px) { + h1, + .h1 { + font-size: 1.75rem; + } +} +h2, +.h2 { + font-size: 1.5rem; +} +h3, +.h3 { + font-size: 1.375rem; +} +h4, +.h4 { + font-size: 1.125rem; +} +h5 { + font-size: 0.9375rem; +} +h6 { + font-size: 0.75rem; +} +.fs14 { + font-size: 0.875rem; +} +.fs14 p { + font-size: 0.875rem !important; +} +.fs14 li { + font-size: 0.875rem !important; +} +.fs12 { + font-size: 0.75rem; +} +.widgets .post-title { + margin: 0.75rem 0; + line-height: 1.2; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.widgets .post-title .cap { + margin-bottom: 2px; + opacity: 0.5; +} +.widgets .post-title a { + color: inherit; + font-weight: 500; +} +.widgets .post-title a:hover { + color: #ff5724; +} +div.toast { + max-width: 60%; + padding: 1rem 3rem; + line-height: 1.5; + color: var(--text-p1); + font-weight: 500; + text-align: center; + border-radius: 12px; + background: var(--card); + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 9; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1); +} +.md-text .article-footer { + margin-top: 4rem; + padding: 1rem; + background: var(--block); + border-radius: 12px; + border: 1px solid var(--block-border); +} +.md-text .article-footer:empty { + display: none; +} +.md-text .article-footer .header { + font-weight: 500; + color: var(--text-p2); + font-size: 1.125rem; +} +.md-text .article-footer .body input.copy-area { + margin: 0.75rem 0; + padding: 0; + width: 100%; +} +.md-text .article-footer .body p { + color: var(--text-p2); + margin: 0.5em 0; +} +.md-text .article-footer .body p a { + font-weight: unset; +} +.md-text .article-footer .body ul { + margin: 0; + overflow: hidden; +} +.md-text .article-footer .body .post-title { + margin: 0.5rem 0; + line-height: 1.2; + word-break: break-all; +} +.md-text .article-footer section+section { + margin-top: 1rem; + padding-top: 1rem; + border-top: 1px solid var(--block-border); +} +.md-text .article-footer .social-wrap { + grid-gap: 0.5rem 1rem; + margin: 0; +} +.md-text .article-footer .qrcode { + width: 128px; + padding: 4px; + background: #fff; + border-radius: 4px; + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 0 32px 0px rgba(0,0,0,0.1); + overflow: hidden; + transition: height 0.2s ease-out; + -moz-transition: height 0.2s ease-out; + -webkit-transition: height 0.2s ease-out; + -o-transition: height 0.2s ease-out; +} +.md-text .article-footer .qrcode img { + object-fit: contain; +} +.md-text .article-footer .qrcode.display { + margin: 2rem auto 1rem; + height: 128px !important; + visibility: visible !important; +} +.bread-nav { + padding: 0.25rem 1rem 0; + color: var(--text-p3); + font-weight: 500; +} +.bread-nav div#breadcrumb { + display: flex; + align-items: center; + flex-direction: row; +} +.bread-nav div#breadcrumb:not([style]) a { + color: var(--theme-link); +} +.bread-nav div#breadcrumb[style] a { + color: inherit; +} +.bread-nav div#breadcrumb span.sep { + color: var(--text-p3); +} +.bread-nav div#breadcrumb a.cap:hover { + color: #ff5724; +} +.bread-nav div#post-meta { + margin-top: 2px; +} +.l_cover { + height: 100vh; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; +} +.l_cover.post { + height: inherit; +} +.l_cover .cover-wrap { + margin-bottom: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.l_cover .cover-wrap .cover-title { + font-weight: 700; + font-size: 1.5rem; + margin: 1rem 0; + line-height: 1.2; +} +.l_cover .cover-wrap .description { + margin: 1rem 0; +} +.l_cover .cover-wrap .start-wrap { + margin: 2rem 0; + flex-shrink: 0; +} +.l_cover .cover-wrap .start-wrap a.start { + display: inline-block; +} +.l_cover.post .cover { + z-index: -1; + width: 100%; + height: 30vh; + max-width: 2048px; + min-height: 150px; + max-height: 400px; +} +@media screen and (max-width: 768px) { + .l_cover.post .cover { + height: 25vh; + } +} +@media screen and (max-width: 500px) { + .l_cover.post .cover { + height: 20vh; + } +} +@media screen and (min-width: 2048px) { + .l_cover.post .cover { + margin-top: 4rem; + } + .l_cover.post .cover .img { + border-radius: 2rem; + } +} +.l_cover.post .cover-wrap { + z-index: 1; +} +.l_cover.post .cover-wrap .article-title { + text-align: center; + padding: 1rem; + margin: 1em 0 0 0; +} +@media screen and (min-width: 2048px) { + .l_cover.post .cover-wrap .article-title { + font-size: 3rem; + } +} +.l_cover.wiki .cover-wrap { + max-width: 500px; +} +.l_cover.wiki .cover-wrap .preview { + margin-bottom: 2rem; +} +.l_cover.wiki .cover-wrap .preview img { + object-fit: contain; + max-height: 35vh; + max-width: 100%; +} +@media screen and (max-width: 500px) { + .l_cover.wiki .cover-wrap .preview img { + max-width: 60%; + } +} +.l_cover.wiki .cover-wrap .cover-title:first-child { + font-size: 3rem; +} +.page-footer { + margin: 4rem 1rem 3rem; + color: var(--text-p3); +} +.page-footer a { + color: var(--text-p3); +} +.page-footer a:hover { + color: #ff5724; +} +.page-footer .sitemap { + margin: 0.5rem 0 2rem; + display: grid; + scrollbar-width: none; + grid-gap: 1rem 1rem; + grid-auto-flow: column dense; + overflow: scroll; +} +.page-footer .sitemap::-webkit-scrollbar { + height: 0; + width: 0; +} +.page-footer .sitemap::-webkit-scrollbar-track-piece { + background: transparent; +} +.page-footer .sitemap::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.page-footer .sitemap::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.page-footer .sitemap .sitemap-group { + display: flex; + flex-direction: column; + align-items: flex-start; +} +.page-footer .sitemap .sitemap-group >span, +.page-footer .sitemap .sitemap-group >a { + text-decoration: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.page-footer .sitemap .sitemap-group >span { + margin: 0.5rem 0; + font-weight: 500; + color: var(--text-p1); +} +.page-footer .sitemap .sitemap-group >a { + margin: 0.2rem 0; +} +.page-footer .text p { + margin: 4px 0; + line-height: 1.5; +} +.page-footer .text a:not([class]) { + text-decoration: underline; + font-weight: 500; +} +.nav-wrap { + position: sticky; + position: -webkit-sticky; + margin-top: -0.5rem; + top: -2px; + background: var(--site-bg); + padding: 0 1rem; + z-index: 8; + margin-bottom: 1px; +} +.nav-wrap:after { + content: ''; + width: calc(100% - 2 * 1rem); + height: 2px; + border-radius: 2px; + position: absolute; + bottom: 0; + left: 1rem; + background: var(--block-hover); +} +nav.cap { + display: flex; + overflow: scroll visible; +} +nav.cap::-webkit-scrollbar { + height: 0; + width: 0; +} +nav.cap::-webkit-scrollbar-track-piece { + background: transparent; +} +nav.cap::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +nav.cap::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +nav.cap >p { + margin: 0; +} +nav.cap a { + padding: 0.25rem 1rem; + margin: 10px 0 8px 0; + line-height: 2; + color: var(--text-p3); + border-radius: 4px; + font-weight: 500; + white-space: nowrap; + position: relative; + z-index: 1; +} +nav.cap a:after { + height: 2px; + position: absolute; + bottom: -8px; + left: 1rem; + right: 1rem; + background: #1cd0fd; + border-radius: 2px; + pointer-events: none; +} +nav.cap a:hover { + background: var(--block-hover); +} +nav.cap a.active, +nav.cap a:hover { + color: var(--text-p1); +} +nav.cap a.active { + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +nav.cap a.active:after { + content: ''; +} +nav.cap a+a { + margin-left: 4px; +} +@media screen and (max-width: 667px) { + .nav-wrap { + margin-top: 0; + padding-left: 0; + padding-right: 0; + } + .nav-wrap nav a:first-child { + margin-left: 1rem; + } + .nav-wrap nav a:last-child { + margin-right: 1rem; + } +} +.paginator-wrap { + margin: 1rem; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 1rem; + font-weight: 700; + background: var(--card); + border-radius: 12px; + overflow: hidden; + box-shadow: 0 2px 8px 0px rgba(0,0,0,0.03); +} +.paginator-wrap .page-number { + padding: 4px 8px; + border-radius: 8px; + background: var(--block); + margin: 2px; +} +.paginator-wrap .extend { + text-align: center; + background-size: contain; + width: 1rem; + height: 1rem; + background-origin: content-box; + background-clip: content-box; +} +.paginator-wrap .extend.next { + border-left: 1px dashed var(--block-border); + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/arrow/064b95430caf4.svg"); +} +.paginator-wrap .extend.prev { + border-right: 1px dashed var(--block-border); + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/arrow/f049bbd4e88ec.svg"); +} +.paginator-wrap .current { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + color: var(--text-p3); +} +.paginator-wrap .extend { + color: var(--text-p3); + padding: 1rem; + line-height: 0; + filter: grayscale(100%); +} +.paginator-wrap .extend img { + height: 1rem; +} +.paginator-wrap .extend.disable { + pointer-events: none; +} +.paginator-wrap span.extend { + opacity: 0.25; +} +.paginator-wrap a.extend:hover { + filter: unset; +} +.related-wrap { + padding: 0 1rem; + margin: 4rem 0; +} +.related-wrap:empty { + display: none; +} +.related-wrap section.header { + display: flex; + justify-content: space-between; + align-items: center; +} +.related-wrap section.header >span.title { + padding: 0.25rem 0; +} +.related-wrap section.footer { + margin-top: 1rem; +} +.related-wrap a.more { + padding: 0.25rem 0.5rem; + border-radius: 6px; + color: var(--text-p1); +} +article.md-text.content+.related-wrap { + margin-top: 0; +} +.related-posts { + max-width: 100%; + margin: 1rem 0; +} +.related-posts .item { + line-height: 1.2; + display: block; + border-left: 0; + margin-top: 1rem; +} +.related-posts .item .title { + color: var(--text-p1); + font-weight: 500; + font-size: 1rem; + transition: color 0.2s ease-out, border 0.2s ease-out; + -moz-transition: color 0.2s ease-out, border 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, border 0.2s ease-out; + -o-transition: color 0.2s ease-out, border 0.2s ease-out; + position: relative; + padding-bottom: 2px; + border-bottom: 1px dashed var(--text-meta); + line-height: 1.6; +} +.related-posts .item .excerpt { + color: var(--text-p3); + font-size: 0.75rem; + margin-top: 0.5rem; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.related-posts .item:hover .title { + color: #ff5724; + border-bottom: 1px solid #ff5724; +} +.related-wrap#read-next .body { + display: grid; + grid-gap: 16px; + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 16px) / 2)); +} +.related-wrap#read-next .body .item { + border-top: 1px dashed var(--block-border); + border-bottom: 1px dashed var(--block-border); + padding: 1rem 0; +} +.related-wrap#read-next .body .note { + margin-bottom: 0.75rem; + font-size: 0.75rem; + color: var(--text-p4); + font-weight: 500; +} +.related-wrap#read-next .body a { + margin: 0; + line-height: 1.2; + color: var(--text-p1); + font-size: 1.125rem; +} +.related-wrap#read-next .body a:hover { + color: #ff5724 !important; +} +.related-wrap#read-next .body #next { + text-align: right; +} +.wiki+.related-wrap#read-next .item a { + font-size: 1.375rem; +} +.wiki+.related-wrap#read-next .item#prev a { + color: var(--text-p3); +} +.related-wrap#comments { + padding: 0 1rem; +} +.related-wrap#comments .cmt-title p { + margin: 0; + font-size: inherit; +} +.related-wrap#comments .cmt-title p a { + color: inherit; + text-decoration: underline; +} +.related-wrap#comments .cmt-title p a:hover { + color: #ff5724; +} +.related-wrap#comments .cmt-title p a:before { + display: none; +} +.related-wrap#comments .cmt-body { + min-height: 150px; + position: relative; +} +.related-wrap#comments .cmt-body svg.loading { + top: 60px; +} +.tag-plugin.about { + background: var(--block); + border-radius: 12px; + padding: 2rem; + position: relative; +} +.tag-plugin.about .nav-back { + display: none; + position: absolute; + line-height: 1; + overflow: hidden; + left: 0.75rem; + top: 0.75rem; + align-items: center; +} +@media screen and (max-width: 667px) { + .tag-plugin.about .nav-back { + display: flex; + } +} +.tag-plugin.about .nav-back svg { + width: 1rem; + height: 1rem; +} +.tag-plugin.about .about-header { + display: flex; + justify-content: center; + flex-wrap: wrap; + margin: 1.5rem 0; +} +.tag-plugin.about .about-header img { + object-fit: contain; +} +.tag-plugin.about .about-header >img { + margin: auto 0; +} +.tag-plugin.about .about-header >p { + font-size: 0.75rem; + font-weight: 500; + color: var(--text-p3); + padding-top: 0.75rem; +} +.tag-plugin.about .about-header >p strong:first-child { + font-size: 3rem; + font-weight: 700; + color: var(--text-p1); + margin-right: 0.75rem; +} +.tag-plugin.about .about-header .avatar { + display: inline-flex; + margin: 0 1rem; +} +.tag-plugin.about .about-body >p { + line-height: 1.5; +} +.tag-plugin.about .about-body >p:first-child { + margin-top: 2.5rem; +} +.tag-plugin.about .about-body p+.tag-plugin.navbar .cap { + margin-top: 1rem; +} +.tag-plugin.about .about-header+.about-body { + margin-top: 2rem; +} +@media screen and (max-width: 500px) { + .tag-plugin.about { + padding: 2rem 1rem; + } + .tag-plugin.about .about-header p { + width: 100%; + } +} +.md-text .tag-plugin.checkbox { + display: flex; + align-items: center; + font-size: 0.9375rem; + line-height: 1.2; + --gap-p: calc(var(--gap-p-compact) / 2); +/* Checkbox */ +/* Radio */ +/* Colors */ +} +.md-text .tag-plugin.checkbox input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + position: relative; + height: 16px; + width: 16px; + cursor: pointer; + display: inline-block; + outline: none; + border-radius: 2px; + flex-shrink: 0; + margin-right: 8px; + pointer-events: none; +} +.md-text .tag-plugin.checkbox input[type=checkbox]:before, +.md-text .tag-plugin.checkbox input[type=checkbox]:after { + position: absolute; + content: ""; + background: var(--site-bg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:before { + left: 1px; + top: 5px; + width: 0px; + height: 2px; + transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:after { + right: 7px; + bottom: 3px; + width: 2px; + height: 0px; + transform: rotate(40deg); + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked:before { + left: 0px; + top: 7px; + width: 6px; + height: 2px; +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked:after { + right: 3px; + bottom: 1px; + width: 2px; + height: 10px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:before { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:after { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:checked:after { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:before { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:after { + transform: rotate(0); + left: 5px; + top: 1px; + width: 2px; + height: 0px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:checked:after { + left: 5px; + top: 1px; + width: 2px; + height: 10px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:before { + transform: rotate(45deg); + left: 3px; + top: 1px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:after { + transform: rotate(135deg); + right: 3px; + top: 1px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:checked:after { + right: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox input[type=radio] { + border-radius: 50%; + transform: translateY(-1px); +} +.md-text .tag-plugin.checkbox input[type=radio]:before { + content: ""; + display: block; + width: 8px; + height: 8px; + border-radius: 50%; + margin: 2px; + transform: scale(0); +} +.md-text .tag-plugin.checkbox input[type=radio]:checked:before { + transform: scale(1); +} +.md-text .tag-plugin.checkbox input { + border: 2px solid var(--theme); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked { + background: var(--theme); +} +.md-text .tag-plugin.checkbox input[type=radio]:checked:before { + background: var(--theme); +} +.tag-plugin.checkbox:not([color]) { + --theme: #2196f3; +} +.tag-plugin { + --theme: var(--text-p1); + --theme-border: var(--block-border); + --theme-bg1: #cff3fc; + --theme-bg2: var(--block); +} +.tag-plugin.tag { + --text-p2: #065e74; +} +.tag-plugin[color='red'] { + --theme: #f44336; + --theme-bg1: #fcd2cf; + --theme-bg2: #fce9e8; + --theme-border: #e6b6b3; + --text-p0: #3f1512; + --text-p1: #4f1b17; + --text-p2: #740e06; +} +.tag-plugin[color='orange'] { + --theme: #fa6400; + --theme-bg1: #fce1cf; + --theme-bg2: #fcf0e8; + --theme-border: #e6c7b3; + --text-p0: #3f2412; + --text-p1: #4f2d17; + --text-p2: #743206; +} +.tag-plugin[color='yellow'] { + --theme: #ffbd2b; + --theme-bg1: #fceecf; + --theme-bg2: #fcf6e8; + --theme-border: #e6d6b3; + --text-p0: #3f3112; + --text-p1: #4f3e17; + --text-p2: #745206; +} +.tag-plugin[color='green'] { + --theme: #3dc550; + --theme-bg1: #cffcd5; + --theme-bg2: #e8fceb; + --theme-border: #b3e6ba; + --text-p0: #123f19; + --text-p1: #174f1f; + --text-p2: #067416; +} +.tag-plugin[color='cyan'] { + --theme: #1bcdfc; + --theme-bg1: #cff3fc; + --theme-bg2: #e8f8fc; + --theme-border: #b3dbe6; + --text-p0: #12363f; + --text-p1: #17434f; + --text-p2: #065d74; +} +.tag-plugin[color='blue'] { + --theme: #2196f3; + --theme-bg1: #cfe8fc; + --theme-bg2: #e8f3fc; + --theme-border: #b3cfe6; + --text-p0: #122b3f; + --text-p1: #17364f; + --text-p2: #064374; +} +.tag-plugin[color='purple'] { + --theme: #9c27b0; + --theme-bg1: #f6cffc; + --theme-bg2: #f9e8fc; + --theme-border: #deb3e6; + --text-p0: #39123f; + --text-p1: #47174f; + --text-p2: #640674; +} +.tag-plugin[color='light'] { + --theme-bg1: #e0e0e0; + --theme-bg2: #fff; + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; +} +.tag-plugin[color='dark'] { + --theme-bg1: #1f1f1f; + --theme-bg2: #333; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +.tag-plugin[color='warning'] { + --theme: #ffbd2b; + --theme-border: #ffe659; + --theme-bg2: #ffe659; + --theme-link: #ff453a; +} +.tag-plugin[color='error'] { + --theme: #ffbd2b; + --theme-border: #ff453a; + --theme-bg2: #ff453a; + --theme-link: #ffe659; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +@media (prefers-color-scheme: dark) { + .tag-plugin.tag { + --theme: #1cd0fd; + --theme-bg1: #14353d; + --theme-bg2: #222d2f; + --theme-border: #1f505c; + --text-p0: #b3f0ff; + --text-p1: #9fd2df; + --text-p2: #7edaf1; + } + .tag-plugin[color='red'] { + --theme: #f44336; + --theme-bg1: #3d1714; + --theme-bg2: #2f2322; + --theme-border: #5c231f; + --text-p0: #ffb8b3; + --text-p1: #dfa49f; + --text-p2: #f1867e; + } + .tag-plugin[color='orange'] { + --theme: #fa6400; + --theme-bg1: #3d2514; + --theme-bg2: #2f2722; + --theme-border: #5c371f; + --text-p0: #ffd1b3; + --text-p1: #dfb99f; + --text-p2: #f1ac7e; + } + .tag-plugin[color='yellow'] { + --theme: #ffbd2b; + --theme-bg1: #3d3014; + --theme-bg2: #2f2b22; + --theme-border: #5c491f; + --text-p0: #ffe7b3; + --text-p1: #dfcb9f; + --text-p2: #f1cd7e; + } + .tag-plugin[color='green'] { + --theme: #3dc550; + --theme-bg1: #143d1a; + --theme-bg2: #222f24; + --theme-border: #1f5c27; + --text-p0: #b3ffbd; + --text-p1: #9fdfa8; + --text-p2: #7ef18e; + } + .tag-plugin[color='cyan'] { + --theme: #1bcdfc; + --theme-bg1: #14353d; + --theme-bg2: #222d2f; + --theme-border: #1f4f5c; + --text-p0: #b3efff; + --text-p1: #9fd2df; + --text-p2: #7ed9f1; + } + .tag-plugin[color='blue'] { + --theme: #2196f3; + --theme-bg1: #142b3d; + --theme-bg2: #222a2f; + --theme-border: #1f415c; + --text-p0: #b3ddff; + --text-p1: #9fc3df; + --text-p2: #7ebef1; + } + .tag-plugin[color='purple'] { + --theme: #9c27b0; + --theme-bg1: #37143d; + --theme-bg2: #2d222f; + --theme-border: #531f5c; + --text-p0: #f4b3ff; + --text-p1: #d69fdf; + --text-p2: #e07ef1; + } + .tag-plugin[color='light'] { + --theme-border: #fff; + --theme-bg1: #e0e0e0; + --theme-bg2: #fff; + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; + } + .tag-plugin[color='dark'] { + --theme-border: #000; + --theme-bg1: #1f1f1f; + --theme-bg2: #111; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; + } + .tag-plugin[color='warning'], + .tag-plugin[color='light'] { + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; + } +} +.md-text .tag-plugin.copy { + display: flex; + justify-content: space-between; + box-sizing: border-box; + background: var(--block); + border-radius: 6px; + border: 1px solid var(--block-border); + overflow: hidden; + width: 320px; + max-width: 100%; +} +.md-text .tag-plugin.copy[width='max'] { + width: 100%; +} +@media screen and (max-width: 425px) { + .md-text .tag-plugin.copy { + min-width: 100%; + } +} +.md-text .tag-plugin.copy input.copy-area { + display: inline-block; + padding: 0; + width: 100%; + color: var(--text-p2); + line-height: 3; + text-indent: 1rem; +} +.md-text .tag-plugin.copy button.copy-btn { + margin: 0; + line-height: 3; + border-left: 1px solid var(--block-border); + display: inline-block; + background: var(--block-hover); + line-height: 0; + font-size: 1rem; + padding: 0 0.75rem; + color: var(--text-p2); +} +.md-text .tag-plugin.copy button.copy-btn:hover { + background: var(--card); +} +.md-text .tag-plugin.emoji { + display: inline-block; + margin: -4px 2px 0; + vertical-align: middle; +} +.md-text .tag-plugin.emoji img { + display: block; + object-fit: contain; + height: 1.75em; +} +.tag-plugin.folders { + margin: var(--gap-p) 0; + font-size: 0.875rem; + border-top: 1px solid var(--block-border); + overflow: hidden; +} +.tag-plugin.folders .folder { + border-bottom: 1px solid var(--block-border); + padding: 1rem; +} +.tag-plugin.folders summary { + cursor: pointer; + color: var(--text-p2); + font-weight: 500; + position: relative; + line-height: 1.2; + outline: none; + padding: 1rem; + margin: -1rem; +} +.tag-plugin.folders summary:last-child { + border-bottom: none; +} +.tag-plugin.folders summary > span { + margin-left: 0.25em; +} +.tag-plugin.folders summary > p, +.tag-plugin.folders summary > h1, +.tag-plugin.folders summary > h2, +.tag-plugin.folders summary > h3, +.tag-plugin.folders summary > h4, +.tag-plugin.folders summary > h5, +.tag-plugin.folders summary > h6 { + display: inline; + border-bottom: none !important; +} +.tag-plugin.folders summary:hover { + color: var(--text-p0); +} +.tag-plugin.folders summary:after { + position: absolute; + content: '+'; + text-align: center; + top: 50%; + transform: translateY(-50%); + right: 1rem; +} +.tag-plugin.folders details[open] >summary { + color: var(--text-p1); + font-weight: 700; +} +.tag-plugin.folders details[open] >summary:after { + content: '-'; +} +.tag-plugin.folders details[open] >div.body { + font-size: 0.9375rem; +} +.tag-plugin.folders details[open] >div.body >:first-child { + margin-top: 1rem; +} +.tag-plugin.folders details[open] >div.body >:last-child { + margin-bottom: 0; +} +details.folding { + display: block; + padding: 1rem; + margin: 1rem 0; + border-radius: 12px; + background: var(--theme-bg2); + border: 1px solid var(--theme-border); +} +details.folding summary { + cursor: pointer; + padding: 1rem; + margin: -1rem; + color: var(--text-p2); + font-weight: 500; + font-size: 0.875rem; + position: relative; + line-height: 1.2; + outline: none; +} +details.folding summary > span { + margin-left: 0.25em; +} +details.folding summary > p, +details.folding summary > h1, +details.folding summary > h2, +details.folding summary > h3, +details.folding summary > h4, +details.folding summary > h5, +details.folding summary > h6 { + display: inline; + border-bottom: none !important; +} +details.folding summary:hover { + color: var(--text-p0); +} +details.folding summary:after { + position: absolute; + content: '+'; + text-align: center; + top: 50%; + transform: translateY(-50%); + right: 1rem; + line-height: 1; +} +details.folding[open] >summary { + color: var(--text-p1); + font-weight: 700; + z-index: 1; +} +details.folding[open] >summary:after { + content: '-'; +} +details.folding[open] >div.body { + padding: 0 1rem 1rem; + margin: 0 -1rem -1rem; + color: var(--text-p1); +} +details.folding[open] >div.body >:first-child { + margin-top: 1rem; +} +details.folding[open] >div.body >:last-child { + margin-bottom: 0; +} +details.folding[child=codeblock]>div.body { + padding: 0; + background: transparent; + overflow: hidden; +} +details.folding[child=codeblock]>div.body .highlight { + border: none; + border-radius: 0; + background: transparent; + margin: 0; +} +details.folding[child=codeblock]>div.body .highlight figcaption { + display: none; +} +details.folding[child=codeblock]>div.body .highlight .code:before { + content: none; +} +details.folding[child=iframe] { + overflow: hidden; + background: none; +} +details.folding[child=iframe] >summary { + background: none; +} +details.folding[child=iframe] >div.body { + padding: 0; + background: none; + overflow: hidden; +} +.md-text .frame-wrap { + position: relative; + overflow: hidden; + margin: 0 auto; + max-width: 100%; + display: flex; + flex-direction: column; + align-items: center; +} +.md-text .frame-wrap img, +.md-text .frame-wrap video { + border-radius: 0; +} +.md-text .frame-wrap .frame { + z-index: 1; + display: block; + position: absolute; + background-size: 100%; + background-repeat: no-repeat; + overflow: hidden; +} +.md-text .tag-plugin.img-wrap .frame-wrap[focus] { + height: auto; +} +.md-text .frame-wrap#iphone11 img, +.md-text .frame-wrap#iphone11 video { + width: 287px; + margin-top: 19px; + margin-bottom: 20px; +} +.md-text .frame-wrap#iphone11 .frame { + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/frame/iphone11.svg"); + width: 329px; + height: 658px; +} +.md-text .frame-wrap[focus='top'] img, +.md-text .frame-wrap[focus='top'] video { + margin-bottom: 0 !important; +} +.md-text .frame-wrap:not([focus='bottom']) .frame { + top: 0; +} +.md-text .frame-wrap[focus='bottom'] img, +.md-text .frame-wrap[focus='bottom'] video { + bottom: 0; + margin-top: 0 !important; +} +.md-text .frame-wrap[focus='bottom'] .frame { + bottom: 0; +} +@media screen and (max-width: 500px) { + .md-text .frame-wrap#iphone11 img, + .md-text .frame-wrap#iphone11 video { + width: 208px; + margin-top: 13px; + margin-bottom: 14px; + } + .md-text .frame-wrap#iphone11 .frame { + width: 238px; + height: 476px; + } +} +.users-wrap { + overflow: hidden; +} +.users-wrap .group-header { + margin: 0 0 1rem; +} +.users-wrap .group-header p { + margin: 0; + font-size: 0.875rem; +} +.users-wrap .group-header p:first-child { + font-size: 1.25rem; + font-weight: 500; +} +.users-wrap .group-body { + width: 100%; + display: flex; + flex-wrap: wrap; + align-items: stretch; +} +.users-wrap .group-body+.group-header { + margin-top: 2rem; +} +.users-wrap .stellar-friends-api { + display: block; +} +.users-wrap .user-card { + flex-shrink: 1; + display: flex; + align-items: stretch; + width: 12.5%; +} +@media screen and (max-width: 980px) { + .users-wrap .user-card { + width: 14.28%; + } +} +@media screen and (max-width: 900px) { + .users-wrap .user-card { + width: 16.66%; + } +} +@media screen and (max-width: 820px) { + .users-wrap .user-card { + width: 20%; + } +} +@media screen and (max-width: 667px) { + .users-wrap .user-card { + width: 16.66%; + } +} +@media screen and (max-width: 500px) { + .users-wrap .user-card { + width: 25%; + } +} +.users-wrap .user-card .card-link { + margin: 0; + width: 100%; + color: var(--text-p1); + font-size: 10px; + font-weight: 500; + display: flex; + justify-content: flex-start; + flex-direction: column; + align-items: center; + text-align: center; + line-height: 1.2; + border-radius: 4px; + overflow: hidden; + position: relative; + padding: 1rem 0.5rem; +} +.users-wrap .user-card .card-link img { + object-fit: cover; + display: block; + width: 48px; + height: 48px; + background: var(--card); + border-radius: 64px; + margin: 0 0 0.5rem; +} +.users-wrap .user-card .card-link >img { + transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -moz-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -webkit-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -o-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; +} +.users-wrap .user-card .card-link:hover { + background: var(--block-hover); +} +.users-wrap .user-card .card-link:hover img { + transform: scale(1.2) rotate(8deg); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); +} +.tag-plugin.ghcard { + line-height: 0; +} +.tag-plugin.ghcard a.ghcard { + display: inline-block; +} +.tag-plugin.grid { + display: grid; + grid-gap: 16px; + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 16px) / 2)); +} +.tag-plugin.grid >.cell { + margin: 1rem 0; +} +.tag-plugin.grid >.cell p:first-child>strong:only-child { + font-size: 1rem; +} +.tag-plugin.grid >.cell> p { + line-height: 1.5; +} +.tag-plugin.grid >.cell> :first-child { + margin-top: 0; +} +.tag-plugin.grid >.cell> :last-child { + margin-bottom: 0; +} +.tag-plugin.grid >.cell> p:first-child { + margin-top: -0.25em; +} +.tag-plugin.grid >.cell> p:last-child { + margin-bottom: -0.25em; +} +.md-text .tag-plugin.grid { + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} +@media screen and (max-width: 768px) { + .tag-plugin.grid { + display: block; + } +} +.tag-plugin.grid[bg]>.cell { + padding: 1rem; + border-radius: 12px; +} +.tag-plugin.grid[bg='block']>.cell { + background: var(--block); +} +.tag-plugin.grid[bg='card']>.cell { + background: var(--card); + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.tag-plugin.grid[bg='card']>.cell:hover { + transform: translateY(-1px); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); +} +.tag-plugin.image { + margin-top: 1rem; + margin-bottom: 1rem; +} +.tag-plugin.image .image-bg { + text-align: center; + border-radius: 6px; + position: relative; + overflow: hidden; +} +.tag-plugin.image .image-bg:hover .image-download { + opacity: 1 !important; +} +.tag-plugin.image .image-bg img { + display: block; + object-fit: cover; +} +.tag-plugin.image .image-bg .image-download { + position: absolute; + bottom: 8px; + right: 8px; + font-size: 1.125rem; + padding: 6px; + line-height: 0; + border-radius: 4px; + transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + color: var(--text-p1); +} +.tag-plugin.image .image-bg .image-download:hover { + background: var(--card) !important; + color: #ff5724; +} +.tag-plugin.image .image-meta { + display: flex; + justify-content: center; + padding: 0.5rem 0; +} +.tag-plugin.image .image-meta .image-caption { + display: inline-block; + font-size: 0.75rem; + color: var(--text-p2); + line-height: 1.5; + text-align: justify; +} +.tag-plugin.image .image-meta .image-caption:empty { + display: none; +} +.md-text u { + text-decoration: none; + border-bottom: 2px solid #ff5724; +} +.md-text emp { + width: fit-content; + text-decoration: none; + border-bottom: 4px dotted #ff5724; +} +.md-text wavy { + text-decoration: underline wavy #ff5724; +} +.md-text del { + color: var(--text-p3); + text-decoration: line-through var(--text-p3); +} +.md-text kbd { + border-radius: 4px; + border: 1px solid #d2d2d2; + border-bottom-width: 2px; + background: var(--card); + padding: 2px 4px 1px 4px; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-weight: 700; +} +.md-text psw { + color: transparent; + background: #a1a1a1; + border-radius: 2px; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; + margin: auto 2px; +} +.md-text psw:hover { + color: inherit; + background: none; +} +.md-text sup, +.md-text sub { + color: var(--theme); + line-height: 1; + font-weight: 700; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; +} +.md-text h1 sup, +.md-text h2 sup, +.md-text h3 sup, +.md-text h4 sup, +.md-text h1 sub, +.md-text h2 sub, +.md-text h3 sub, +.md-text h4 sub { + font-size: 0.85rem; +} +.md-text .tag-plugin.link { + max-width: 100%; + margin: 1em auto; + display: flex; + justify-content: center; +} +@media screen and (max-width: 375px) { + .md-text .tag-plugin.link { + width: 100%; + } +} +.md-text .link-card { + background: var(--card); + display: inline-flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + width: 320px; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + border-radius: 6px; + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +@media screen and (max-width: 375px) { + .md-text .link-card { + width: 100%; + } +} +.md-text .link-card:hover { + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-1px); +} +.md-text .link-card.plain { + flex-direction: row; + align-items: center; +} +.md-text .link-card.rich { + flex-direction: column; + align-items: stretch; + width: 460px; + text-align: justify; +} +.md-text .link-card >.left { + overflow: hidden; + margin: 0.75rem 0 0.75rem 0.75rem; +} +.md-text .link-card >.left .title { + font-size: 0.875rem; +} +.md-text .link-card >.left span+span { + margin-top: 0.25rem; +} +.md-text .link-card >.right { + width: 2.75rem; + height: 2.75rem; + margin: 0.75rem; + overflow: hidden; + flex-shrink: 0; +} +.md-text .link-card >.top { + display: flex; + margin: 1rem 1rem 0.75rem; + overflow: hidden; + max-width: calc(100% - 1rem * 2); + align-items: center; +} +.md-text .link-card >.top .img { + line-height: 0; + height: 16px; + width: 16px; + border-radius: 16px; + margin-right: 8px; + background-repeat: no-repeat; + background-size: contain; + background-position: left center; +} +.md-text .link-card >.top span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.md-text .link-card >.bottom { + margin: 0 1rem 1rem; +} +.md-text .link-card >.bottom .title { + font-size: 1rem; + margin-bottom: 0.5rem; +} +.md-text .link-card { + line-height: 1.2; +} +.md-text .link-card .title { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.md-text .link-card .cap { + flex-shrink: 0; + color: var(--text-p3); +} +.md-text .link-card .link { + line-height: 1.5; + opacity: 0.75; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.md-text .link-card .desc { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 3; +} +.md-text .link-card .img { + border-radius: 4px; +} +.md-text .link-card span { + margin: 0; + display: block; +} +.md-text .link-card .title { + font-weight: 500; + color: var(--text-p1); +} +.md-text .tag-plugin.mark { + padding: 0 1px; + border-radius: 2px; + background: var(--theme-bg2); + border: 1px solid var(--theme-border); + color: var(--text-p0); +} +.md-text .tag-plugin.mark[color=dark] { + border-color: var(--theme-bg2); +} +.md-text .tag-plugin.navbar { + text-align: center; +} +.md-text .tag-plugin.navbar nav.cap { + margin: 0; + padding: 1px; + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); + border-radius: 6px; + display: inline-flex; + max-width: 100%; +} +.md-text .tag-plugin.navbar nav.cap a { + margin: 1px; + padding: 0.25em 0.75rem; + color: var(--text-p2); +} +.md-text .tag-plugin.navbar nav.cap a:after { + display: none; +} +.md-text .tag-plugin.navbar nav.cap a:hover { + background: var(--block); +} +.md-text .tag-plugin.navbar nav.cap a.active { + background: var(--block); + box-shadow: none; + color: var(--text-p1); +} +.md-text .tag-plugin.note { + position: relative; + padding: 0.25rem 1rem; + border-radius: 12px; + background: var(--theme-bg2); + overflow: hidden; + border: 1px solid var(--theme-border); + color: var(--text-p1); +} +.md-text .tag-plugin.note >.title { + font-size: 0.9375rem; + line-height: 1.5; + margin-top: var(--gap-p-compact); + font-weight: 500; + color: var(--text-p0); +} +.md-text .tag-plugin.note >.body { + margin-top: var(--gap-p-compact); + margin-bottom: var(--gap-p-compact); +} +.md-text .tag-plugin.note >.body, +.md-text .tag-plugin.note >.body p { + font-size: 0.875rem; + line-height: 1.5; +} +.md-text .tag-plugin.note >.body:only-child { + margin: calc(var(--gap-p) - 0.25rem) 0; +} +.md-text .tag-plugin.note[color] code { + background: none; +} +.md-text .tag-plugin.note:not([color]) .highlight { + background: var(--block-hover); +} +.md-text .tag-plugin.note[child=codeblock] { + padding: 0; +} +.md-text .tag-plugin.note[child=codeblock] >.title, +.md-text .tag-plugin.note[child=codeblock] >.body:only-child { + margin-top: 0; +} +.md-text .tag-plugin.note[child=codeblock] >.body { + margin-bottom: 0; +} +.md-text .tag-plugin.note[child=codeblock] .highlight { + margin: 0; + border: none; + background: none; +} +.md-text .tag-plugin.note[child=tabs] >.body { + margin: 0; +} +.md-text .tag-plugin.note[child=tabs] >.body >.tabs { + margin-top: 0.5rem; +} +.md-text .tag-plugin.note[child=iframe] { + padding: 0; +} +.md-text .tag-plugin.note[child=iframe] >.body { + margin: 0; +} +.md-text .tag-plugin.note[child=iframe] >.body iframe { + margin: 0; +} +.md-text .tag-plugin .tag-plugin.note { + --gap-p: 1rem; +} +.tag-plugin.note blockquote, +.tag-plugin.folding blockquote { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background: none; + padding-top: 0; + padding-bottom: 0; +} +.tag-plugin.note table:not([class]) th, +.tag-plugin.folding table:not([class]) th { + background: var(--block-hover); +} +.tag-plugin.note table:not([class]) td, +.tag-plugin.folding table:not([class]) td, +.tag-plugin.note table:not([class]) th, +.tag-plugin.folding table:not([class]) th { + border-color: var(--block-border); +} +.md-text .tag-plugin.poetry { + display: flex; + flex-direction: column; + align-items: center; +} +.md-text .tag-plugin.poetry .content >.title { + font-weight: 500; + font-size: 1rem; + margin-top: var(--gap-p); +} +.md-text .tag-plugin.poetry .content >.meta { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; +} +.md-text .tag-plugin.poetry .content >.meta span+span { + margin-left: 4px; +} +.md-text .tag-plugin.poetry .content >.body { + margin: var(--gap-p) 0; + border-top: 1px dashed var(--block-border); + border-bottom: 1px dashed var(--block-border); +} +.md-text .tag-plugin.poetry .content >.body p { + font-size: 0.875rem; +} +.md-text .tag-plugin.poetry .content >.footer { + font-style: italic; + color: var(--text-p4); + margin: var(--gap-p) 0; + font-size: 0.75rem; +} +.md-text .tag-plugin.poetry .content { + padding-left: 1rem; + position: relative; +} +.md-text .tag-plugin.poetry .content:before { + content: ''; + position: absolute; + width: 4px; + left: -4px; + top: 4px; + bottom: 4px; + border-radius: 4px; + background: var(--block); +} +.md-text .tag-plugin.poetry .content >.title { + position: relative; +} +.md-text .tag-plugin.poetry .content >.title:before { + content: ''; + position: absolute; + width: 4px; + left: calc(-1rem - 4px); + top: 6px; + bottom: 6px; + border-radius: 4px; + background: #ff5724; +} +.md-text .tag-plugin.quot { + text-align: center; + align-items: center; + display: flex; + flex-direction: column; +} +.md-text .tag-plugin.quot .content { + display: flex; + align-items: center; + border-bottom: none; + font-weight: 700; + padding: 16px 24px; + line-height: 1.2; +} +.md-text .tag-plugin.quot .content a.headerlink:before { + content: ''; +} +@media screen and (max-width: 500px) { + .md-text .tag-plugin.quot .content { + padding: 12px 20px; + } +} +.md-text .tag-plugin.quot .content { + max-width: 500px; + position: relative; +} +.md-text.content .tag-plugin.quot h1 { + font-size: 1.75rem; + font-weight: 900; + padding: 20px 32px 12px 32px; +} +@media screen and (max-width: 500px) { + .md-text.content .tag-plugin.quot h1 { + padding: 20px 24px 12px; + } +} +.md-text.content .tag-plugin.quot h2, +.md-text.content .tag-plugin.quot h3, +.md-text.content .tag-plugin.quot h4, +.md-text.content .tag-plugin.quot h5, +.md-text.content .tag-plugin.quot h6 { + font-size: 1.375rem; + margin-top: 1em; + margin-bottom: 0; +} +.md-text.content .tag-plugin.quot p { + font-size: 1.125rem; + color: var(--text-p0); +} +.md-text .tag-plugin.quot .content[type=text]:before, +.md-text .tag-plugin.quot .content[type=text]:after { + content: ""; + position: absolute; + width: 8px; + height: 14px; +} +.md-text .tag-plugin.quot .content[type=text]:before { + top: 8px; + left: 0; + border-top: 6px solid #ff5724; + border-left: 6px solid #ff5724; +} +.md-text .tag-plugin.quot .content[type=text]:after { + right: 0; + bottom: 8px; + border-right: 6px solid #ff5724; + border-bottom: 6px solid #ff5724; +} +.md-text .tag-plugin.quot h1.content[type=text]:before, +.md-text .tag-plugin.quot h1.content[type=text]:after { + width: 12px; + height: 20px; + border-width: 8px; +} +.md-text .tag-plugin.quot .content[type=icon] .icon { + height: 1.5em; + display: inline-block; + color: #ff5724; + border-radius: 0; +} +.md-text .tag-plugin.quot .content[type=icon] .icon.prefix { + margin-left: -0.5rem; + margin-right: 0.5rem; +} +.md-text .tag-plugin.quot .content[type=icon] .icon.suffix { + margin-left: 0.5rem; +} +.sites-wrap .group-header { + margin: 1rem 0; +} +.sites-wrap .group-header p { + margin: 0; + font-size: 0.875rem; +} +.sites-wrap .group-header p:first-child { + font-size: 1.25rem; + font-weight: 500; +} +.sites-wrap .group-body { + width: 100%; +} +.sites-wrap .group-body+.group-header { + margin-top: 2rem; +} +.sites-wrap .stellar-sites-api { + display: block; +} +.sites-wrap .group-body { + display: grid; + grid-gap: 1rem 1rem; + grid-template-columns: repeat(auto-fill, calc((100% - 3 * 1rem) / 4)); +} +@media screen and (max-width: 1024px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3)); + } +} +@media screen and (max-width: 900px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2)); + } +} +@media screen and (max-width: 667px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3)); + } +} +@media screen and (max-width: 500px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2)); + } +} +.sites-wrap .group-body .site-card .card-link { + width: 100%; + display: flex; + flex-direction: column; +} +.sites-wrap .group-body .site-card .card-link >img { + width: 100%; + height: 100px; + object-fit: cover; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.2); +} +@media screen and (max-width: 1024px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 120px; + } +} +@media screen and (max-width: 900px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 150px; + } +} +@media screen and (max-width: 768px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 120px; + } +} +.sites-wrap .group-body .site-card .card-link .info { + margin-top: 0.5rem; + line-height: 1.2; +} +.sites-wrap .group-body .site-card .card-link .info >img { + width: 28px; + height: 28px; + border-radius: 28px; + float: left; + margin-right: 8px; + margin-top: 2px; +} +.sites-wrap .group-body .site-card .card-link .info span { + display: block; +} +.sites-wrap .group-body .site-card .card-link .info .title { + font-weight: 500; + color: var(--text-p1); + font-size: 0.875rem; + margin-top: 1px; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 1; +} +.sites-wrap .group-body .site-card .card-link .info .desc { + font-size: 10px; + margin-top: 2px; + word-wrap: break-word; + color: var(--text-p3); + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.sites-wrap .site-card .card-link >img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.sites-wrap .site-card .card-link:hover >img { + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-2px); +} +.tag-plugin.tabs { + position: relative; + margin-top: 1rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +} +.tag-plugin.tabs[align=left] { + align-items: flex-start; +} +.tag-plugin.tabs[align=left] .nav-tabs { + align-self: flex-start; +} +.tag-plugin.tabs[align=center] { + align-items: center; +} +.tag-plugin.tabs[align=right] { + align-items: flex-end; +} +.tag-plugin.tabs[align=right] .nav-tabs { + align-self: flex-end; +} +.tag-plugin.tabs .nav-tabs { + display: flex; + align-self: center; + overflow: scroll visible; + max-width: 100%; + white-space: nowrap; + margin: 0 !important; + line-height: 1.5; + position: relative; + padding: 8px 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar { + height: 0; + width: 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-track-piece { + background: transparent; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.tag-plugin.tabs .nav-tabs:after { + content: ''; + position: absolute; + background: var(--block-hover); + width: 100%; + height: 2px; + bottom: 0; + left: 0; + border-radius: 2px; +} +.tag-plugin.tabs .nav-tabs .tab { + list-style-type: none; +} +.tag-plugin.tabs .nav-tabs .tab a { + display: block; + cursor: pointer; + padding: 0.25rem 0.75rem; + font-size: 0.8125rem; + line-height: inherit; + font-weight: 500; + color: var(--text-p3); + border-radius: 4px; + position: relative; + margin: 0 2px; +} +.tag-plugin.tabs .nav-tabs .tab a:hover { + color: var(--text-p1); + background: var(--block-hover); +} +.tag-plugin.tabs .nav-tabs .tab a i { + pointer-events: none; +} +.tag-plugin.tabs .nav-tabs .tab.active a { + cursor: default; + color: var(--text-p1); + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +.tag-plugin.tabs .nav-tabs .tab.active a:after { + content: ''; + z-index: 1; + position: absolute; + background: #1cd0fd; + height: 2px; + bottom: -8px; + left: 0.75rem; + right: 0.75rem; + border-radius: 2px; +} +.tag-plugin.tabs .tab-content { + max-width: 100%; + text-align: justify; + margin-top: 0.5rem; +} +.tag-plugin.tabs .tab-content .tab-pane:not(.active) { + display: none; +} +.tag-plugin.tabs .tab-content .tab-pane.active { + display: block; +} +.md-text.indent .tag-plugin.tabs .tab-content p:not([class]) { + text-indent: calc(0.9375rem * 2); +} +.md-text.indent .tag-plugin.tabs .tab-content p:not([class]) a { + text-indent: 0; +} +.md-text .tag-plugin.tag { + padding: 0px 4px; + border-radius: 2px; + background: var(--theme-bg1); + color: var(--text-p2); + margin: 2px 0; + display: inline-block; + font-size: 0.875rem; + transition: background 0.2s ease-out, color 0.2s ease-out; + -moz-transition: background 0.2s ease-out, color 0.2s ease-out; + -webkit-transition: background 0.2s ease-out, color 0.2s ease-out; + -o-transition: background 0.2s ease-out, color 0.2s ease-out; +} +.md-text .tag-plugin.tag:hover { + background: var(--text-p2); + color: var(--theme-bg1); +} +.md-text .tag-plugin.timeline { + position: relative; + margin-top: 0; + padding-left: 16px; +} +.md-text .tag-plugin.timeline:before { + content: ''; + position: absolute; + z-index: 0; + background: var(--block-hover); + width: 4px; + left: 0px; + border-radius: 8px; + top: 0.5rem; + bottom: 0; +} +.md-text .tag-plugin.timeline:has(.loading-wrap) { + padding-left: 0; +} +.md-text .tag-plugin.timeline:has(.loading-wrap):before { + display: none; +} +.md-text .tag-plugin.timeline .timenode { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + box-sizing: border-box; + max-width: 100%; +} +.md-text .tag-plugin.timeline .timenode >.header, +.md-text .tag-plugin.timeline .timenode >.body { + box-sizing: border-box; + max-width: 100%; +} +.md-text .tag-plugin.timeline .timenode[highlight] .header:before { + background: #1cd0fd; +} +.md-text .tag-plugin.timeline .timenode+.timenode { + margin-top: 1rem; +} +.md-text .tag-plugin.timeline .timenode:hover .header p { + color: var(--text-p1); +} +.md-text .tag-plugin.timeline .timenode:hover .header .user-info { + background: #1cd0fd; +} +.md-text .tag-plugin.timeline .timenode:hover .header .user-info span { + color: var(--card); +} +.md-text .tag-plugin.timeline .timenode:hover .header:before { + background: #1cd0fd; + height: 16px; + top: calc(50% - 0.5 * 16px); + transform: scale(1); +} +.tag-plugin.timeline .timenode .header { + display: flex; + align-items: center; + position: relative; + margin: 0.25rem 0; + font-size: 0.75rem; +} +.tag-plugin.timeline .timenode .header .user-info { + display: flex; + align-items: center; + font-size: 0.75rem; + font-weight: 500; + color: var(--text-p1); + margin-right: 4px; + line-height: 1; + border-radius: 16px; + padding-right: 6px; + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; +} +.tag-plugin.timeline .timenode .header .user-info img { + background: #fff; + height: 16px; + border-radius: 16px; + display: inline; + margin: 0 4px 0 0; + object-fit: contain; +} +.tag-plugin.timeline .timenode .header .user-info:hover { + background: #ff5724; +} +.tag-plugin.timeline .timenode .header, +.tag-plugin.timeline .timenode .header p { + font-weight: 500; + color: var(--text-p3); + transition: color 0.2s ease-out; + -moz-transition: color 0.2s ease-out; + -webkit-transition: color 0.2s ease-out; + -o-transition: color 0.2s ease-out; + line-height: 1; +} +.tag-plugin.timeline .timenode .header p { + margin: 0 !important; + font-size: 0.75rem !important; +} +.tag-plugin.timeline .timenode .header p a { + color: inherit; + font-weight: inherit; +} +.tag-plugin.timeline .timenode .header:before { + content: ''; + position: absolute; + left: -16px; + width: 4px; + border-radius: 12px; + height: 4px; + top: calc(50% - 0.5 * 4px); + background: var(--text-meta); + transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -o-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + transform: scale(2); +} +.tag-plugin.timeline .body { + background: var(--card); + border-radius: 12px; + border-top-left-radius: 2px; + padding: 0.5rem 1rem; + margin-top: 4px; + box-shadow: 0 1px 4px 0px rgba(0,0,0,0.02), 0 2px 8px 0px rgba(0,0,0,0.02); +} +.tag-plugin.timeline .body p { + font-size: 0.875rem; +} +.tag-plugin.timeline .body p img { + display: block; +} +.tag-plugin.timeline .body:empty { + display: none; +} +.tag-plugin.timeline .body p, +.tag-plugin.timeline .body .highlight, +.tag-plugin.timeline .body ol, +.tag-plugin.timeline .body ul, +.tag-plugin.timeline .body .tag-plugin { + margin: 0.5rem 0; +} +.tag-plugin.timeline .body .tag-plugin.copy { + width: 240px; +} +.tag-plugin.timeline[api].stellar-fcircle-api .timenode:hover .header .user-info { + background: inherit; +} +.tag-plugin.timeline[api].stellar-fcircle-api .timenode:hover .header .user-info span { + color: inherit; +} +.tag-plugin.timeline[api] a.body { + display: block; + color: var(--text-p1); + line-height: 1.25; + padding: 0.75rem 1rem; +} +.tag-plugin.timeline[api] .body p.title { + font-size: 1rem; + font-weight: 700; + margin: 0.5rem 0 0.75rem; + line-height: 1.25; +} +.tag-plugin.timeline[api] .body p.title:only-child { + margin-bottom: 0.5rem; + font-weight: 500; +} +.tag-plugin.timeline[api] .body p.title a { + color: inherit; +} +.tag-plugin.timeline[api] .body p.title a:hover { + color: #ff5724; +} +.tag-plugin.timeline[api] .body a:has(img):after { + display: none; +} +.tag-plugin.timeline[api] .body a img { + margin: 0 auto; +} +.tag-plugin.timeline[api] .body img { + margin: 0.5rem auto; +} +.tag-plugin.timeline[api] .body pre code { + font-size: 0.75rem; +} +.tag-plugin.timeline[api] .body .footer { + margin: 0 0 -0.5rem; + padding: 0.5rem 0 1rem; + user-select: none; + font-weight: 500; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: stretch; + background: var(--card); +} +.tag-plugin.timeline[api] .body .footer span { + line-height: 1.8; +} +.tag-plugin.timeline[api] .body .footer:empty { + display: none; +} +.tag-plugin.timeline[api] .body .footer .flex { + display: flex; + flex-wrap: wrap; + font-size: 0.75rem; + align-items: stretch; +} +.tag-plugin.timeline[api] .body .footer .item { + border-width: 1px; + border-style: solid; + margin: 2px; + border-radius: 4px; + padding: 0 0.5rem; + display: flex; + align-items: center; +} +.tag-plugin.timeline[api] .body .footer .item:first-child { + margin-left: 0; +} +.tag-plugin.timeline[api] .body .footer .item:last-child { + margin-right: 0; +} +.tag-plugin.timeline[api] .body .footer .reaction { + border-color: var(--block); +} +.tag-plugin.timeline .body blockquote { + background: none; + border-radius: 0; + padding: 0 0.5rem; + margin: 0.75rem 0; +} +.tag-plugin.timeline .body blockquote p { + font-size: 0.8125rem; + margin: 0.25rem; +} +.tag-plugin.timeline .body { + line-height: 1.5; +} +.tag-plugin.timeline .body h1, +.tag-plugin.timeline .body h2 { + font-size: 1.25rem; + margin: 1rem 0; + line-height: 1.2; +} +.tag-plugin.timeline .body h3, +.tag-plugin.timeline .body h4 { + font-size: 1rem; + margin: 0.75rem 0; + line-height: 1.2; +} +.tag-plugin.timeline .body h5, +.tag-plugin.timeline .body h6 { + font-size: 0.9375rem; + margin: 0.5rem 0; + line-height: 1.2; +} +details.toc { + background: var(--block); + border: 1px solid var(--block-border); + border-radius: 6px; + overflow: hidden; + color: var(--text-p2); +} +details.toc summary { + cursor: pointer; + padding: 0 0.5rem; + line-height: 2; + color: var(--text-p2); + font-size: 0.8125rem; + font-weight: 500; +} +details.toc summary:hover { + background: var(--block-hover); +} +details.toc >div.body { + margin: var(--gap-p) 1rem 1rem; +} +details.toc[open] >summary { + border-bottom: 1px solid transparent; +} +details.toc[open] >summary:hover { + border-bottom-color: var(--block-border); +} +details.toc[open] >div.body section+section { + margin-top: 1rem; +} +details.toc[open] >div.body section .header { + line-height: 2; + font-weight: 500; +} +details.toc[open] >div.body section .header+.doc_tree { + margin-top: 0; +} +@media screen and (max-width: 667px) { + .tag-plugin.toc[display=mobile] { + display: block !important; + } +} +.l_left>.footer { + margin: 0.5rem var(--gap-l) 1rem; +} +.social-wrap { + display: grid; + grid-gap: 0.25rem 0.25rem; + grid-template-columns: repeat(auto-fill, 32px); +} +.social-wrap a.social { + line-height: 0; + display: inline-block; + padding: 6px; + border-radius: 4px; + filter: grayscale(100%); + overflow: hidden; + background: transparent; + transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; +} +.social-wrap a.social:hover { + color: #ff5724; + z-index: 1; + filter: unset; + transform: translateY(-1px); + background: linear-gradient(145deg, #ddd, #fff); + box-shadow: 2px 4px 8px #ddd, -2px -4px 8px #fff; +} +@media (prefers-color-scheme: dark) { + .social-wrap a.social:hover { + box-shadow: none; + } +} +.proj-wrap { + display: grid; + grid-gap: 0.25rem 0.25rem; +} +.proj-wrap a.item { + border-radius: 4px; + font-size: 0.8125rem; + font-weight: 500; + color: var(--text-p2); + background: var(--block); + border: 1px solid var(--block-border); + overflow: hidden; + padding: 0.75em; + text-align: center; +} +.proj-wrap a.item svg { + margin-right: 0.5em; +} +.proj-wrap a.item:hover { + color: #ff5724; + background: var(--card); +} +.l_left nav.menu { + margin-bottom: 0; +} +nav.menu { + margin: 1rem 0; + background: var(--block); + border: 1px solid var(--block-border); + border-radius: 6px; + display: flex; + flex-wrap: wrap; +} +nav.menu::-webkit-scrollbar { + display: none; +} +nav.menu::-webkit-scrollbar-track-piece { + background: transparent; +} +nav.menu::-webkit-scrollbar-thumb { + display: none; +} +nav.menu a.nav-item { + text-overflow: ellipsis; + word-break: keep-all; + margin: 1px; + border-radius: 4px; + font-size: 0.875rem; + font-weight: 500; + overflow: hidden; + padding: 0.375rem 0.5rem; + color: var(--text-p3); + text-align: center; +} +nav.menu a.nav-item.active, +nav.menu a.nav-item:hover { + color: var(--text-p1); + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +.l_left .menu a.nav-item { + flex-grow: 1; +} +.logo-wrap { + display: flex; + align-items: center; + overflow: hidden; +} +.logo-wrap a { + color: inherit; + display: flex; + align-items: center; +} +.logo-wrap a.avatar { + display: block; + position: relative; + width: 50px; + height: 50px; + flex-shrink: 0; + border-radius: 50px; + overflow: hidden; + margin-right: 1rem; +} +.logo-wrap a.avatar div.bg { + width: 100%; + height: 100%; + background-size: cover; +} +.logo-wrap a.avatar img.avatar { + margin: 2px; + object-fit: cover; + width: calc(100% - 2 * 2px); + height: calc(100% - 2 * 2px); + border-radius: calc(100% - 2 * 2px); +} +.logo-wrap a.avatar div.bg { + transition: opacity 0.2s ease-out; + -moz-transition: opacity 0.2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + -o-transition: opacity 0.2s ease-out; + position: absolute; + opacity: 0 !important; + z-index: -1; +} +@-moz-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-o-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +.logo-wrap a.avatar:hover div.bg { + opacity: 1 !important; + animation: spin infinite 4s; + animation-timing-function: linear; +} +.logo-wrap a.title { + font-size: 1.75rem; + font-weight: 900; + color: inherit; + line-height: 1.2; + display: block; + position: relative; +} +.logo-wrap a.title .main { + color: var(--text-p0); +} +.logo-wrap a.title .sub { + color: var(--text-p1); + transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -o-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + white-space: nowrap; +} +.logo-wrap a.title .hover { + position: absolute; + bottom: 0; + transform: translateY(8px); + overflow: visible; +} +.logo-wrap a.title:hover .normal { + opacity: 0; + transform: translateY(-8px); +} +.logo-wrap a.title:hover .hover { + transform: translateY(0); + opacity: 1 !important; +} +.l_left { + display: flex; + flex-direction: column; + word-break: break-all; + text-align: justify; + height: 100vh; +} +.l_left .header { + margin: var(--gap-l) var(--gap-l) 0; + margin-top: calc(2 * var(--gap-l)); +} +@media screen and (min-width: 667px) { + .l_left >.widgets:first-child>.widget-wrapper:first-child { + margin-top: calc(2 * var(--gap-l)); + } +} +@media screen and (max-width: 667px) { + .l_left { + height: 100vh; + } +} +.l_left[layout=wiki] { + padding-bottom: 0; + height: 100vh; +} +@media screen and (max-width: 667px) { + .l_left[layout=wiki] { + height: 100vh; + } +} +.l_left[layout=wiki] .widgets >:last-child { + margin-bottom: 6rem; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body { + display: flex; + margin-bottom: 1.5rem; + flex-direction: column; + align-items: flex-start; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home { + margin-bottom: 0.5rem; + color: var(--text-p1); +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home svg { + margin-right: 2px; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home:hover { + color: #ff5724; + filter: unset !important; +} +.widget-wrapper.ghrepo .repo { + display: block; + padding: 0.75rem 0.5rem; + color: var(--text-p2); + background: var(--card); + border-radius: 12px; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.widget-wrapper.ghrepo .repo >div+div { + margin-top: 0.5rem; +} +.widget-wrapper.ghrepo .repo span { + color: var(--text-p2); +} +.widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-1px); +} +.widget-wrapper.ghrepo .repo svg { + margin-right: 4px; +} +.widget-wrapper.ghrepo .repo .flex-row { + display: flex; + align-items: center; +} +.widget-wrapper.ghrepo .repo .repo-name { + font-size: 0.875rem; + font-weight: 700; + color: var(--text-p1); +} +.widget-wrapper.ghrepo .repo .repo-desc { + font-size: 0.8125rem; + margin-left: 2px; + margin-right: 2px; +} +.widget-wrapper.ghrepo .repo .grid { + font-size: 0.8125rem; + display: grid; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 2px) / 3)); +} +.widget-wrapper.ghuser .widget-header+.widget-body { + margin: 0.75rem 0; +} +.widget-wrapper.ghuser .widget-body { + text-align: center; + background: var(--card); + border-radius: 12px; + padding: 1rem; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +.widget-wrapper.ghuser .avatar { + display: block; + border-radius: 100%; + margin: 1rem auto 1.25rem auto; + max-width: 75%; + overflow: hidden; +} +.widget-wrapper.ghuser .avatar img { + display: block; +} +@media screen and (max-width: 768px) { + .widget-wrapper.ghuser .avatar { + max-width: 50%; + } +} +.widget-wrapper.ghuser .username { + font-weight: 900; + font-size: 1.5rem; + color: var(--text-p0); + margin: 0.5rem 0; +} +.widget-wrapper.ghuser .bio { + font-size: 0.8125rem; + margin: 0.5rem 0; +} +.widget-wrapper.ghuser .follow { + font-weight: 500; + border-radius: 64px; + padding: 0.5rem 1rem; + background: #1cd0fd; + color: var(--card); + font-size: 1rem; + align-self: stretch; + text-align: center; + line-height: 1.5; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; +} +.widget-wrapper.ghuser .follow svg { + margin-right: 6px; +} +.widget-wrapper.ghuser .follow:hover { + background: #ff5724; +} +.widget-wrapper.ghuser .menu { + margin-bottom: 0; + background: none; + border: 0; +} +.widget-wrapper.ghuser .menu a { + margin: 0; +} +.widget-wrapper.ghuser .menu a.active { + box-shadow: none; + position: relative; + background: none; +} +.widget-wrapper.ghuser .menu a.active:after { + content: ''; + position: absolute; + height: 3px; + bottom: 0; + width: 32px; + left: calc(50% - 0.5 * 32px); + border-radius: 4px; + background: #1cd0fd; +} +.widget-wrapper.ghuser .menu a:hover { + box-shadow: none; + background: var(--block); +} +.widget-wrapper.ghuser .buttons { + margin: 1rem 0; + align-self: stretch; + display: grid; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 2px) / 3)); +} +.widget-wrapper.ghuser .btn { + display: flex; + flex-direction: column; + align-items: center; + color: inherit; + border: 1px solid transparent; + border-radius: 4px; + padding: 0.25rem 0; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; +} +.widget-wrapper.ghuser .btn:hover { + background: var(--block); +} +.widget-wrapper.ghuser .btn .title { + font-size: 1rem; + font-weight: 700; +} +.widget-wrapper.ghuser .btn .desc { + font-size: 0.75rem; + color: var(--text-p3); + font-weight: 500; +} +.widget-wrapper.recent .widget-body { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: 0.25rem; +} +.widget-wrapper.recent .widget-body a { + line-height: 1.2; + font-size: 0.8125rem; + margin: 0.25rem 0; +} +.widget-wrapper.recent .widget-body a .title { + font-size: 0.8125rem; + color: var(--text-p2); +} +.widget-wrapper.recent .widget-body a:hover { + color: #ff5724; +} +.widget-wrapper.related .widget-body a { + margin-top: 0.5rem; + margin-bottom: 1rem; +} +.widget-wrapper.related .widget-body a .title { + font-weight: 700; + font-size: 0.875rem; +} +.widget-wrapper.related .widget-body a .excerpt { + -webkit-line-clamp: 3; +} +.widgets .widget-wrapper.search { + margin-top: 1rem; + margin-bottom: 0; +} +.search-wrapper { + width: 100%; +} +.search-wrapper >.search-form { + position: sticky; + top: 1rem; + display: flex; + flex-direction: row; + align-items: center; + transition: 0.38s ease-out; + z-index: 0; +} +.search-wrapper >.search-form:after { + content: ''; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 2px; + border-radius: 4px; + background: linear-gradient(to right, #04f3ff, #08ffc6, #ddf730, #ffbd19, #ff1fe0, #c418ff, #04f3ff); + background-size: 200%; + animation: glow 10s linear infinite; +} +@-moz-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@-webkit-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@-o-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +.search-wrapper .search-input { + width: 100%; + padding: 0.5rem 0; + line-height: 1; + box-sizing: border-box; + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; + color: var(--text-p0); +} +.search-wrapper.noresult .search-icon { + color: #f44336; +} +.search-wrapper .search-no-result { + display: none; + margin: 1em auto; + color: var(--text-p1); + text-align: center; + font-size: 0.875rem; + padding: 2rem; + background: var(--block); + border-radius: 6px; +} +.search-wrapper #search-result ul.search-result-list { + padding: 0; + margin: 0; + list-style-type: none; +} +.search-wrapper #search-result li { + margin: 1em auto; +} +.search-wrapper #search-result li:hover .search-result-title { + color: #ff5724; +} +.search-wrapper #search-result .search-result-title { + color: var(--text-p1); + font-weight: 700; + line-height: 1.2; +} +.search-wrapper #search-result .search-result-content { + overflow: hidden; + color: var(--text-p3); + margin: 0.4em auto; + max-height: 13em; + text-align: justify; + font-size: 0.75rem; + line-height: 1.2; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 3; +} +.search-wrapper #search-result .search-keyword { + border-bottom: 1px dashed #ff5724; + color: #ff5724; + font-weight: bold; +} +.search-wrapper.noresult .search-no-result { + display: block; +} +.widget-wrapper .search-form { + top: 0; + background: var(--site-bg); +} +.widget-wrapper .search-input { + padding-left: 1.5rem; +} +.widget-wrapper .search-icon { + position: absolute; + margin-left: 0.25rem; + left: 0; + pointer-events: none; + color: var(--text-p2); +} +.widget-wrapper #search-result, +.widget-wrapper .search-no-result { + margin-top: 1rem; +} +.widget-wrapper:not(:first-child) .search-wrapper { + margin-top: -1rem; +} +.widget-wrapper.tagcloud .widget-body { + margin-top: 0.25rem; +} +.widget-wrapper.tagcloud .widget-body a { + word-break: break-word; + color: var(--text-p2); + line-height: 1.5; +} +.widget-wrapper.tagcloud .widget-body a:hover { + color: #ff5724; +} +.widget-wrapper.timeline .widget-body { + margin-top: 0.5rem; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header { + margin-bottom: 0.5rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header .user-info { + background: var(--block); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header .user-info:hover { + background: #ff5724; + color: var(--card); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header:before { + display: none; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode+.timenode { + margin-top: 0.75rem; +} +.widget-wrapper.toc.single .doc-tree.active>.toc { + border-left: 2px solid var(--block-hover); +} +.widget-wrapper.toc .widget-header { + margin-top: 1rem; +} +.widget-wrapper.toc.single .widget-header { + font-weight: 500; + font-size: 0.75rem; +} +.widget-wrapper.toc.single .widget-header >span { + margin: 0.5rem 0; +} +.widget-wrapper.toc .widget-body { + margin-top: 0; +} +.widget-wrapper.toc .widget-body ul ul, +.widget-wrapper.toc .widget-body ul ol { + padding-left: 0; +} +.widget-wrapper.toc .widget-body ol ul, +.widget-wrapper.toc .widget-body ol ol { + padding-left: 0; +} +.widget-wrapper.toc .widget-body .doc-tree { + margin: 4px 0; +} +.widget-wrapper.toc .widget-body .toc { + padding: 0; + margin: 0; + padding-left: 0.25rem; +} +.widget-wrapper.toc .widget-body .toc .toc-item .toc-link { + padding: 0.5rem; + font-weight: 500; + font-size: 0.8125rem; + color: var(--text-p2); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-item .toc-link { + padding: 0.25rem 0.5rem 0.25rem 1.3rem; + font-weight: 400; + color: var(--text-p2); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-child .toc-item .toc-link { + padding-left: 2.1rem; + font-size: 0.75rem; + color: var(--text-p3); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-child .toc-child .toc-item .toc-link { + padding-left: 2.9rem; +} +.widget-wrapper.toc .toc-item { + color: var(--text-p2); + font-size: 0.75rem; + padding: 0; + list-style: none; +} +.widget-wrapper.toc .toc-item.active { + color: #1cd0fd; + border-left-color: #1cd0fd; +} +.widget-wrapper.toc .toc-item .toc-child .toc-item { + padding: 0; +} +.widget-wrapper.toc a.toc-link { + color: inherit; + display: block; + line-height: 1.2; + border-radius: 4px; + position: relative; +} +.widget-wrapper.toc a.toc-link:before { + content: ''; + position: absolute; + left: -6px; + top: calc(50% - 6px); + bottom: calc(50% - 6px); + width: 2px; + border-radius: 2px; + background: #1cd0fd; + visibility: hidden; +} +.widget-wrapper.toc a.toc-link:hover { + background: var(--block-hover); +} +.widget-wrapper.toc a.toc-link.active { + color: #1cd0fd !important; +} +.widget-wrapper.toc a.toc-link.active:before { + visibility: visible; +} +.widget-wrapper.toc.multi .widget-header { + color: var(--text-p1); + font-size: 0.875rem; +} +.widget-wrapper.toc.multi .doc-tree { + border-radius: 6px; + background: var(--block); + overflow: hidden; + border: 1px solid var(--block-border); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link { + color: var(--text-p2); + padding: 0.5rem; + display: block; + font-size: 0.75rem; + font-weight: 500; + position: relative; +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:after { + position: absolute; + right: 0.5rem; +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link.active { + color: var(--text-p1); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link.active:only-child { + background: var(--card); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:hover { + background: var(--block-hover); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:hover:after { + content: '+'; +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link { + background: var(--block); + font-weight: 700; +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link:not(:only-child) { + border-bottom: 1px solid var(--block-border); +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link:hover:after { + content: none; +} +.widget-wrapper.toc.multi .doc-tree.active >.toc { + padding: 4px; + background: var(--card); +} +.widget-wrapper.toc.multi .doc-tree.active >.toc a.toc-link:before { + left: -2px; + width: 4px; +} +.widget-wrapper.toc.multi .doc-tree.active >.toc a.toc-link:hover { + background: var(--block); +} +.widgets .loading-wrap { + margin: 0.5rem 0; +} +.widgets { + overflow: scroll; + flex-grow: 1; + scrollbar-width: none; + z-index: 1; + line-height: 1.2; +} +.widgets::-webkit-scrollbar { + height: 0; + width: 0; +} +.widgets::-webkit-scrollbar-track-piece { + background: transparent; +} +.widgets::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.widgets::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.widgets .widget-wrapper .widget-header { + padding-left: var(--gap-l); + padding-right: var(--gap-l); + display: flex; + justify-content: space-between; + align-items: center; + font-weight: 500; + position: sticky; + top: -2px; + background: var(--site-bg); + padding-top: 2px; + z-index: 1; +} +.widgets .widget-wrapper .widget-header .item { + display: block; +} +.widgets .widget-wrapper .widget-header >span { + margin: 0.25rem 0; + text-align: left; +} +.widgets .widget-wrapper .widget-header:empty { + display: none; +} +.widgets .widget-wrapper .widget-header .cap-action { + border-radius: 4px; + padding: 4px 4px; + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; + line-height: 0; + color: var(--text-meta); + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; +} +.widgets .widget-wrapper .widget-header .cap-action:hover { + background: var(--block-hover); +} +.widgets .widget-wrapper .widget-header .cap-action .icon { + fill: var(--text-meta); +} +.widgets .widget-wrapper .widget-header .cap-action:hover { + color: #ff5724; +} +.widgets .widget-wrapper .widget-header .cap-action:hover .icon { + fill: #ff5724; +} +.widgets .widget-wrapper .widget-body { + margin: 0.5rem var(--gap-l); + color: var(--text-p1); +} +.widgets .widget-wrapper .widget-body p { + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.5; +} +.widgets .widget-wrapper .widget-header+.widget-body { + margin-top: 0; +} +.widgets .widget-wrapper+.widget-wrapper .widget-header { + margin-top: 3rem; +} +.widgets .widget-wrapper+.widget-wrapper.toc .widget-header { + margin-top: 1rem; +} +.widget-wrapper { + display: block; + margin: 2rem 0; +} +.post-list #archive { + padding: 1rem; +} +.post-list #archive .archive-header { + display: inline-block; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-weight: 700; + line-height: 1.2; + margin-bottom: 0.5em; + position: relative; + padding: 4px 0; + color: var(--text-p3); +} +.post-list #archive .archive-header:after { + content: ""; + position: absolute; + height: 4px; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + border-radius: 4px; + background: var(--block-border); +} +.post-list #archive a.post { + display: inline-flex; + align-items: baseline; + margin: 0.25rem 0; + color: var(--text-p1); +} +.post-list #archive a.post:hover { + color: #ff5724; +} +.post-list #archive a.post time { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + margin-right: 1em; + font-weight: 700; + flex-shrink: 0; + opacity: 0.5; +} +.post-list #archive:hover .archive-header { + color: var(--text-p1); +} +.post-list #archive:hover .archive-header:after { + background: #1cd0fd; +} +.post-list #cats { + padding: 0; +} +.post-list #cats a.cat { + display: flex; + padding: 0.5em 1rem; + border-radius: 6px; + color: var(--text-p2); + align-items: center; + justify-content: space-between; + font-weight: 500; + font-size: 0.875rem; +} +.post-list #cats a.cat.child { + padding-left: 2rem; +} +.post-list #cats a.cat .badge { + font-weight: 700; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + opacity: 0.5; + font-size: 0.75rem; +} +.post-list #cats a.cat:hover { + background: var(--block-hover); + color: var(--text-p0); +} +.post-list #cats a.cat:hover .badge { + opacity: 1; + color: #1cd0fd; +} +.post-list #tags { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 -4px; +} +.post-list #tags a.tag { + display: inline-flex; + align-items: center; + position: relative; + color: var(--text-p2); + margin: 4px; + padding: 0.5em 0.75rem; + border-radius: 4px; + background: var(--block); + font-size: 0.8125rem; + font-weight: 500; +} +.post-list #tags a.tag:before { + content: "#"; + margin-left: -2px; + margin-right: 2px; + opacity: 0.4; +} +.post-list #tags a.tag:hover { + color: var(--text-p0); + background: var(--block-hover); +} +.post-list #tags a.tag:hover:before { + color: #1cd0fd; + opacity: 1; +} +.md-text.error-page { + text-align: center; + margin-top: 2rem; +} +.md-text.error-page img#error { + width: 30vw; + max-height: 150px; + margin-bottom: 2rem; +} +.md-text.error-page h1 { + font-size: 4rem; + margin-bottom: 0; +} +.md-text.error-page p.what, +.md-text.error-page p.why { + margin: 0.5em; +} +.md-text.error-page p.why { + font-size: 0.8125rem; +} +.md-text.error-page a#back { + margin: 2rem 0; + display: inline-block; + background: #fdb62f; + color: #000; + border: 2px solid #000; +} +@media screen and (max-width: 768px) { + .md-text.error-page { + margin-top: 4rem; + } +} +.l_body { + display: flex; + margin: auto; + padding: 0 var(--gap-l); + justify-content: center; +} +.l_body .l_left { + z-index: 8; + width: var(--width-left); + flex-shrink: 0; + position: sticky; + position: -webkit-sticky; + top: 0; +} +.l_body .l_main { + flex-shrink: 1; + flex-grow: 1; + width: 320px; + max-width: var(--width-main); +} +@media screen and (max-width: 667px) { + .mobile-only { + display: block !important; + } + .l_body { + padding: 0; + } + .l_body .l_left { + position: fixed; + transform: translateX(-320px); + margin: 0; + left: 0; + background: var(--site-bg); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + z-index: 9; + } + .l_body .l_main { + max-width: 100%; + } + .l_body.mobile .l_left { + transition: transform 0.3s ease-out; + } + .l_body.mobile.sidebar .l_left { + transform: translateX(0px); + } +} +.post-list { + margin: 1rem; +} +.post-list .post-title:first-child { + margin-top: 0.5rem; +} +.post-list .post-title { + font-weight: 500; + margin: 1.25rem 0 0.75rem 0; + line-height: 1.2; + font-size: 1.375rem; + border-bottom: none; + color: var(--text-p0); + transition: color 0.2s ease-out; + -moz-transition: color 0.2s ease-out; + -webkit-transition: color 0.2s ease-out; + -o-transition: color 0.2s ease-out; +} +@media screen and (max-width: 500px) { + .post-list .post-title { + font-size: 1.125rem; + margin: 0.5rem 0; + } +} +.post-list .wiki .post-title { + margin-top: 0.5rem; +} +.post-list .post-card { + display: block; + margin: 1rem 0; + border-radius: 12px; + box-shadow: 0 2px 8px 0px rgba(0,0,0,0.02); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + overflow: hidden; + z-index: 0; + background: var(--card); + position: relative; +} +.post-list .post-card .excerpt { + margin: 1rem 0; +} +@media screen and (max-width: 500px) { + .post-list .post-card .excerpt { + margin: 0.5rem 0; + } +} +.post-list .post-card .excerpt >p { + margin: 1rem 0; + line-height: 1.5; +} +@media screen and (max-width: 500px) { + .post-list .post-card .excerpt >p { + margin: 0.5rem 0; + } +} +.post-list .post-card .meta.cap { + display: flex; + flex-wrap: wrap; + align-items: center; + margin: 0.25rem 0; + line-height: 1.5; +} +.post-list .post-card .meta.cap span+span { + margin-left: 0.5rem; +} +.post-list .post-card .meta.cap span.pin { + line-height: 0; +} +.post-list .post-card .meta.cap span.pin img { + object-fit: contain; + height: 1.5em; +} +.post-list .post-card:hover { + box-shadow: 0 1px 4px 0px rgba(0,0,0,0.1), 0 4px 16px 0px rgba(0,0,0,0.1); +} +.post-list .post-card:hover img { + transform: scale(1.02); + filter: brightness(80%); +} +.post-list .md-text { + padding: 1rem; +} +@media screen and (max-width: 500px) { + .post-list .md-text { + padding: 0.5rem 1rem; + } +} +.post-list .md-text p { + color: var(--text-p2); + font-size: 0.875rem; +} +.post-list .post-card .post-cover { + overflow: hidden; + width: calc(100% + 2 * 1rem); + border-radius: 0; + margin-left: -1rem; + margin-top: -1rem; + margin-right: -1rem; + background: var(--block); +} +.post-list .post-card .post-cover:not(.lazy) { + transition: transform 1s ease-out; + -moz-transition: transform 1s ease-out; + -webkit-transition: transform 1s ease-out; + -o-transition: transform 1s ease-out; +} +.post-list .post-card .post-cover img { + object-fit: cover; + width: 100%; + border-radius: 0; + height: 280px; +} +@media screen and (max-width: 900px) { + .post-list .post-card .post-cover img { + height: 240px; + } +} +@media screen and (max-width: 768px) { + .post-list .post-card .post-cover img { + height: 220px; + } +} +@media screen and (max-width: 425px) { + .post-list .post-card .post-cover img { + height: 200px; + } +} +@media screen and (max-width: 375px) { + .post-list .post-card .post-cover img { + height: 180px; + } +} +.post-list .post-card.post.photo .cover { + position: relative; + line-height: 0; +} +.post-list .post-card.post.photo .cover img { + width: 100%; +} +.post-list .post-card.post.photo .cover .cover-info { + padding: 1.5rem 1rem; + position: absolute; + line-height: 1.2; + width: calc(100% - 1rem * 2); + color: var(--text-p0); +} +.post-list .post-card.post.photo .cover .cover-info[position=top] { + top: 0; + background-image: linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0)); +} +.post-list .post-card.post.photo .cover .cover-info[position=bottom] { + bottom: 0; + background-image: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.2)); +} +.post-list .post-card.post.photo .cover .cover-info div+div { + margin-top: 4px; +} +.post-list .post-card.post.photo .cover .cover-info .cap { + font-size: 0.8125rem; + color: unset; +} +.post-list .post-card.post.photo .cover .cover-info .title { + font-weight: 500; + font-size: 1.375rem; +} +@media screen and (max-width: 500px) { + .post-list .post-card.post.photo .cover .cover-info { + padding: 1rem; + } + .post-list .post-card.post.photo .cover .cover-info div+div { + margin-top: 2px; + } + .post-list .post-card.post.photo .cover .cover-info .title { + font-size: 1.125rem; + } + .post-list .post-card.post.photo .cover .cover-info .cap { + font-size: 0.75rem; + } +} +.post-list .post-card.post.photo h2 { + margin: 0.25rem 0; + font-size: 1.125rem; +} +.post-list .post-card.wiki article { + display: flex; + flex-wrap: wrap; + transition: box-shadow 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out; + justify-content: center; + padding: 1rem 0.5rem; +} +.post-list .post-card.wiki article .preview { + display: flex; + width: 200px; + margin: 1rem 0.5rem; + align-items: center; +} +@media screen and (min-width: 950px) { + .post-list .post-card.wiki article .preview { + margin: 1rem; + } +} +.post-list .post-card.wiki article .preview img { + object-fit: contain; +} +.post-list .post-card.wiki article .preview img:not(.lazy) { + transition: transform 0.75s ease-out; + -moz-transition: transform 0.75s ease-out; + -webkit-transition: transform 0.75s ease-out; + -o-transition: transform 0.75s ease-out; +} +.post-list .post-card.wiki article .excerpt { + margin: 1rem 0.5rem; + min-width: 280px; + flex: 1; + overflow: hidden; + word-wrap: break-word; +} +@media screen and (min-width: 950px) { + .post-list .post-card.wiki article .excerpt { + margin-right: 2rem; + } +} +.post-list .post-card.wiki article .excerpt p:last-child { + margin-bottom: 0; +} +.l_main { + position: relative; + padding-bottom: calc(1 * var(--gap-l)); +} +@media screen and (min-width: 1400px) { + .l_main { + margin-left: calc(2 * var(--gap-l)); + margin-right: calc(2 * var(--gap-l) + var(--width-left) / 2); + } +} +@media screen and (min-width: 667px) { + .l_main { + padding-top: calc(2 * var(--gap-l)); + } +} +@media screen and (max-width: 667px) { + .l_main { + padding-top: 1rem; + } +} +.l_main header { + margin: 2rem 1rem 1rem; +} +.l_main header .logo-wrap { + margin: 0; +} +.md-text { + max-width: 100%; + padding: 1rem; + color: var(--text-p1); + line-height: 1.7; + word-break: break-word; +} +.md-text:first-child { + margin-top: 0; +} +.md-text.excerpt p { + font-size: 0.875rem; + margin: 1em 0; +} +h1.article-title { + margin-top: 0.5em; + margin-bottom: 1em; + line-height: 1.2; + color: var(--text-p0); +} +.md-text.content { + position: relative; + padding-bottom: 2rem; + overflow: hidden; +} +.md-text.content.indent >p:not([class]) { + text-indent: calc(0.9375rem * 2); + text-align: left; +} +.md-text.content.indent >p:not([class]) a { + text-indent: 0; +} +.md-text.content.indent h1, +.md-text.content.indent h2, +.md-text.content.indent h3, +.md-text.content.indent h4, +.md-text.content.indent h5, +.md-text.content.indent h6 { + text-align: center; +} +.md-text.content.indent >h2:not([class]) { + border-bottom: none; +} +.md-text.content >:first-child:not(h1) { + margin-top: 0; +} +.md-text.content h1:not(:first-child) { + margin-top: 2em; +} +.md-text.content h2 { + margin-bottom: 1rem; +} +.md-text.content h3, +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + margin-bottom: 0.5rem; +} +.md-text.content h2, +.md-text.content h3, +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + color: var(--text-p0); + padding-top: 1rem; + line-height: 1.8; +} +.md-text.content h2:hover a.headerlink:before, +.md-text.content h3:hover a.headerlink:before, +.md-text.content h4:hover a.headerlink:before, +.md-text.content h5:hover a.headerlink:before, +.md-text.content h6:hover a.headerlink:before { + opacity: 1; +} +.md-text.content:first-child { + padding-top: 0; +} +.md-text ul:not(:last-child), +.md-text ol:not(:last-child) { + padding-bottom: 0.5rem; + margin: 0; +} +.md-text blockquote p, +.md-text ul p, +.md-text ol p, +.md-text blockquote ul, +.md-text ul ul, +.md-text ol ul, +.md-text blockquote ol, +.md-text ul ol, +.md-text ol ol { + font-size: 0.875rem; + line-height: 1.5; +} +.md-text blockquote p code, +.md-text ul p code, +.md-text ol p code, +.md-text blockquote ul code, +.md-text ul ul code, +.md-text ol ul code, +.md-text blockquote ol code, +.md-text ul ol code, +.md-text ol ol code { + font-size: inherit; + padding: 0; + background: none; +} +.md-text p *, +.md-text blockquote *, +.md-text .tag-plugin *, +.md-text ul *, +.md-text ol *, +.md-text .highlight *, +.md-text table * { + --gap-p: var(--gap-p-compact); +} +.md-text p, +.md-text ul, +.md-text ol { + margin-top: calc(var(--gap-p) - 4px); + margin-bottom: calc(var(--gap-p) - 4px); +} +.md-text .tag-plugin, +.md-text iframe { + margin-top: var(--gap-p); + margin-bottom: var(--gap-p); +} +.md-text iframe { + display: block; +} +.md-text.content a.headerlink:before { + opacity: 0; + content: '#'; + position: absolute; + margin-left: -0.75em; +} +.md-text.content h2 { + margin-top: 2rem; + border-bottom: 1px solid var(--block-border); + font-weight: 400; +} +.md-text.content h3 { + margin-top: 1.5rem; + font-weight: 400; +} +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + font-weight: 500; +} +.md-text.content h1+h2 { + margin-top: -0.5rem; +} +.md-text.content h2+h3 { + margin-top: -0.5rem; +} +.md-text.content h3+h4 { + margin-top: -0.5rem; +} +.md-text.content h4+h5 { + margin-top: -0.5rem; +} +.md-text.content h5+h6 { + margin-top: -0.5rem; +} +.md-text p { + font-size: 0.9375rem; +} +.md-text pre { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} +.md-text .center { + align-self: center; +} +.md-text>div { + margin: var(--gap-p) 0; +} +.md-text img { + border-radius: 6px; + margin: auto; + display: block; +} +.md-text p:not([class]) a:not([class]), +.md-text li:not([class]) a:not([class]) { + position: relative; + padding: 2px 0; + text-decoration: none; + line-height: 1.2; +} +.md-text p:not([class]) a:not([class]):before, +.md-text li:not([class]) a:not([class]):before { + content: ''; + position: absolute; + border-radius: 2px; + bottom: 0; + left: 0; + right: 0; + height: 1px; + opacity: 0.8; + background: var(--theme-link); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; +} +.md-text p:not([class]) a:not([class]):hover, +.md-text li:not([class]) a:not([class]):hover { + border-bottom: none; + color: var(--theme-link); + z-index: 0; +} +.md-text p:not([class]) a:not([class]):hover:before, +.md-text li:not([class]) a:not([class]):hover:before { + height: 100%; + opacity: 0.2; + z-index: -1; + bottom: 0; + left: -2px; + right: -2px; +} +.md-text .aplayer { + border-radius: 12px; +} +img.lazy { + transition: transform 0.5s ease-out, filter 0.28s ease-out; + -moz-transition: transform 0.5s ease-out, filter 0.28s ease-out; + -webkit-transition: transform 0.5s ease-out, filter 0.28s ease-out; + -o-transition: transform 0.5s ease-out, filter 0.28s ease-out; +} +img.lazy:not(.loaded) { + filter: blur(8px); + -webkit-filter: blur(8px); +} +img.lazy.loaded, +img.lazy.error { + filter: none; + -webkit-filter: none; +} +.group-body .site-card .card-link>img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.group-body .user-card .card-link>img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; +} +:root { + --swiper-theme-color: #1cd0fd !important; +} +.swiper { + width: 100%; + border-radius: 4px; + --gap-p: 2rem; +} +.swiper:not(.swiper-initialized) { + display: none; +} +div.swiper-slide { + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + align-self: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + width: 50%; +} +div.swiper-slide img { + border-radius: 4px; +} +.swiper[width='max'] .swiper-slide { + width: 100%; +} +.swiper[width='min'] .swiper-slide { + width: 25%; +} +.swiper[effect='cards'] .swiper-slide { + max-width: 75%; +} +.swiper-button-prev, +.swiper-button-next { + padding: 1rem 0.25rem; + margin-top: -2rem !important; + border-radius: 40px; + background: rgba(255,255,255,0.25); + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; + --swiper-theme-color: var(--text-p0) !important; +} +.swiper-button-prev:after, +.swiper-button-next:after { + font-size: 1.2rem !important; + font-weight: 700 !important; + color: var(--swiper-theme-color); +} +.swiper-button-prev:hover, +.swiper-button-next:hover { + background: #fff !important; + --swiper-theme-color: #ff5724 !important; +} +.swiper-button-prev:after { + transform: translateX(-1px); +} +.swiper-button-next:after { + transform: translateX(1px); +} +img[fancybox='true'] { + cursor: zoom-in; +} +.swiper-slide { + cursor: zoom-in; +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..21ee247 --- /dev/null +++ b/index.html @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+

Vuepress(2.x) config.ts base根目录配置和问题解决

介绍与js格式文件不同,ts的base配置仅需一行 +js配置格式: +123module.exports = {base:'/',} + +ts配置格式: +1234export default defineUserconfig({base : '/',//下面是其他配置}) + +如果在ts中使用了js格式,代码不会报错,...

发布于 
+
+

Vuepress使用重定向解决默认语言问题

前言Vuepress 默认情况下使用/作为默认语言路径,这导致默认语言文件在文件层级上会比其他语言的文件高一级(下图),影响美观和维护,本教程将使用vuepress-plugin-locale-redirect插件修复此问题。 +12345678910docs├─ README.md├─ foo.md├─ nested│ └─ README.md└─ zh ├─ README.md ...

发布于 
+
+

vscode git提示99+的解决方法

有一次手贱不小心git init的时候出错了,于是vscode侧边栏的git就一直提示99+ 一打开发现整个usr(用户)文件夹下的内容都被扫描了,不说废话,上解决方法 +打开终端,cd到出问题的文件夹,输入ls -a 查看父/子文件夹是否有.git文件,然后输入并执行 +1rm -rf .git + +如果报错就在前缀加一个 [sudo] (可能要输入密码) +千 万 不 要 只 输 入 ...

发布于 
+
+

M1 MacBook 配置dosbox-x环境(dos汇编debug,MASM环境搭建)

1.下载dosbox-x用浏览器访问此网址获取下载请求https://github.com/joncampbell123/dosbox-x/releases/download/dosbox-x-v0.83.19/dosbox-x-macosx-arm64-20211101100925.zip先不要急着解压,文件等会再操作 +2.下载MASM用浏览器访问此网址获取下载请求(需要梯子)https:...

发布于 
+
+

powerlevel10k 去除用户名或主机名显示

如果你不关心过程只想看解决方案请点击这里跳转 +过程因为zsh默认会显示用户名,而我的用户名用的是真实姓名,所以为了隐私需要隐藏,在bing了一下之后找到了个修改主题文件的解决方法,我按照教程放到了~/.zshrc里,但是没有生效(这里挖个坑) 教程链接 +我看到了部分其他教程是将prompt_context() 放在主题文件中,但是我复制到主题文件后仍然无效 +这个过程中顺带发现我的主题地址和其...

发布于 
+
+

links

发布于 
+
+ + + + + +

本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

+
+ + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..4196ff6 --- /dev/null +++ b/js/main.js @@ -0,0 +1,386 @@ +console.log('\n' + '%c Stellar v' + stellar.version + ' %c\n' + stellar.github + '\n', 'color:#e8fafe;background:#03c7fa;padding:8px;border-radius:4px', 'margin-top:8px'); +// utils +const util = { + + // https://github.com/jerryc127/hexo-theme-butterfly + diffDate: (d, more = false) => { + const dateNow = new Date() + const datePost = new Date(d) + const dateDiff = dateNow.getTime() - datePost.getTime() + const minute = 1000 * 60 + const hour = minute * 60 + const day = hour * 24 + const month = day * 30 + + let result + if (more) { + const monthCount = dateDiff / month + const dayCount = dateDiff / day + const hourCount = dateDiff / hour + const minuteCount = dateDiff / minute + + if (monthCount > 12) { + result = null + } else if (monthCount >= 1) { + result = parseInt(monthCount) + ' ' + stellar.config.date_suffix.month + } else if (dayCount >= 1) { + result = parseInt(dayCount) + ' ' + stellar.config.date_suffix.day + } else if (hourCount >= 1) { + result = parseInt(hourCount) + ' ' + stellar.config.date_suffix.hour + } else if (minuteCount >= 1) { + result = parseInt(minuteCount) + ' ' + stellar.config.date_suffix.min + } else { + result = stellar.config.date_suffix.just + } + } else { + result = parseInt(dateDiff / day) + } + return result + }, + + copy: (id, msg) => { + const el = document.getElementById(id); + if (el) { + el.select(); + document.execCommand("Copy"); + if (msg && msg.length > 0) { + hud.toast(msg); + } + } + }, + + toggle: (id) => { + const el = document.getElementById(id); + if (el) { + el.classList.toggle("display"); + } + }, +} + +const hud = { + toast: (msg, duration) => { + duration = isNaN(duration) ? 2000 : duration; + var el = document.createElement('div'); + el.classList.add('toast'); + el.innerHTML = msg; + document.body.appendChild(el); + setTimeout(function () { + var d = 0.5; + el.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; + el.style.opacity = '0'; + setTimeout(function () { document.body.removeChild(el) }, d * 1000); + }, duration); + }, + +} + +// defines + +const l_body = document.querySelector('.l_body'); + +const sidebar = { + toggle: () => { + if (l_body) { + l_body.classList.add('mobile'); + l_body.classList.toggle("sidebar"); + } + } +} + +const init = { + toc: () => { + stellar.jQuery(() => { + const scrollOffset = 32; + var segs = []; + $("article.md-text :header").each(function (idx, node) { + segs.push(node) + }); + // 定位到激活的目录树(不如pjax体验好) + // const widgets = document.querySelector('.widgets') + // const e1 = document.querySelector('.doc-tree-link.active') + // const offsetTop = e1.getBoundingClientRect().top - widgets.getBoundingClientRect().top - 100 + // if (offsetTop > 0) { + // widgets.scrollBy({top: offsetTop, behavior: 'smooth'}) + // } + // 滚动 + $(document, window).scroll(function (e) { + var scrollTop = $(this).scrollTop(); + var topSeg = null + for (var idx in segs) { + var seg = $(segs[idx]) + if (seg.offset().top > scrollTop + scrollOffset) { + continue + } + if (!topSeg) { + topSeg = seg + } else if (seg.offset().top >= topSeg.offset().top) { + topSeg = seg + } + } + if (topSeg) { + $("#data-toc a.toc-link").removeClass("active") + var link = "#" + topSeg.attr("id") + if (link != '#undefined') { + const highlightItem = $('#data-toc a.toc-link[href="' + encodeURI(link) + '"]') + if (highlightItem.length > 0) { + highlightItem.addClass("active") + const e0 = document.querySelector('.widgets') + const e1 = document.querySelector('#data-toc a.toc-link[href="' + encodeURI(link) + '"]') + const offsetBottom = e1.getBoundingClientRect().bottom - e0.getBoundingClientRect().bottom + 100 + const offsetTop = e1.getBoundingClientRect().top - e0.getBoundingClientRect().top - 64 + if (offsetTop < 0) { + e0.scrollBy(0, offsetTop) + } else if (offsetBottom > 0) { + e0.scrollBy(0, offsetBottom) + } + } + } else { + $('#data-toc a.toc-link:first').addClass("active") + } + } + }) + }) + }, + sidebar: () => { + stellar.jQuery(() => { + $("#data-toc a.toc-link").click(function (e) { + l_body.classList.remove("sidebar"); + }); + }) + }, + relativeDate: (selector) => { + selector.forEach(item => { + const $this = item + const timeVal = $this.getAttribute('datetime') + let relativeValue = util.diffDate(timeVal, true) + if (relativeValue) { + $this.innerText = relativeValue + } + }) + }, + /** + * Tabs tag listener (without twitter bootstrap). + */ + registerTabsTag: function () { + // Binding `nav-tabs` & `tab-content` by real time permalink changing. + document.querySelectorAll('.tabs .nav-tabs .tab').forEach(element => { + element.addEventListener('click', event => { + event.preventDefault(); + // Prevent selected tab to select again. + if (element.classList.contains('active')) return; + // Add & Remove active class on `nav-tabs` & `tab-content`. + [...element.parentNode.children].forEach(target => { + target.classList.toggle('active', target === element); + }); + // https://stackoverflow.com/questions/20306204/using-queryselector-with-ids-that-are-numbers + const tActive = document.getElementById(element.querySelector('a').getAttribute('href').replace('#', '')); + [...tActive.parentNode.children].forEach(target => { + target.classList.toggle('active', target === tActive); + }); + // Trigger event + tActive.dispatchEvent(new Event('tabs:click', { + bubbles: true + })); + }); + }); + + window.dispatchEvent(new Event('tabs:register')); + }, + +} + + +// init +init.toc() +init.sidebar() +init.relativeDate(document.querySelectorAll('#post-meta time')) +init.registerTabsTag() + +// scrollreveal +if (stellar.plugins.scrollreveal) { + stellar.loadScript(stellar.plugins.scrollreveal.js).then(function () { + ScrollReveal().reveal("body .reveal", { + distance: stellar.plugins.scrollreveal.distance, + duration: stellar.plugins.scrollreveal.duration, + interval: stellar.plugins.scrollreveal.interval, + scale: stellar.plugins.scrollreveal.scale, + easing: "ease-out" + }); + }) +} + +// lazyload +if (stellar.plugins.lazyload) { + stellar.loadScript(stellar.plugins.lazyload.js, { defer: true }) + // https://www.npmjs.com/package/vanilla-lazyload + // Set the options globally + // to make LazyLoad self-initialize + window.lazyLoadOptions = { + elements_selector: ".lazy", + }; + // Listen to the initialization event + // and get the instance of LazyLoad + window.addEventListener( + "LazyLoad::Initialized", + function (event) { + window.lazyLoadInstance = event.detail.instance; + }, + false + ); + document.addEventListener('DOMContentLoaded', function () { + window.lazyLoadInstance?.update(); + }); +} + +// stellar js +if (stellar.plugins.stellar) { + for (let key of Object.keys(stellar.plugins.stellar)) { + let js = stellar.plugins.stellar[key]; + if (key == 'linkcard') { + stellar.loadScript(js, { defer: true }).then(function () { + setCardLink(document.querySelectorAll('a.link-card[cardlink]')); + }); + } else { + const els = document.getElementsByClassName('stellar-' + key + '-api'); + if (els != undefined && els.length > 0) { + stellar.jQuery(() => { + stellar.loadScript(js, { defer: true }); + if (key == 'timeline') { + stellar.loadScript(stellar.plugins.marked); + } + }) + } + } + } +} + +// swiper +if (stellar.plugins.swiper) { + const swiper_api = document.getElementById('swiper-api'); + if (swiper_api != undefined) { + stellar.loadCSS(stellar.plugins.swiper.css); + stellar.loadScript(stellar.plugins.swiper.js, { defer: true }).then(function () { + const effect = swiper_api.getAttribute('effect') || ''; + var swiper = new Swiper('.swiper#swiper-api', { + slidesPerView: 'auto', + spaceBetween: 8, + centeredSlides: true, + effect: effect, + loop: true, + pagination: { + el: '.swiper-pagination', + clickable: true, + }, + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + }); + }) + } +} + +// preload +if (stellar.plugins.preload) { + if (stellar.plugins.preload.service == 'instant_page') { + stellar.loadScript(stellar.plugins.preload.instant_page, { + defer: true, + type: 'module', + integrity: 'sha384-OeDn4XE77tdHo8pGtE1apMPmAipjoxUQ++eeJa6EtJCfHlvijigWiJpD7VDPWXV1' + }) + } else if (stellar.plugins.preload.service == 'flying_pages') { + window.FPConfig = { + delay: 0, + ignoreKeywords: [], + maxRPS: 5, + hoverDelay: 25 + }; + stellar.loadScript(stellar.plugins.preload.flying_pages, { defer: true }) + } +} + +// fancybox +if (stellar.plugins.fancybox) { + let selector = 'img[fancybox]:not(.error)'; + if (stellar.plugins.fancybox.selector) { + selector += `, ${stellar.plugins.fancybox.selector}` + } + if (document.querySelectorAll(selector).length !== 0) { + stellar.loadCSS(stellar.plugins.fancybox.css); + stellar.loadScript(stellar.plugins.fancybox.js, { defer: true }).then(function () { + Fancybox.bind(selector, { + groupAll: true, + hideScrollbar: false, + Thumbs: { + autoStart: false, + }, + caption: function (fancybox, carousel, slide) { + return slide.$trigger.alt || null + } + }); + }) + } +} + + +if (stellar.search.service) { + if (stellar.search.service == 'local_search') { + stellar.jQuery(() => { + stellar.loadScript('/js/search/local-search.js', { defer: true }).then(function () { + var $inputArea = $("input#search-input"); + if ($inputArea.length == 0) { + return; + } + var $resultArea = document.querySelector("div#search-result"); + $inputArea.focus(function() { + var path = stellar.search[stellar.search.service]?.path || '/search.json'; + if (!path.startsWith('/')) { + path = '/' + path; + } + const filter = $inputArea.attr('data-filter') || ''; + searchFunc(path, filter, 'search-input', 'search-result'); + }); + $inputArea.keydown(function(e) { + if (e.which == 13) { + e.preventDefault(); + } + }); + var observer = new MutationObserver(function(mutationsList, observer) { + if (mutationsList.length == 1) { + if (mutationsList[0].addedNodes.length) { + $('.search-wrapper').removeClass('noresult'); + } else if (mutationsList[0].removedNodes.length) { + $('.search-wrapper').addClass('noresult'); + } + } + }); + observer.observe($resultArea, { childList: true }); + }); + }) + } +} + + +// heti +if (stellar.plugins.heti) { + stellar.loadCSS(stellar.plugins.heti.css); + stellar.loadScript(stellar.plugins.heti.js, { defer: true }).then(function () { + const heti = new Heti('.heti'); + + // Copied from heti.autoSpacing() without DOMContentLoaded. + // https://github.com/sivan/heti/blob/eadee6a3b748b3b7924a9e7d5b395d4bce479c9a/js/heti-addon.js + // + // We managed to minimize the code modification to ensure .autoSpacing() + // is synced with upstream; therefore, we use `.bind()` to emulate the + // behavior of .autoSpacing() so we can even modify almost no code. + void (function () { + const $$rootList = document.querySelectorAll(this.rootSelector) + + for (let $$root of $$rootList) { + this.spacingElement($$root) + } + }).bind(heti)(); + + stellar.plugins.heti.enable = false; + }); +} diff --git a/js/plugins/fcircle.js b/js/plugins/fcircle.js new file mode 100644 index 0000000..9c3052a --- /dev/null +++ b/js/plugins/fcircle.js @@ -0,0 +1,92 @@ +const FCircle = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layoutDiv: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + FCircle.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const arr = data.article_data || []; + const limit = el.getAttribute('limit'); + arr.forEach((item, i) => { + if (limit && i >= limit) { + return; + } + var cell = '
'; + cell += '
'; + cell += ''; + cell += '

' + item.created + '

'; + cell += '
'; + cell += ''; + cell += item.title; + cell += ''; + cell += '
'; + $(el).append(cell); + }); + }, function() { + $(el).find('.loading-wrap svg').remove(); + $(el).find('.loading-wrap').append(''); + $(el).find('.loading-wrap').addClass('error'); + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-fcircle-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); + if (api == null) { + continue; + } + var cfg = new Object(); + cfg.el = el; + cfg.api = api; + cfg.avatar = 'https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/avatar/round/3442075.svg'; + FCircle.layoutDiv(cfg); + } +}); diff --git a/js/plugins/friends.js b/js/plugins/friends.js new file mode 100644 index 0000000..022ed55 --- /dev/null +++ b/js/plugins/friends.js @@ -0,0 +1,84 @@ +const friendsjs = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layout: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + friendsjs.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const arr = data.content || data; + arr.forEach((item, i) => { + var user = '
'; + user += ''; + user += ''; + user += '
' + (item.title || item.login) + '
'; + user += '
'; + user += '
'; + $(el).find('.group-body').append(user); + }); + }, function() { + $(el).find('.loading-wrap svg').remove(); + $(el).find('.loading-wrap').append(''); + $(el).find('.loading-wrap').addClass('error'); + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-friends-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); + if (api == null) { + continue; + } + var cfg = new Object(); + cfg.el = el; + cfg.api = api; + cfg.class = el.getAttribute('class'); + cfg.avatar = 'https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/avatar/round/3442075.svg'; + friendsjs.layout(cfg); + } +}); diff --git a/js/plugins/ghinfo.js b/js/plugins/ghinfo.js new file mode 100644 index 0000000..2642853 --- /dev/null +++ b/js/plugins/ghinfo.js @@ -0,0 +1,85 @@ +const GitHubInfo = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layout: (cfg) => { + const el = $(cfg.el)[0]; + function fill(data) { + for (let key of Object.keys(data)) { + $(el).find("[type=text]#" + key).text(data[key]); + $(el).find("[type=link]#" + key).attr("href", data[key]); + $(el).find("[type=img]#" + key).attr("src", data[key]); + } + } + GitHubInfo.requestAPI(cfg.api, function(data) { + const idx = el.getAttribute('index'); + if (idx != undefined) { + const arr = data.content || data; + if (arr && arr.length > idx) { + let obj = arr[idx]; + obj['latest-tag-name'] = obj['name']; + fill(arr[idx]); + } + } else { + fill(data); + } + }, function() { + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-ghinfo-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); + if (api == null) { + continue; + } + var cfg = new Object(); + cfg.el = el; + cfg.api = api; + cfg.class = el.getAttribute('class'); + GitHubInfo.layout(cfg); + } +}); diff --git a/js/plugins/linkcard.js b/js/plugins/linkcard.js new file mode 100644 index 0000000..b7be0de --- /dev/null +++ b/js/plugins/linkcard.js @@ -0,0 +1,48 @@ +// 本插件由CardLink定制而成,原项目源码: https://github.com/Lete114/CardLink + +function renderer(el, obj) { + var autofill = []; + const autofillStr = el.getAttribute('autofill'); + if (autofillStr) { + autofill = autofillStr.split(','); + } + if (obj.title && obj.title.length > 0 && autofill.includes('title')) { + el.querySelector('.title').innerHTML = obj.title; + el.title = obj.title; + } + if (obj.icon && obj.icon.length > 0 && autofill.includes('icon')) { + el.querySelector('.img').style = 'background-image: url("' + obj.icon + '");'; + el.querySelector('.img').setAttribute('data-bg', obj.icon); + } + let desc = el.querySelector('.desc'); + if (desc && obj.desc && obj.desc.length > 0 && autofill.includes('desc')) { + desc.innerHTML = obj.desc; + } +} + +/** + * Create card links + * @param {NodeList} nodes A collection of nodes or a collection of arrays, + * if it is an array then the array must always contain node element + */ +function setCardLink(nodes) { + // If the `nodes` do not contain a `forEach` method, then the default `a[cardlink]` is used + nodes = 'forEach' in (nodes || {}) ? nodes : document.querySelectorAll('a[cardlink]') + nodes.forEach((el) => { + // If it is not a tag element then it is not processed + if (el.nodeType !== 1) return + el.removeAttribute('cardlink'); + const link = el.href; + const api = 'https://api.vlts.cc/site_info/v1?url='; + fetch(api + link).then(function(response) { + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + renderer(el, data); + }).catch(function(error) { + console.log(error); + }); + }) +} diff --git a/js/plugins/sites.js b/js/plugins/sites.js new file mode 100644 index 0000000..d57403d --- /dev/null +++ b/js/plugins/sites.js @@ -0,0 +1,88 @@ +const sitesjs = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layout: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + sitesjs.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const arr = data.content; + arr.forEach((item, i) => { + var cell = '
'; + cell += ''; + cell += ''; + cell += '
'; + cell += ''; + cell += '' + item.title + ''; + cell += '' + (item.description || item.url) + ''; + cell += '
'; + cell += '
'; + cell += '
'; + $(el).find('.group-body').append(cell); + }); + }, function() { + $(el).find('.loading-wrap svg').remove(); + $(el).find('.loading-wrap').append(''); + $(el).find('.loading-wrap').addClass('error'); + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-sites-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); + if (api == null) { + continue; + } + var cfg = new Object(); + cfg.class = el.getAttribute('class'); + cfg.el = el; + cfg.api = api; + cfg.avatar = 'https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/link/8f277b4ee0ecd.svg'; + cfg.screenshot = 'https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/cover/76b86c0226ffd.svg'; + sitesjs.layout(cfg); + } +}); diff --git a/js/plugins/timeline.js b/js/plugins/timeline.js new file mode 100644 index 0000000..02c8883 --- /dev/null +++ b/js/plugins/timeline.js @@ -0,0 +1,162 @@ +const StellarTimeline = { + reactions: { + '+1': '👍', + '-1': '👎', + 'laugh': '😀', + 'hooray': '🎉', + 'confused': '😕', + 'heart': '❤️', + 'rocket': '🚀', + 'eyes': '👀' + }, + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layoutDiv: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + StellarTimeline.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const query = new URL(cfg.api).search; + const arr = data.content || data; + var users = []; + const filter = el.getAttribute('user'); + if (filter && filter.length > 0) { + users = filter.split(","); + } + var hide = []; + const hideStr = el.getAttribute('hide'); + if (hideStr && hideStr.length > 0) { + hide = hideStr.split(","); + } + arr.forEach((item, i) => { + if (item.user && item.user.login && users.length > 0) { + if (!users.includes(item.user.login)) { + return; + } + } + var cell = '
'; + cell += '
'; + if (!users.length && item.user && !hide.includes('user')) { + cell += ''; + } + let date = new Date(item.created_at); + cell += '

' + date.toString().replace(/\sGMT([^.]*)/i, "") + '

'; + cell += '
'; + cell += '
'; + if (!hide.includes('title')) { + cell += '

'; + cell += ''; + cell += item.title || item.name || item.tag_name; + cell += ''; + cell += '

'; + } + + cell += marked.parse(item.body || ''); + if (!hide.includes('footer')) { + cell += ''; + } + + cell += '
'; + cell += '
'; + $(el).append(cell); + }); + }, function() { + $(el).find('.loading-wrap svg').remove(); + $(el).find('.loading-wrap').append(''); + $(el).find('.loading-wrap').addClass('error'); + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-timeline-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); + if (api == null) { + continue; + } + var obj = new Object(); + obj.el = el; + obj.api = api; + StellarTimeline.layoutDiv(obj); + } +}); diff --git a/js/plugins/weibo.js b/js/plugins/weibo.js new file mode 100644 index 0000000..11da225 --- /dev/null +++ b/js/plugins/weibo.js @@ -0,0 +1,116 @@ +const weibojs = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layoutDiv: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + weibojs.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const arr = data.tweets || []; + const limit = el.getAttribute('limit'); + arr.forEach((item, i) => { + if (limit && i >= limit) { + return; + } + var cell = '
'; + cell += '
'; + cell += ''; + cell += '

' + item.created_at + '

'; + cell += '
'; + cell += '
'; + cell += ''; + cell += item.content; + cell += ''; + // cell += '
'; + // 每条微博的右下角 转发 评论 点赞 + cell += ''; + // 右下角结束 + $(el).append(cell); + }); + }, function() { + $(el).find('.loading-wrap svg').remove(); + $(el).find('.loading-wrap').append(''); + $(el).find('.loading-wrap').addClass('error'); + }); + }, +} + +$(function () { + const els = document.getElementsByClassName('stellar-weibo-api'); + for (var i = 0; i < els.length; i++) { + const el = els[i]; + const api = el.getAttribute('api'); // 这个API可以返回微博的json文件 + if (api == null) { + continue; + } + var cfg = new Object(); + cfg.el = el; + cfg.api = api; + cfg.avatar = 'https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/avatar/round/3442075.svg'; + weibojs.layoutDiv(cfg); + } +}); diff --git a/js/search/local-search.js b/js/search/local-search.js new file mode 100644 index 0000000..694d8e2 --- /dev/null +++ b/js/search/local-search.js @@ -0,0 +1,135 @@ +// A local search script with the help of +// [hexo-generator-search](https://github.com/PaicHyperionDev/hexo-generator-search) +// Copyright (C) 2015 +// Joseph Pan +// Shuhao Mao +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +// 02110-1301 USA +// +// Modified by: +// Pieter Robberechts + +/*exported searchFunc*/ +var searchFunc = function(path, filter, searchId, contentId) { + + function getAllCombinations(keywords) { + var i, j, result = []; + + for (i = 0; i < keywords.length; i++) { + for (j = i + 1; j < keywords.length + 1; j++) { + result.push(keywords.slice(i, j).join(" ")); + } + } + return result; + } + + $.ajax({ + url: path, + dataType: "json", + success: function(jsonResponse) { + var datas = jsonResponse; + var $input = document.getElementById(searchId); + if (!$input) { return; } + var $resultContent = document.getElementById(contentId); + + $input.addEventListener("input", function(){ + var resultList = []; + var keywords = getAllCombinations(this.value.trim().toLowerCase().split(" ")) + .sort(function(a,b) { return b.split(" ").length - a.split(" ").length; }); + $resultContent.innerHTML = ""; + if (this.value.trim().length <= 0) { + return; + } + // perform local searching + datas.forEach(function(data) { + if (!data.content?.trim().length) { return } + var matches = 0; + if (filter && !data.path.includes(filter)) { return } + var dataTitle = data.title?.trim() || 'Untitled'; + var dataTitleLowerCase = dataTitle.toLowerCase(); + var dataContent = data.content; + var dataContentLowerCase = dataContent.toLowerCase(); + var dataUrl = data.path; + var indexTitle = -1; + var indexContent = -1; + var firstOccur = -1; + // only match artiles with not empty contents + if (dataContent !== "") { + keywords.forEach(function(keyword) { + indexTitle = dataTitleLowerCase.indexOf(keyword); + indexContent = dataContentLowerCase.indexOf(keyword); + + if( indexTitle >= 0 || indexContent >= 0 ){ + matches += 1; + if (indexContent < 0) { + indexContent = 0; + } + if (firstOccur < 0) { + firstOccur = indexContent; + } + } + }); + } + // show search results + if (matches > 0) { + var searchResult = {}; + searchResult.rank = matches; + searchResult.str = "
  • "+ dataTitle +""; + if (firstOccur >= 0) { + // cut out 100 characters + var start = firstOccur - 20; + var end = firstOccur + 80; + + if(start < 0){ + start = 0; + } + + if(start == 0){ + end = 100; + } + + if(end > dataContent.length){ + end = dataContent.length; + } + + var matchContent = dataContent.substring(start, end); + + // highlight all keywords + var regS = new RegExp(keywords.join("|"), "gi"); + matchContent = matchContent.replace(regS, function(keyword) { + return ""+keyword+""; + }); + + searchResult.str += "

    " + matchContent +"...

    "; + } + searchResult.str += "
  • "; + resultList.push(searchResult); + } + }); + if (resultList.length) { + resultList.sort(function(a, b) { + return b.rank - a.rank; + }); + var result ="
      "; + for (var i = 0; i < resultList.length; i++) { + result += resultList[i].str; + } + result += "
    "; + $resultContent.innerHTML = result; + } + }); + } + }); +}; diff --git a/placeholder b/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/submit_urls.txt b/submit_urls.txt new file mode 100644 index 0000000..2aa864f --- /dev/null +++ b/submit_urls.txt @@ -0,0 +1,6 @@ +https://wutonk.xyz/2023/03/29/Vuepress%20config.ts%E6%A0%B9%E7%9B%AE%E5%BD%95%E9%85%8D%E7%BD%AE%E5%92%8C%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3/ +https://wutonk.xyz/2023/03/29/Vuepress%E4%BD%BF%E7%94%A8%E9%87%8D%E5%AE%9A%E5%90%91%E8%A7%A3%E5%86%B3%E9%BB%98%E8%AE%A4%E8%AF%AD%E8%A8%80%E9%97%AE%E9%A2%98/ +https://wutonk.xyz/2023/03/29/vscgiterror001/ +https://wutonk.xyz/2023/03/29/powerlevel10k%20%E5%8E%BB%E9%99%A4%E7%94%A8%E6%88%B7%E5%90%8D%E6%88%96%E4%B8%BB%E6%9C%BA%E5%90%8D%E6%98%BE%E7%A4%BA/ +https://wutonk.xyz/2022/05/26/links/ +https://wutonk.xyz/2023/03/29/m1armdos001/ \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..c3676a9 --- /dev/null +++ b/tags/index.html @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + 标签 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + + + + + + + + + +
    + +
    + + + +

    本站由 @anonymity 使用 Stellar 主题创建。
    本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

    +
    + + + +
    +
    +
    + + + + + + + + + + + + + + + + +
    + + diff --git "a/tags/\347\276\216\345\214\226/index.html" "b/tags/\347\276\216\345\214\226/index.html" new file mode 100644 index 0000000..c6cde34 --- /dev/null +++ "b/tags/\347\276\216\345\214\226/index.html" @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + + + + + + 标签:美化 - WUTONK的小站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + +
    + +