diff --git "a/2024/10/06/\346\211\213\346\234\272\347\273\231\346\211\213\346\234\272\345\205\215root\345\210\267\346\234\272\350\257\246\347\273\206\346\225\231\347\250\213/index.html" "b/2024/10/06/\346\211\213\346\234\272\347\273\231\346\211\213\346\234\272\345\205\215root\345\210\267\346\234\272\350\257\246\347\273\206\346\225\231\347\250\213/index.html" new file mode 100644 index 00000000..c710c04b --- /dev/null +++ "b/2024/10/06/\346\211\213\346\234\272\347\273\231\346\211\213\346\234\272\345\205\215root\345\210\267\346\234\272\350\257\246\347\273\206\346\225\231\347\250\213/index.html" @@ -0,0 +1,627 @@ + + + + + + + + + + + + + + + + + + + + 手机给手机免root刷机详细教程 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

文件下载

123云盘
提取码:FNoL

+

App准备

    +
  • Termux
  • +
  • Termux:api
  • +
  • 甲壳虫ADB助手开心版(可选)
  • +
+

环境设置

termux-change-repo
+

选择国内的镜像源

+
pkg update
pkg upgrade
pkg install android-tools,termux-api,libusb,clang
+

开始刷机

将要刷的手机进去Fastboot模式,用OTG连接运行Termux的手机,然后输入以下命令

+
termux-api start
termux-usb -l
+

此时如果手机正确识别了Fastboot设备,终端的输出会像这样:

+

"/dev/bus/usb/002/003"

+

如果出现

+
{}
+

就是没正确连接或没被识别
你应该输入:

+
termux-usb -r -e $SHELL -E "/dev/bus/usb/002/003"
+

这时会出现弹窗问:是否允许Termux访问XXX?确认后运行Fastboot应该就能检测到设备了
接着就可以像在电脑上一样刷机了

+

一键刷机脚本

这里我提供一个修改过的脚本(原作 酷安@是天天吖),经测试在鸿蒙4.2的P40上可以正常给Redmi Note 11T Pro刷澎湃1.0.4
如果你用其他软件(比如甲壳虫ADB助手)运行这个脚本,记得把fastboot全文替换为你的fastboot程序的绝对路径
请将完整的线刷镜像放入images文件夹,把images文件夹与flash.sh放在同一个目录(默认/sdcard/flash)
这个脚本默认清除cust分区,刷入boot分区的镜像文件名为boot.img,你可以替换为

+

常见问题

①输入

+
termux-usb -l
+

后卡住
→ 检查自己有没有安装Termux:api这个APP

+

②识别设备很慢或者刷了几个分区后卡住
→ 可能是线的兼容性有问题,我用小米的原装线刷会出现这个问题,用华为原装线就没问题

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/06/\347\273\231Trekker\347\232\204\351\223\203\345\243\260\346\216\250\350\215\220/index.html" "b/2024/10/06/\347\273\231Trekker\347\232\204\351\223\203\345\243\260\346\216\250\350\215\220/index.html" new file mode 100644 index 00000000..32659aae --- /dev/null +++ "b/2024/10/06/\347\273\231Trekker\347\232\204\351\223\203\345\243\260\346\216\250\350\215\220/index.html" @@ -0,0 +1,610 @@ + + + + + + + + + + + + + + + + + + + + 给Trekker的铃声推荐 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

前言

用久了 看剧集时以为手机响了

+

来源

大部分来自TrekCore的收集,有些是截的剧集原声
如果是发布的专辑之类是在歌曲宝找的

+

电话铃声

最logical且不难听的选择是TNG呼叫提示音但是这个重复了不太行(就像VOY中Equinox的red alert刚听感觉还不错)
我用的是ENT的主题曲Where My Heart Will Take Me,比原曲Faith Of The Heart短且更有感觉

+

通知铃声

当属VOY和ENT中的舰内呼叫声(应该是一样的),这个似乎音质更好更连贯。当然你要更特别的话可以用TOS的1或者2

+

闹钟铃声

提神醒脑当属TOS / TNG的Red Alert
温柔一点可以用Inner Light
用LD的主题曲会让有经验的你不得不在开头几秒就爬起来关闹钟因为后面音量巨大

+

拨号音效

理论上可以解包电话这个apk替换音频文件还没试
已经在HyperOS上测试成功,用的是TNG终端的音效,这个网页上听着只有一声,实际是两声,我截了一下,然后把通讯录与拨号这个App里的钢琴音效(其实就是所有aac)替换掉,再在设置里面把拨号音效设为钢琴,就可以了。成品(提取码UB5y)修改自HyperOS通讯录与拨号15.6.0.2 (6002),不一定适用于所有机型,需要核心破解安装,未签名。

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/12/2024\345\271\2649\346\234\210\346\200\273\347\273\223/index.html" "b/2024/10/12/2024\345\271\2649\346\234\210\346\200\273\347\273\223/index.html" new file mode 100644 index 00000000..d6a0865e --- /dev/null +++ "b/2024/10/12/2024\345\271\2649\346\234\210\346\200\273\347\273\223/index.html" @@ -0,0 +1,619 @@ + + + + + + + + + + + + + + + + + + + + 2024年9月总结 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

+

高三的第一个月结束了,貌似应该写点总结。

+

月考

考前

感觉明明有计划,但是就是不想复习。举个例子,本来古诗文肯定是要背的,但是又想着先做其他的或者感觉状态不好背得很慢,最后连文言文都没背完,还好这次考得简单。生化复习刷新底线,连过一遍都没过完。

+

考中

以前觉得生化看不看一遍差不多可能是因为自己对问题没有感知。这一次很明显感觉到有些题考的是教材上的,但是是盲点因而在别人秒选的题会纠结,这也说明题题纠结并不一定是生物的本身特点,而是它 注重教材 导致的。
还有就是生物错题确实很有必要,不能敷衍,比如2T的细胞交通枢纽,在创新设计上错过一次,是高尔基体而不是内质网,这一次就秒排了。

+

考后

对答案和查成绩的冲动相比上次有所下降但还是比较强烈,需要改善

+

感受

是,考试能暴露出很多问题,但是当你发现这些问题并 立志 修补它们,不久就会发现没有时间。每天做完作业都剩不了多少时间,化学自愿的每周一整套高考试卷更是雪上加霜,上上周的北京卷我到现在还没做。

+

暴露出的问题

时间管理

不多解释

+

审题

有这时候读题比较跳跃

+

高一问题

物生化都在复习高一,高一留下的问题现在不得不解决

+

想做的改进

减少对考试的反感

既然逃不脱,只有自适应了

+

优化时间

在寝室想办法减少干扰,划出更多时间学习
食堂晚点去吃,反正都是□

+

重启

每天背单词,复习古诗文

+

少乱想多做事

埋头做事时空想得最少

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/12/\344\271\237\350\256\270\346\233\264\347\256\200\345\215\225\347\232\204Vaultwarden\351\203\250\347\275\262\346\225\231\347\250\213/index.html" "b/2024/10/12/\344\271\237\350\256\270\346\233\264\347\256\200\345\215\225\347\232\204Vaultwarden\351\203\250\347\275\262\346\225\231\347\250\213/index.html" new file mode 100644 index 00000000..e14c16ec --- /dev/null +++ "b/2024/10/12/\344\271\237\350\256\270\346\233\264\347\256\200\345\215\225\347\232\204Vaultwarden\351\203\250\347\275\262\346\225\231\347\250\213/index.html" @@ -0,0 +1,645 @@ + + + + + + + + + + + + + + + + + + + + 也许更简单的Vaultwarden部署教程 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

可以选择的方式

运行Vaultwarden有两种方式:直接运行二进制和docker运行,显然后者更方便,前者也需要先pull docker镜像再从里面提取。
配置有好几种方式:docker命令、docker compose、环境文件(.env)、管理面板(config.json),其中docker命令一长串改起来很麻烦,env文件包含了所有配置项,而docker compose可以只写与默认配置不同的项,所以我使用docker compose部署。

+

编写docker-compose.yml

这是最重要的部分,编写好后就可以直接部署了
如果你不需要邮件功能,也没有很多人共用一个Vaultwarden导致sqlite3的性能不够用,下面这个精简版足矣

+
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- 1701:80
volumes:
- ./vw-data:/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
DOMAIN: "你的域名"
WEBSOCKET_ENABLED: "true"
: "true"
WEB_VAULT_ENABLED: "false"
INVITATIONS_ALLOWED: "false"
TIME_ZONE: "Asia/Shanghai"
LOG_FILE: "/data/vaultwarden.log"
+

在注册完要用的账号后建议把SIGNUPS_ALLOWED和INVITATIONS_ALLOWED改为false更加安全
接下来说说可以添加的配置

+

邮件功能

Vaultwarden的邮箱功能可以用于双重验证,异常登录通知,账号激活。你需要有一个支持SMTP的邮箱用于发送这些邮件。Outlook可以参考官方指南,Gmail必须先启用双重验证然后添加一个应用密码才能使用SMTP。我用的阿里云新加坡轻量服务器,Outlook连不上,Google账号又只有一个,所以选择用自己的域名借助第三方服务搭建一个邮箱,这也是我比较推荐的方式。Vaultwarden官方wiki推荐的SMTP中sendgrid我审核没过,Brevo倒是搭建成功了但是发出的邮件一直被加入queue ,在仪表盘上queue又显示0,发ticket客服也不知道为什么。serv00自带一个开箱即用的邮箱但是就是因为免费又开箱即用所以被滥用了,已经被spamhaus标记了,发给Outlook直接拒收。。。绑定自己的域名倒是可以发出去,但是mailtester的分数也不太好看,而且不知道什么时候跑路(感觉要被薅秃了)。最后我选择了飞书国际版larksuite,教程可以参考这篇,搭好后需要在docker-compose.yml中添加以下内容

+
SMTP_HOST: "SMTP服务器地址,larksuite的是这个:smtp.larksuite.com"
SMTP_PORT: "465"
SMTP_SECURITY: "force_tls"
SMTP_FROM: "你SMTP的邮箱地址"
SMTP_USERNAME: "同上"
SMTP_PASSWORD: "账户密码"
SMTP_AUTH_MECHANISM: "Login"
+

对了,你可以在Mail-tester查看你的邮箱得分,分数越高越不可能被标记为垃圾邮件

+

启用Android/iOS的消息推送

vaultwarden兼容bitwarden的push,具体来说就是谷歌FCM和苹果APN。配置方法也不复杂,参考官方wiki的教程

+

使用MySQL作为后端

MySQL比sqlite3(vaultwarden自带且默认使用)性能更好,这里我们也运行在docker里面,在原来的yml下面加入以下内容:

+
mysql:
container_name: mysql
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=自己设置一个
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./mysql/data:/var/lib/mysql
- .mysql/logs:/var/log/mysql
- ./mysql/conf:/etc/mysql/conf.d
+

当然你也可以使用mysql8.2但是我服务器确实跑不动。
然后在vaultwarden的environment 那一段加入这一行:

+
DATABASE_URL: "mysql://root:你刚刚设置的MySQL数据库密码@mysql/vaultwarden"
+

其中DATABASE_URL的格式是

+
DATABASE_URL=mysql://[[user]:[password]@]host[:port][/database]
+

这里我用容器名代替对应容器ip地址,同一个docker-compose.yml可以不用加network。

+

部署

这里搬运docker官方的安装命令(使用apt)

+
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
+

接着进去docker-compose所在的目录,输入

+
docker compose up -d
+

部署你的项目。
如果有yml有更改只需再执行一次相同的命令,是不是很优雅?
注意⚠️这里有个坑,docker和compose之间是空格不是-,我之前部署时网上教程清一色的用docker-compose,但是实测部署后容器名前面会多一串乱码,而且更改yml后不能用上面的方法更新容器,只能删了重新创建。后来才知道好像docker-compose已经被弃用了,这个功能变为内置于docker命令中。
查看某个容器的日志可以用

+
docker logs 容器名
+

如果docker报错是YAML语法问题,可以把yml的内容复制到YAML Lint查错,比直接看报错要好找一点。
如果容器镜像有更新,只需

+
docker compose pull
docker compose up -d --remove-orphans
+

如果要删除yml中所有容器,只需

+
docker compose down
+

现在你就应该可以通过http://服务器IP:1701 访问vaultwarden了。

+

MySQL中的工作

如果你使用mysql,事还没完,还需要执行下面的命令允许ROOT用户远程访问(默认只允许localhost访问)并给vaultwarden创建一个数据库

+
docker exec -it mysql /bin/bash
mysql -u root -p你的密码
use mysql;
GRANT ALL ON *.* TO 'root'@'%';
flush privileges;
CREATE DATABASE vaultwarden;
flush privileges;
+

注意①-p和密码之间没有空格,有空格就会在执行命令后让你输入密码
②在mysql中执行的每行命令结尾都有分号

+

使用反向代理

这样更加安全。
网上教程无非nginx、caddy、cloudflare tunnel 三种,其中nginx性能比caddy好,caddy可以自动生成https证书,cloudflare tunnel配置最简单,这里使用cloudflare tunnel
注意必须要有自己的域名
首先注册一个cloudflare账号并添加一个你的域名,然后打开https://one.dash.cloudflared.com 选择Free计划,选择network中的tunnel,添加一个新的tunnel,然后随便选择一个平台和架构,复制下方出现的部署命令,命令中ey开头的就是这个tunnel的token。然后在public hostname中添加一个,Service type选择http地址填vaultwarden,点击保存
然后在yml结尾添加

+
cloudflared:
container_name: cloudflared
image: cloudflare/cloudflared:latest
restart: unless-stopped
command: tunnel run
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
- TUNNEL_TOKEN=你的token
+

用这个方法的话可以把yml中vaultwarden的port那一段删了
如果你在非docker中部署cloudflared,需要把vaultwarden 的ports改为
127.0.0.1:1701:80
然后public hostname的地址填127.0.0.1:1701
这里有个坑,如果你此前已经在非docker部署了cloudflared,在docker再部署cloudflared就会无限重启

+

备份

建议添加系统定时任务,自动备份

+
crontab -e
+

格式是

+
分 时 天 月 年 要运行的命令
+

比如每年每月每天凌晨4点自动备份MySQL数据库

+
00 04 * * * docker exec mysql bash -c "exec mysqldump -u root -p你的数据库密码 --all-databases > /root/backup/mysql-$(date '+\%Y\%m\%d-\%H\%M').sql
+

如果用自带的sqlite3,命令可以用

+
sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"
+

备份附件、send、rsa_key*这些文件直接用7z压缩就行了
如果要备份到云盘可以用rclone挂载云盘到本地

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/27/xaga\347\261\273\345\216\237\347\224\237\350\257\204\346\265\213/index.html" "b/2024/10/27/xaga\347\261\273\345\216\237\347\224\237\350\257\204\346\265\213/index.html" new file mode 100644 index 00000000..4c223884 --- /dev/null +++ "b/2024/10/27/xaga\347\261\273\345\216\237\347\224\237\350\257\204\346\265\213/index.html" @@ -0,0 +1,615 @@ + + + + + + + + + + + + + + + + + + + + xaga类原生指南 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

前言: xaga的类原生丰富度有今天,离不开各位大佬的无私奉献,在这里一并表示感谢🙏

+

A12

通病

+
    +
  1. 几乎所有ROM为了解决GMS登录和同步问题都用的build vendor,所以是SELinux宽容状态,除了Kaleiscope0815和Crdroid。
  2. +
  3. 除了Kaleisocpe0815,均有Camera API V1内存泄露问题,因为切换到了build vendor。
    Kaleiscope 推荐
    0815是SELinux Enforce,此后切换为build vendor为Permissive。
    0815版需要刷入模块修复自动亮度
    自动亮度均不太灵敏
    QS只有A11样式
    Crdroid 推荐
    SELinux Enforce
    图标丑,自定义超丰富
  4. +
+

A13

通病
1.除了2023年末和2024年初发布/更新的几个ROM,均有硬解卡屏问题,即在使用硬件解码播放视频时,暂停几秒继续播放,画面就会冻结为暂停点往后一点点时间的那一帧不动,拖动进度条可解。临时解决办法是用软解播放视频,比如可以删除与硬解相关的系统文件,使用旧版b站选择解码方式为软解。
2.GPU负载: 除了202311以后发布/更新的ROM外均有此问题。表现为用scene等软件查看GPU负载,要么为0要么100%。这对GPU低负载场景的功耗影响很小,但使得GPU峰值性能下降,影响GPU高负载软件/游戏的使用。缓解办法:使用gpu-fas调度。解决办法: GSI请打开phh treble setting中的mtk ged kpi support,编译包修复此问题需要修改设备树所以请直接更换上文提到已修复的包。
3.Camera API V1内存泄露: 所有A13包都有。使用此api的APP在拍照后会卡住,查看进程发现Camera HAL进程发生内存泄露,占用内存不断上升,直至内存满后死机。如果要使用这些APP,建议先用相机拍照,然后在需要拍照时从相册选择照片
4.锁30Hz: 已知QQ和YC调度管理这两个APP会锁30Hz,前者是部分界面,后者是全部。可以在设置里per-app refresh rate把它们设置为144Hz解决,据说还可以用dfps或者scene的刷新率管理解决。

+

Interstellar UI 最推荐
除了上述bug3外无bug。202312后修复硬解卡屏。
基于Rising OS,自定义和功能超级丰富,也很美观。说难听点IUI是Kang OS,但是对用户来说不是件坏事,可以“既要又要”。
Crdroid 推荐
硬解卡屏,还有bug3
仅9.2版本滑动状态栏调节亮度。9.7以后版本(不包括9.7)修复了GPU负载。9.2版本蓝牙音频需要刷模块修复
图标丑,自定义丰富。
Arrow OS 一般
一次性包,硬解卡屏,GPU正常。webview较旧,非谷歌版webview,更新较麻烦(与lineage的签名不同)
系统简洁,值得称赞的是日历图库来自simplemobiletools,更美观功能更多。浏览器是duckduckgo,怎么说呢,比los的jelly好但也不咋样,浏览器下载器一个。
Derpfest 一般
自定义相比crd要少,仅gapps版(pri&chris尝试过搞vanilla版,结果有恶性bug)。别的没有什么特色,据说开发者是德国的有过 辱花言论。
Afterlife 一般
编译者销声匿迹一段时间了。最大特点就是QS,缺点也是。比例一直没调好,还会有bug。
只有GAPPS。

+

A14

A15


AOSP15 不能日用
Vanilla上滑最近任务稳定触发提示Quickstep已停止运行,其他没什么问题。GMS版没刷过。

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/27/\344\271\237\350\256\270\346\234\200\347\256\200\345\215\225\347\232\204\345\233\276\345\272\212\346\226\271\346\241\210/index.html" "b/2024/10/27/\344\271\237\350\256\270\346\234\200\347\256\200\345\215\225\347\232\204\345\233\276\345\272\212\346\226\271\346\241\210/index.html" new file mode 100644 index 00000000..1006de78 --- /dev/null +++ "b/2024/10/27/\344\271\237\350\256\270\346\234\200\347\256\200\345\215\225\347\232\204\345\233\276\345\272\212\346\226\271\346\241\210/index.html" @@ -0,0 +1,610 @@ + + + + + + + + + + + + + + + + + + + + 也许最简单的图床方案 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

一篇 水💧 文~
在Alist上传图片,然后选择复制链接,在Markdown中直接把这个链接作为图片URL就行了。而且Alist有很完善的文件管理功能

+

优点

对于无法提取直链的网盘也能用

+

缺点

    +
  1. 可能会因为多地使用而风控? (使用代理下载可解,但是可能加载更慢)
  2. +
  3. 加载速度取决于你的Alist访问速度
  4. +
+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/10/27/\345\260\217\347\261\263\346\211\213\347\216\2579NFC\347\256\200\350\257\204/index.html" "b/2024/10/27/\345\260\217\347\261\263\346\211\213\347\216\2579NFC\347\256\200\350\257\204/index.html" new file mode 100644 index 00000000..e052b3fe --- /dev/null +++ "b/2024/10/27/\345\260\217\347\261\263\346\211\213\347\216\2579NFC\347\256\200\350\257\204/index.html" @@ -0,0 +1,622 @@ + + + + + + + + + + + + + + + + + + + + 小米手环9NFC简评 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

+

闲话

这一代手环确实卖得好,除了黑色其他颜色官方渠道都查不到,第三方店铺都得加价,首发买的成了最便宜的😄小米商城配送前一天晚上还显示黑色有货,第二天早上就是全部到货通知了。我是在小米之家自提的,店员说是最后一个了,提货后小米商城也确实显示这家店缺货了。
我是从米兔学习手表4Pro换过来的

+

颜色


蓝色看着和我之前电话手表太像了,虽然好看,但是我想跟之前的手表有点区别。

本来想尝试一下银色,但是都得加价而且不支持无理由退货,又不经脏,而且! 你光凭商品图不知道实物戴着究竟合不合心意,有试错成本,但黑色肯定至少不会丑,有”低保”,还经脏。而且黑色可以原价买。(黑色的小米商城配送前一天晚上还有货,纠结到第二天早上就没货了)

+

续航

上了6天学,开启全天压力检测和睡眠高精度检测,用了50%的电

+

应用生态

官方可以说没有生态,这个滴答清单还必须打开滴答清单手机App才能用⬇️

所以还得第三方开发者出手。米坛上有大佬做的计算器(好像官方应用市场本来有,被下了?)、词典电子书阅读器移植百度地图

+

+

健康监测

睡眠监测的算法有点呆,就算我醒了没有,只要我不起床,仍然算在睡眠时间里面
计步看个乐子,还没起床就有76步
我做一组开合跳心率给我说166,而且还是无氧运动?

+

时间

实测2天没连手机有5秒左右误差

+

NFC

我们学校用的是蓉卡通,可以用PCR532破解
酷安上有人说之前模拟不了0扇区,热修复了
建议在模拟介质卡时使用手机读取,手环要读半天可能还有问题。搞好之后学校里面能用校园卡的地方都能刷,非常完美,这下再也不用担心校园卡掉了~(补办要50元)

+

表盘

我只用官方默认表盘,没什么感知,不过表盘市场里付费的有点多

+

互联

冲浪板的通知同步到手环上后会反复通知,猜测是因为网速在变,一直震动个不停。
待办没连手机也可以用。

+

总结

还不错

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/11/09/2024\345\271\26410\346\234\210\346\200\273\347\273\223/index.html" "b/2024/11/09/2024\345\271\26410\346\234\210\346\200\273\347\273\223/index.html" new file mode 100644 index 00000000..cecc920d --- /dev/null +++ "b/2024/11/09/2024\345\271\26410\346\234\210\346\200\273\347\273\223/index.html" @@ -0,0 +1,642 @@ + + + + + + + + + + + + + + + + + + + + 2024年10月总结 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

+

写在前面

很快啊,已经开学两个多月了。想想刚开学时的炎热难眠,转眼已是寒风刺骨了。

+

总述

“这个月是个正常月~”
相比开学第一月的迷茫和无所适从有所改善,但仍有以下不足,总之so-called改革成效甚微,不过有值得欣慰的优势学科复健,以及赋分制的满满恶意

+

平时

watch时间减少。作业完成度提高。
上课专注度还是不足,没听到的仍然很多,目标是老师讲的所有自己不会的问题都保证100%听到 (是不是该约法三章了?)
遗留未解决问题很多,虽然国庆三天确实💩,但是你不能因为浮躁就问题扔在一边当它不存在啊!!!
平时还是会不经意间对某样周末觉得索然无味的东西产生持久性fascination/affection。

+

考前

这一次复习情况显著改善,至少没有出现长时间心智冻结❄️,也没有那么浮躁。
但是仍需要反思:

+
    +
  1. 复习效率够高吗?以这个效率真的能cover所有内容吗
  2. +
  3. 抗干扰能力差,虽然耽误时间比上次少,但是仍然需要提高!
  4. +
  5. 复习方法对吗?”看完一遍”真的留痕了吗?
  6. +
  7. 遗留问题是否有效解决?为什么堆到这个时候?
  8. +
  9. 复习内容的先后顺序不对,小学生都懂的先抓最重要的,结果你直接来个先过一遍物质结构与性质😮‍💨
  10. +
+

考中

问题显著且严重。

+
    +
  1. 一直存在的,吃着碗里想着锅里,在做上一个空就去看下一个,结果化学very第一个空就填个
    分液漏
    +都不填就跑了!😳😳😳你在干什么
  2. +
  3. 为了避免前面的题花太长时间,结果前面过的太快,导致化学16题前两个空都错
  4. +
+

考后

    +
  1. 对答案情况有所改善,基本上没有影响心情,除了英语忍不住去搜了原文(不过跟原文比我是对的🙂)
  2. +
  3. 考完当天晚上有点浮躁,第二天早上一直在刷新多分,要改
  4. +
+

学科分析

    +
  • 语文 😮‍💨不知道为什么选择题能错5个,作文才46,下滑了!
  • +
  • 数学 改卷子赶进度也不能这么赶啊!18T没算出来怎么回事?
  • +
  • 英语 阅读题应该只错一个!lane你引申一下不行吗?不过至少不让我那么怀疑英语已经不是优势学科,看来还是难题我有优势(也有可能运气好?但是七选五、完形和听力都好,怎么解释?)
  • +
  • 物理 都会,没时间算完。脑子不清醒,等式两边都正的你把系数填个负的🤣还有庞老师提醒的冲量!!!支持力的冲量啊!
  • +
  • 化学 如果不是太赶,至少班上前3。这次选择题不错,但是后面做得也慢!腾那么多时间,做得那么赶,结果有机题8分没做?
  • +
  • 生物 不知道,💩
  • +
+

后记

最近也幻想过几次高考成功,但是感觉这个金色的梦,在褪色。我已不再相信有可能,也许再过几十天,想到它只会付以苦笑。也许从来就没有可能。
高三,就像在汹涌洪水中逆流而上,你能站稳脚抑或前行已经很慢,想要调整heading更是难上加难。每天像个陀螺转个不停,晚上要抓紧入睡,没有太多时间停下来,或者一想就发散了,集中不到一个问题上。
周末,就像面前摆的一杯饮料,好久不能喝,然后你也顾不上留点了,直接猛吸一口。
20241117补充老师与家长沟通内容

+
    +
  1. cjy说要练成套的高考题。选择题没问题,要注重实操和大题
  2. +
  3. cjy一定要摒弃跟老师之间的不信任,分数为王
  4. +
  5. zys说数学没问题,主要是高一学OI导致三角函数有问题
  6. +
+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/11/10/\346\234\211\345\210\200\347\204\211/index.html" "b/2024/11/10/\346\234\211\345\210\200\347\204\211/index.html" new file mode 100644 index 00000000..d0013c9d --- /dev/null +++ "b/2024/11/10/\346\234\211\345\210\200\347\204\211/index.html" @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + + + 有刀焉 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

⚠️⚠️⚠️宇宙安全声明: 这周刚考了半期,心情不好,对兽圈了解不多,以下内容纯属吃饱了没事干,不要上纲上线
🔪🔪🔪
之前有同学在午间分享时讲过有兽焉,当时看着觉得就是个可爱的国漫
昨晚想着换下口味,反正这部剧应该不需要带脑子看,结果!
前面几集还好,都是日常,只是太短了。没想到在b站搜的时候蹦出来一个四不像死亡真相,外加体检那一集最后花蕊鸟和四不像的交谈,才发现不对头。。。
nm啊!我想找个不带脑子的榨菜看结果这东西全是刀,还好及时刹车,然后把剧透看了(不是,这玩意还没完结?!)
又是冰山一角的可爱简单,建立在悲剧上的喜剧
昨晚1点睡2点还没睡着😡该死
我当初就不该走出ST圈,我就说嘛,入新圈有成本,会耗很长时间,又会天天想着,影响很大。还是ST好,至少对舰长CP无感,Spock或者Kirk死了我也只是对于这个角色以后不会出现感到伤心。
完了完了,48集结局天禄在树下回忆,四不像叫他回去吃饭的场面已经记住了,不知道会不会是定时炸刀🔪🔪🔪
这下只能多补几集ST洗洗毒了😡,希望别让我心情雪上加霜

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/11/14/\351\200\200\347\203\247\357\274\201/index.html" "b/2024/11/14/\351\200\200\347\203\247\357\274\201/index.html" new file mode 100644 index 00000000..a61b73fa --- /dev/null +++ "b/2024/11/14/\351\200\200\347\203\247\357\274\201/index.html" @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + + + + + + 退烧! - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

没想到啊,又是一场时间短、剧烈变化的闹剧,不过好在结果是退烧了。
首先是周一晚上,我想清楚了:我感到魂不守舍和那些人畜无害的日常篇没有关系(当时我还没觉得皮皮多好看),只与主线篇有关
接着觉得皮皮越看越可爱,做成壁纸。
接着周二在盗版网站上看了辟邪和瓦猫两集,在此之前还曾想下载m3u8但由于via浏览器适配问题和性能、内存不足未成功。
周三达到巅峰,一直在线看漫画(貌似每天更一话),从头看了一些,解除心锁看了,还有最新的美美变身。
今天早上起来突然就感觉退烧了,然后想通了几点:

+
    +
  1. 支持我看下去的就只有福瑞,而其中90%来自可爱的皮皮。
  2. +
  3. 它所谓的爆笑一是老生常谈,二很低俗,三并不怎么好笑
  4. +
  5. 至于让人感到刀/感慨的主线剧情,说白了就是个神仙下凡+现代都市+沉睡千年的恩怨情仇。
  6. +
  7. 把福瑞换成人,我绝对看不下去
  8. +
  9. 如果看着经常被刀,肯定影响学习
    所以,再见了,有兽焉。也许大学可以回头来补已经完结的漫画和动画,但确实不适合高三入坑。
  10. +
+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/11/24/\346\210\221\347\232\204\351\200\211\346\213\251\357\274\214\346\210\221\347\232\204\346\242\246\346\203\263/index.html" "b/2024/11/24/\346\210\221\347\232\204\351\200\211\346\213\251\357\274\214\346\210\221\347\232\204\346\242\246\346\203\263/index.html" new file mode 100644 index 00000000..39a82def --- /dev/null +++ "b/2024/11/24/\346\210\221\347\232\204\351\200\211\346\213\251\357\274\214\346\210\221\347\232\204\346\242\246\346\203\263/index.html" @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + 我的选择,我的梦想 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+

化用雷军演讲的标题,是觉得这个选择对塑造现在的我非常重要。
至于调换顺序,是因为当时的我一心觉得能进好的高中就不错了,是阶段的最终目标(就像高三觉得能进好大学就行,以后路不管,反正进更好的大学以后路肯定更光明) 所以选择在前。
这篇文章可能基于模糊的记忆和有色滤镜,毕竟已经在A校快3年了

+
+

在初中毕业后,我有两个学校可以去:

+
    +
  • B学校
  • +
  • A学校
    (提示一下我是四川的)。当时拿不定主意,就两个学校的夏令营都去了。
    当时我除了报了信息竞赛还报了生物,其中有个空我记得问的是RNAi的中文名,后来网上查知道是RNA干扰。这个术语直到高三才在一道信息题里出现。生物卷子最后一道题是几何题,好像是给了几个边长还是比例让你求一条边(纯平面几何),我费了九牛二虎之力做出来了,但至今不知道生物竞赛里面会不会用平几。
  • +
+

B学校的夏令营

+

先说个跟夏令营无关的,当时入学校面试时签了个协议,如果入学第一次月考没考进前200还是300就要交几万的人才流失费(好像叫这个名字),当时给我十万分的震惊和惊吓😱

+
+

详细记录肯定没时间,我就讲一些印象较深的事
B的夏令营先开始,一入营就交了3千💰。
B校的饮水机和浴室都要刷卡。就算抛开收钱不说(我爸说听说一学期就十块),这也是相当麻烦的,相当于你在学校里的生活跟卡深度绑定,卡掉了的话借别人的 一天不知道得借来用多少次。而且饮水机那个刷卡不很灵敏。
第一天没有什么任务。晚上听校长的演讲,听着听着不知不觉就睡着了,真的是不知不觉,我发现自己睡着了还是突然点头醒过来,睡着前也没觉得自己有多困。本以为会是个比较平淡的开始,结果回到寝室才发现钱包不见了😱,身份证也在里面!当时我脑子有点短路,一直沿着从礼堂回寝室的路线反复找,结果花了大量时间还是没找到。回到寝室,洗澡时没研究明白怎么刷卡,把当天新穿的衣服裤子包括制服打湿。
当我还在苦苦思索该怎么收拾这一地鸡毛时,熄灯了😱我匆忙完成洗漱,上床,却心中久久不能平静。第一天这么多事,再加上第1.5次晚上住校(上次是在E学校的初三冬令营,而且只有三天),感觉真的…非常emo。也许有听讲时睡觉的原因,当晚我难以入睡,坐起来想了很久才睡着。
现在回想,当晚的emo也有当时我还玻璃心的缘故,毕竟初中小学都是在一个熟悉的环境,而且人际关系都是 怎么说呢~就像做过的题,用过的模型,也许难,但都可以套,都predictable。而高中不一样。
第二天我冷静下来才想起因为全国统一标准的音乐厅逆天自动收起的坐垫,可能钱包掉在音乐厅了。结果还真是。

+

期间有一节游泳课,我没带装备,我妈点的美团外卖,但我愣是找不到放在哪个门,最后好像走了一段高三路,跨越半个校园才找到。我还记得我耽误的那节课讲的是二次函数,而且我掌握得比同桌好。
游泳馆一定记得带拖鞋,我当时赤足走疼痛不已,脚底红了一片。

+
    +
  • 我的同桌让我记忆犹新的是他当时在空余时间看一本不是必修一的化学教材上的一个表算好几个物质的什么参数,现在想来大概是根据Ksp算沉淀浓度。
    最后一天我们去外面研学,参观了一些红色纪念碑和博物馆,中午吃的很一般。印象最深的是在纪念碑处,总指挥突然勃然大怒揪住一个学生,说的内容大概是:“你还是B校的学生…..(后面忘了,大抵是斥责那个男生作为B校学生竟做成这样的事,当然我也不知道是什么事)” 接着好像有老师来调解。无论这个学生做了什么(我相信即使我做这样的事也不会预料到这样的结果),这一小插曲都给我以极大震撼。
  • +
+

A学校的夏令营

+
+

2022年6月19日20点,当我在高新图书馆看完书,正在旁边的德克士吃饭,我接到了我妈的电话
“告诉你一个好消息…”
“考上了?”
“对”
“哪边?”
“你猜”
“A校?”
她笑着说:“猜对了!”

+
+

这次夏令营最大的槽点莫过于因为我们校区在装修,不得不两校区一起上夏令营,中午因为寝室不够只能在教室趴在桌子上睡。
还有就是密集的考试,两期夏令营考了十多次。
别的没什么印象深刻,对了晚上回寝室可以拿手机

+

OI!


在初中我是完全不不知道有信息竞赛这个东西,第一次了解应该是在初中毕业到B校宣讲之间,记不清了,也可能宣讲时才第一次了解。
在B校有一天晚上是各大学科竞赛的宣讲,我听了信息竞赛的宣讲,内容忘完了,只记得讲的老师不是主教练,主教练带队到哪去了。还有就是PPT结尾写着仅限有搜索基础及以上的。我当时完全不知道搜索这个竞赛内容,竟然想当然地以为是搜索引擎那个搜索 (其实当时如果能细想肯定不会这么觉得,不过还好没细想) 整场宣讲结束同学们回寝室时,我在楼下截住了那位老师,胆怯地询问像我这种只会C语言基础的能不能参加竞赛。他回答说可以到时候找个老师给我补一下C++,还问了我中考成绩,加了QQ(我带了手表,可以用手表QQ) 当晚他在QQ上让我第二天去他办公室拿本书先看一下。第二天,他拿了一本
《信息学奥赛一本通》给我,让我看几个部分的内容,其中我记得有广度优先搜索。我当然不怎么能看懂,何况没过两天就是竞赛选拔老师。我记得比较清楚的是上面有一道链表的题,我一直想不通,同桌(他也报了信息竞赛,最后只被化学选上了) 也不懂。那几天我一直在用各种时间看书(比如阅读课),虽然最后考试没用上。
考试是在晚上,机房开了空调,记得坐久了有点冷。来考的不超过10个,好像有一个女生。
在此之前我只用过vc6,那天是第一次用DEVC++,不知道怎么按到insert键了,最后找老师才解决。
本来我事先是看到了C++开头怎么写的,但是考试时还是按C语言写的

+
#include <stdio.h>

int main()
{
return 0;
}
+

其中别的 题我忘了,有一道题老师给我说了一下思路,反正是有规律,具体什么我忘了。还有一道题,0和1中一个代表水池一个代表陆地,连在一起的水池算一个,让你求有多少个水池。解法应该是广度优先搜索 (就算我事先看懂了估计也不知道该那个时候用) ,而我用的for循环枚举。别人一个个写完都走了,但我坚持要做到时间截止。老师在一旁安慰说目前没有人全对(对了题目上说用lemon测)。最后老师说看我的代码估计也过不了。又说了几句就回去了 (当时考完很晚了)
夏令营结束那天下午,我急着赶高铁,没到大厅去看入围名单,我家长发了我一张别人拍的上面生物有我,信息没有。
我QQ给老师说我对这个结果不意外,他说的大概意思是
记得那天回家后去吃了新疆羊肉串,味道不错。

+

在A校没有单独的竞赛选拔,一期考试过关的进去二期(竞赛预备),二期经过考试然后填一个什么表,我记得我犹豫到第二天早上才交,写的是倾向于生物、信息竞赛。那天下午在阶梯教室看《大学》,但我在B校已经看过一次了,没什么兴趣,于是去超市买了一包豆腐干,回来发现信息选上的已经在一个教室里面教练开讲了。后来知道正好在我去买东西的时候教练让人来找我们。讲了很久,内容忘了,反正有一个自我介绍的阶段。接着教练带我们去看机房,路上有个老师跟教练说通知了因为疫情要回家😮‍💨我们到机房晃了一圈就回去了。然后是结营仪式,我依稀记得与一般无聊的仪式有些许不同,但不同之处忘了。接着大家都回家,因为事发突然我家长一时也赶不过来,只能先再住一晚。当晚在寝室玩手机,突发奇想用语音输入录了一段关于初中折腾班级电脑的内容。同寝还有另一个信竞的同学也是家长来不了。
第二天早上依然是等家长,我记得在寝室的值班室边充边刷酷安,其中有一篇长文是关于WiFi的历史的。
回去后就用腾讯会议上网课。
那段时间学的很基础,只在openjudge上做题,每晚写总结发教练邮箱。虽然基础但是要全部AC花的时间也挺长。那时几乎没有压力,直到有一天教练给几个有基础的同学单独讲递归,让别的同学下播做什么任务。我留着听了,其中有道题是树老师爬楼梯(斐波拉契数列),尚且可以理解,但是下午就不大听得懂了。感到了一点打击。
我不记得是什么时候开始听课摸鱼玩游戏的,不过尚且可以handle内容。
最后一天是在车上听的,因为我家长跟别人约了一起出去自驾游,不知道为什么又不能自己一家开车去,坐的别人的车。当天中午我就在餐馆写了一会代码。但是后来的旅途中用电脑就没那么专注了。
到返校上竞赛为止,我也没完成多少教练的任务。
返校当天下午在机房自己学了一会,没写成什么,第一感觉是键盘键程比较高。然后寝管老师让我们住校的排队一起去做核酸,等了很久才走,在核酸亭又发现排了老长的队伍,还好协调后我们先做。然后家长带我去吃了火锅就去拜访一个亲戚,好像年轻时是中科院计算机相关的教授还是什么。然后又去超市买东西,我很不耐烦。最后终于到了校门口,父母跟我说再见,这也是我触动最深的一次分别。然后回到寝室,有个室友也是宜宾的不过初中在绵阳东辰。看室友玩游戏看了很久,然后洗澡 (期间居然没一人先我洗澡)。
在校那几天晚上,我经常上床后刷酷安夜话,记得清楚的是一篇溃疡治疗评测。
接着就开始在A校上上竞赛(不过还是在夏令营那个校区) 。第一天教练_亲切_地问了我做了多少作业,我虚报了。

+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git "a/2024/11/30/\350\247\243\345\206\263Alist\347\247\273\345\212\250\344\272\221\347\233\230\345\210\260\346\234\237\345\244\261\346\225\210\351\227\256\351\242\230/index.html" "b/2024/11/30/\350\247\243\345\206\263Alist\347\247\273\345\212\250\344\272\221\347\233\230\345\210\260\346\234\237\345\244\261\346\225\210\351\227\256\351\242\230/index.html" new file mode 100644 index 00000000..bcf34e87 --- /dev/null +++ "b/2024/11/30/\350\247\243\345\206\263Alist\347\247\273\345\212\250\344\272\221\347\233\230\345\210\260\346\234\237\345\244\261\346\225\210\351\227\256\351\242\230/index.html" @@ -0,0 +1,620 @@ + + + + + + + + + + + + + + + + + + + + 解决Alist移动云盘到期失效问题 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

原理

抓取移动云盘APP的authorization,因为手机APP的登录有效日期比web端长得多。

+

教程

    +
  1. 手机安装Reqable,并安装证书
  2. +
  3. 开始抓包,同时打开移动云盘,切换到”文件”
  4. +
  5. 停止抓包,在记录里寻找authorization
  6. +
+
    +
  • 如果你是旧个人云,在请求头里有authorization
  • +
  • 如果是新个人云,在cookie里面的cookieTokenKey里
  • +
  • 如果要抓取家庭云,需要在抓包时打开app中对应家庭云,然后在”原始”里找Cloud ID(不太好找,懒得放图了)
  • +
  • 如果要抓文件夹ID,抓包时要以尽可能少的步骤打开对应文件夹然后停止抓包,然后在”原始”里面找CatalogID。
    其他内容参考官方教程


  • +
+ + +
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/404.html b/404.html new file mode 100644 index 00000000..1246077a --- /dev/null +++ b/404.html @@ -0,0 +1,582 @@ + + + + + + + + + + + + + + + + + + + + Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+

404

+

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

+

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

+

+ 返回主页 +
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/about/index.html b/about/index.html new file mode 100644 index 00000000..2e78d4eb --- /dev/null +++ b/about/index.html @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + about - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

一个高三的忠实Trekkie🖖

+
    +
  • Trekkie一枚,但是我们学校知道ST的不超过5个。最喜欢ENT,其次DS9,电影最喜欢8
  • +
  • 喜欢搞机 (入坑Star Trek后有所退烧) 在Hyper OS和类原生之间反复横跳(现在类原生有小窗了应该能钉住)
  • +
  • 喜欢科幻,入坑ST后很少看其他作品
  • +
  • 学过一段时间OI,因为学习和家长压力退役
  • +
  • Ballex(²)玩家,1官图通关,吊死花园还没找到时间(但是看重制版的性能要求,估计HP ZHAN66 Pro 15G4玩起来吃力)
  • +
+
+ + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/2024/10/index.html b/archives/2024/10/index.html new file mode 100644 index 00000000..5c393fee --- /dev/null +++ b/archives/2024/10/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/2024/11/index.html b/archives/2024/11/index.html new file mode 100644 index 00000000..db1c8f28 --- /dev/null +++ b/archives/2024/11/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/2024/index.html b/archives/2024/index.html new file mode 100644 index 00000000..f1993a24 --- /dev/null +++ b/archives/2024/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/2024/page/2/index.html b/archives/2024/page/2/index.html new file mode 100644 index 00000000..e0b00acd --- /dev/null +++ b/archives/2024/page/2/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 00000000..da7fe82f --- /dev/null +++ b/archives/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/archives/page/2/index.html b/archives/page/2/index.html new file mode 100644 index 00000000..95f95cca --- /dev/null +++ b/archives/page/2/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + 归档 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/categories/Guide/index.html b/categories/Guide/index.html new file mode 100644 index 00000000..bd907fdd --- /dev/null +++ b/categories/Guide/index.html @@ -0,0 +1,579 @@ + + + + + + + + + + + + + + + + + + + + 分类:Guide - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+

解决Alist移动云盘到期失效问题

原理抓取移动云盘APP的authorization,因为手机APP的登录有效日期比web端长得多。 +教程 +手机安装Reqable,并安装证书 +开始抓包,同时打开移动云盘,切换到”文件” +停止抓包,在记录里寻找authorization + + +如果你是旧...

Guide
+
+

xaga类原生指南

前言: xaga的类原生丰富度有今天,离不开各位大佬的无私奉献,在这里一并表示感谢🙏 +A12通病 + +几乎所有ROM为了解决GMS登录和同步问题都用的build vendor,所以是SELinux宽容状态,除了Kaleiscope0815和Crdr...

Guide
+
+

也许最简单的图床方案

一篇 水💧 文~在Alist上传图片,然后选择复制链接,在Markdown中直接把这个链接作为图片URL就行了。而且Alist有很完善的文件管理功能 +优点对于无法提取直链的网盘也能用 +缺点 +可能会因为多地使用而风控? (使用代理下载可解,但是可能加...

Guide
+
+

也许更简单的Vaultwarden部署教程

可以选择的方式运行Vaultwarden有两种方式:直接运行二进制和docker运行,显然后者更方便,前者也需要先pull docker镜像再从里面提取。配置有好几种方式:docker命令、docker compose、环境文件(.env)、管理面板...

Guide
+
+

给Trekker的铃声推荐

前言用久了 看剧集时以为手机响了 +来源大部分来自TrekCore的收集,有些是截的剧集原声如果是发布的专辑之类是在歌曲宝找的 +电话铃声最logical且不难听的选择是TNG呼叫提示音但是这个重复了不太行(就像VOY中Equinox的red alert...

Guide
+
+

手机给手机免root刷机详细教程

文件下载123云盘提取码:FNoL +App准备 +Termux +Termux:api +甲壳虫ADB助手开心版(可选) + +环境设置termux-change-repo +选择国内的镜像源 +pkg updatepkg upgradepkg install a...

Guide
+
+ + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/categories/Log/index.html b/categories/Log/index.html new file mode 100644 index 00000000..9bdd94a6 --- /dev/null +++ b/categories/Log/index.html @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + 分类:Log - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+

我的选择,我的梦想

+化用雷军演讲的标题,是觉得这个选择对塑造现在的我非常重要。至于调换顺序,是因为当时的我一心觉得能进好的高中就不错了,是阶段的最终目标(就像高三觉得能进好大学就行,以后路不管,反正进更好的大学以后路肯定更光明) 所以选择在前。这篇文章可能基于模糊的记...

Log
+
+

退烧!

没想到啊,又是一场时间短、剧烈变化的闹剧,不过好在结果是退烧了。首先是周一晚上,我想清楚了:我感到魂不守舍和那些人畜无害的日常篇没有关系(当时我还没觉得皮皮多好看),只与主线篇有关接着觉得皮皮越看越可爱,做成壁纸。接着周二在盗版网站上看了辟邪和瓦猫两...

Log
+
+

有刀焉

⚠️⚠️⚠️宇宙安全声明: 这周刚考了半期,心情不好,对兽圈了解不多,以下内容纯属吃饱了没事干,不要上纲上线🔪🔪🔪之前有同学在午间分享时讲过有兽焉,当时看着觉得就是个可爱的国漫昨晚想着换下口味,反正这部剧应该不需要带脑子看,结果!前面几集还好,...

Log
+
+

2024年10月总结

+写在前面很快啊,已经开学两个多月了。想想刚开学时的炎热难眠,转眼已是寒风刺骨了。 +总述“这个月是个正常月~”相比开学第一月的迷茫和无所适从有所改善,但仍有以下不足,总之so-called改革成效甚微,不过有值得欣慰的优势学科复健,以及赋分制的满满恶...

Log
+
+

2024年9月总结

+高三的第一个月结束了,貌似应该写点总结。 +月考考前感觉明明有计划,但是就是不想复习。举个例子,本来古诗文肯定是要背的,但是又想着先做其他的或者感觉状态不好背得很慢,最后连文言文都没背完,还好这次考得简单。生化复习刷新底线,连过一遍都没过完。 +考中以...

Log
+
+ + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/categories/Review/index.html b/categories/Review/index.html new file mode 100644 index 00000000..e2ab3c61 --- /dev/null +++ b/categories/Review/index.html @@ -0,0 +1,547 @@ + + + + + + + + + + + + + + + + + + + + 分类:Review - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+

小米手环9NFC简评

+闲话这一代手环确实卖得好,除了黑色其他颜色官方渠道都查不到,第三方店铺都得加价,首发买的成了最便宜的😄小米商城配送前一天晚上还显示黑色有货,第二天早上就是全部到货通知了。我是在小米之家自提的,店员说是最后一个了,提货后小米商城也确实显示这家店缺货...

Review
+
+ + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 00000000..c62c3a26 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + 分类 - Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/css/main.css b/css/main.css new file mode 100644 index 00000000..7c0e6d5c --- /dev/null +++ b/css/main.css @@ -0,0 +1,6995 @@ +:root { + --width-main: 720px; + --fsp: 17px; + --fsh2: calc(var(--fsp) + 11px); + --fsh3: calc(var(--fsp) + 7px); + --fsh4: calc(var(--fsp) + 4px); + --side-content-width: 224px; + --gap-margin: 16px; + --gap-padding: 16px; + --gap-p: calc(17px + 4px); + --gap-p-compact: calc(17px * 0.75); +} +@media screen and (min-width: 2048px) { + :root { + --width-main: 780px; + } +} +@media screen and (min-width: 2560px) { + :root { + --width-main: 860px; + } +} +@media screen and (max-width: 768px) { + :root { + --side-content-width: 188px; + } +} +@media screen and (max-width: 667px) { + :root { + --side-content-width: 224px; + } +} +:root { + --gap-max: calc(var(--gap-margin) + var(--gap-padding)); +} +.l_body.story { + --gap-p: 2rem; +} +.l_body.story div.tag-plugin, +.l_body.story p>img { + margin-top: 2.4rem; + margin-bottom: 2.4rem; +} +:root { + --theme-link: #2094f3; +} +:root[data-theme="light"] { + --site-bg: #f9fafb; + --card: #fff; + --block: #f1f2f3; + --block-border: #e3e5e8; + --block-hover: #e9eaec; + --theme-link-opa: rgba(32,148,243,0.2); + --leftbar-bg: #e3e5e8; + --alpha20: rgba(255,255,255,0.2); + --alpha50: rgba(255,255,255,0.5); + --alpha60: rgba(255,255,255,0.6); + --alpha75: rgba(255,255,255,0.75); + --alpha100: #fff; + --text: #000; + --text-p1: #333; + --text-p2: #4d4d4d; + --text-p3: #808080; + --text-p4: #999; + --text-meta: #ccc; + --text-code: #14181f; +} +:root[data-theme="dark"] { + --site-bg: #1c1e21; + --card: #373d43; + --block: #26292c; + --block-border: #383d42; + --block-hover: #2f3337; + --theme-link-opa: rgba(32,148,243,0.4); + --leftbar-bg: #383d42; + --alpha20: rgba(0,0,0,0.2); + --alpha50: rgba(0,0,0,0.5); + --alpha60: rgba(0,0,0,0.6); + --alpha75: rgba(0,0,0,0.75); + --alpha100: #000; + --text: #fff; + --text-p1: #ccc; + --text-p2: #b3b3b3; + --text-p3: #858585; + --text-p4: #707070; + --text-meta: #4d4d4d; + --text-code: #fff; +} +@media screen and (max-width: 667px) { + :root[data-theme="dark"] { + --site-bg: #000; + } +} +:root:not([data-theme]) { + --site-bg: #f9fafb; + --card: #fff; + --block: #f1f2f3; + --block-border: #e3e5e8; + --block-hover: #e9eaec; + --theme-link-opa: rgba(32,148,243,0.2); + --leftbar-bg: #e3e5e8; + --alpha20: rgba(255,255,255,0.2); + --alpha50: rgba(255,255,255,0.5); + --alpha60: rgba(255,255,255,0.6); + --alpha75: rgba(255,255,255,0.75); + --alpha100: #fff; + --text: #000; + --text-p1: #333; + --text-p2: #4d4d4d; + --text-p3: #808080; + --text-p4: #999; + --text-meta: #ccc; + --text-code: #14181f; +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) { + --site-bg: #1c1e21; + --card: #373d43; + --block: #26292c; + --block-border: #383d42; + --block-hover: #2f3337; + --theme-link-opa: rgba(32,148,243,0.4); + --leftbar-bg: #383d42; + --alpha20: rgba(0,0,0,0.2); + --alpha50: rgba(0,0,0,0.5); + --alpha60: rgba(0,0,0,0.6); + --alpha75: rgba(0,0,0,0.75); + --alpha100: #000; + --text: #fff; + --text-p1: #ccc; + --text-p2: #b3b3b3; + --text-p3: #858585; + --text-p4: #707070; + --text-meta: #4d4d4d; + --text-code: #fff; + } +} +@media screen and (prefers-color-scheme: dark) and (max-width: 667px) { + :root:not([data-theme]) { + --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: calc(var(--fsp) - 1px); +} +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; + --fsp: calc(17px - 2px); + font-size: var(--fsp); +} +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 12px 12px 4px; + color: var(--text-p2); +} +:root { + --blur-px: 12px; + --blur-bg: var(--alpha50); +} +.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 { + position: relative; +} +:root[data-theme="dark"] a.button.start.gradient { + transition: 0.38s ease-out; + z-index: 0; + background: linear-gradient(to right, #4c95fa, #38c9fa, #24f9c4, #24f9c4, #38c9fa, #4c95fa); + background-size: 1000%; + color: #fff; + text-shadow: 0 0 1px rgba(0,0,0,0.12); + animation: glow 60s linear infinite; +} +:root[data-theme="dark"] 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(12px); + opacity: 0.5; + transition: 0.38s ease-out; +} +:root[data-theme="dark"] a.button.start.gradient:hover:after { + filter: blur(36px); + 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%; + } +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) a.button.start.gradient { + transition: 0.38s ease-out; + z-index: 0; + background: linear-gradient(to right, #4c95fa, #38c9fa, #24f9c4, #24f9c4, #38c9fa, #4c95fa); + background-size: 1000%; + color: #fff; + text-shadow: 0 0 1px rgba(0,0,0,0.12); + animation: glow 60s linear infinite; + } + :root:not([data-theme]) 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(12px); + opacity: 0.5; + transition: 0.38s ease-out; + } + :root:not([data-theme]) a.button.start.gradient:hover:after { + filter: blur(36px); + 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.8125rem; + scrollbar-width: none; + color: var(--text-p2); +} +.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; + grid-column-end: span 3; + right: 0; + bottom: 2rem; + float: right; + z-index: 10; + display: flex; + flex-direction: column; + border-radius: 8px; + margin-left: auto; + 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 screen and (min-width: 667px) { + .float-panel { + margin-right: 2rem; + } +} +:root[data-theme="dark"] .float-panel { + --blur-bg: rgba(0,0,0,0.4); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .float-panel { + --blur-bg: rgba(0,0,0,0.4); + } +} +.float-panel button { + cursor: pointer; + color: var(--text); + background: none; + padding: 8px; + line-height: 0; + font-size: 28px; + margin: 0; + display: flex; +} +.float-panel button >* { + width: auto; + height: 28px; +} +.float-panel button >* path#sep { + transition: transform 0.2s ease-out; + -moz-transition: transform 0.2s ease-out; + -webkit-transition: transform 0.2s ease-out; + -o-transition: transform 0.2s ease-out; +} +.l_body[leftbar] .float-panel, +.l_body[rightbar] .float-panel { + box-shadow: 0 0 4px -1px #1cd0fd, 0 0 16px -4px #1cd0fd, 0 0 32px -12px #1cd0fd, 0 0 128px -32px #1cd0fd; +} +.l_body[leftbar] .float-panel button.leftbar-toggle { + background: var(--alpha100); +} +.l_body[leftbar] .float-panel button.leftbar-toggle { + color: #1cd0fd; + border-color: var(--block-border); +} +.l_body[leftbar] .float-panel button.leftbar-toggle svg g { + fill: currentColor; + fill-opacity: 0.3; +} +.l_body[leftbar] .float-panel button.leftbar-toggle svg g path#sep { + transform: translateX(2px); +} +.l_body .l_right:empty+.float-panel button.rightbar-toggle { + display: none !important; +} +.l_body[rightbar] .float-panel button.rightbar-toggle { + background: var(--alpha100); +} +.l_body[rightbar] .float-panel button.rightbar-toggle { + color: #1cd0fd; + border-color: var(--block-border); +} +.l_body[rightbar] .float-panel button.rightbar-toggle svg g { + fill: currentColor; + fill-opacity: 0.3; +} +.l_body[rightbar] .float-panel button.rightbar-toggle svg g path#sep { + transform: translateX(2px); +} +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: 4px; + border-bottom-right-radius: 4px; + 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: 8px; +} +.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; + overflow: hidden; +} +.md-text .gist .gist-data { + border-bottom: 1px solid var(--block-border); +} +.md-text .gist .highlight { + display: inherit; + border: none; + border-radius: 0; + background: var(--block); + margin: 0; + padding: 1em 0; +} +.md-text .gist .blob-code-inner { + color: var(--text-p1); + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; +} +.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"; +} +.md-text .highlight.matlab .code:before { + content: "MATLAB"; +} +.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-padding-top: 8px; +} +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.8125rem; + font-weight: 700; + color: var(--text-p3); +} +.flex { + display: flex; + align-items: center; +} +.flex.column { + flex-direction: column; +} +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: '加载失败,请稍后重试。'; +} +audio, +video { + max-width: 100%; +} +video { + z-index: 1; +} +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; +} +svg.active-icon { + color: #1cd0fd; +} +h1, +.h1 { + font-size: var(--fsh2); + font-weight: 700; +} +@media screen and (max-width: 500px) { + h1, + .h1 { + font-size: var(--fsh2); + } +} +h2, +.h2 { + font-size: var(--fsh2); + margin-top: 1.5em; +} +h3, +.h3 { + font-size: var(--fsh3); +} +h4, +.h4 { + font-size: var(--fsh4); +} +h5 { + font-size: calc(var(--fsp) + 1px); +} +h6 { + font-size: calc(var(--fsp) + 0px); +} +.fs15 { + --fsp: 0.9375rem; + font-size: var(--fsp); +} +.fs14 { + --fsp: 0.875rem; + font-size: var(--fsp); +} +.footnote { + --fsp: 0.8125rem; + font-size: var(--fsp); +} +.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 2rem; + line-height: 1.5; + color: var(--text-p1); + font-weight: 500; + text-align: center; + border-radius: 8px; + background: var(--card); + position: fixed; + left: 50%; + top: 32px; + transform: translateX(-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), 0 12px 16px -4px rgba(0,0,0,0.2); + visibility: hidden; +} +div.toast.show { + visibility: visible; + -webkit-animation: fadein 0.5s, fadeout 0.5s 2s; + animation: fadein 0.5s, fadeout 0.5s 2s; + animation-fill-mode: forwards; +} +@-webkit-keyframes fadein { + from { + top: -64px; + opacity: 0; + } + to { + top: 32px; + opacity: 1; + } +} +@-webkit-keyframes fadeout { + from { + top: 32px; + opacity: 1; + } + to { + top: -64px; + opacity: 0; + } +} +@-moz-keyframes fadein { + from { + top: -64px; + opacity: 0; + } + to { + top: 32px; + opacity: 1; + } +} +@-webkit-keyframes fadein { + from { + top: -64px; + opacity: 0; + } + to { + top: 32px; + opacity: 1; + } +} +@-o-keyframes fadein { + from { + top: -64px; + opacity: 0; + } + to { + top: 32px; + opacity: 1; + } +} +@keyframes fadein { + from { + top: -64px; + opacity: 0; + } + to { + top: 32px; + opacity: 1; + } +} +@-moz-keyframes fadeout { + from { + top: 32px; + opacity: 1; + } + to { + top: -64px; + opacity: 0; + } +} +@-webkit-keyframes fadeout { + from { + top: 32px; + opacity: 1; + } + to { + top: -64px; + opacity: 0; + } +} +@-o-keyframes fadeout { + from { + top: 32px; + opacity: 1; + } + to { + top: -64px; + opacity: 0; + } +} +@keyframes fadeout { + from { + top: 32px; + opacity: 1; + } + to { + top: -64px; + opacity: 0; + } +} +.article.banner { + --text-banner: var(--text); + background: var(--block); + margin: 0; + height: unset; +} +.article.banner .bg+.content { + min-height: 224px; + --text-banner: #fff; + --button-hover-bg: rgba(255,255,255,0.25); +} +.article.banner .content .top { + align-items: flex-start; + margin: 1rem calc(1rem - 4px); +} +.article.banner .content .title { + font-size: calc(17px + 9px); + color: var(--text-banner); +} +.article.banner .content h1 { + line-height: 1.2; + margin: 0.25rem 0; +} +.l_body .article.banner .content .bottom.only-title .title { + padding: 0.75rem 0; +} +.l_body[text-indent] .article.banner .content .bottom.only-title { + justify-content: center; +} +.article.banner .bg+.content { + 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; + --blur-bg: rgba(0,0,0,0); + --blur-px: 0px; + --blur-sat: 100%; + background: var(--blur-bg); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .article.banner .bg+.content { + background: var(--blur-bg); + backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(var(--blur-sat)) blur(var(--blur-px)); + } +} +.article.banner:hover .bg+.content { + --blur-bg: rgba(0,0,0,0.1); + --blur-px: 20px; + --blur-sat: 150%; +} +.article.banner { + --button-hover-bg: rgba(0,0,0,0.05); +} +:root[data-theme="dark"] .article.banner { + --button-hover-bg: rgba(255,255,255,0.15); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .article.banner { + --button-hover-bg: rgba(255,255,255,0.15); + } +} +.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: calc(17px + 2px); +} +.md-text .article-footer .body { + --fsp: calc(17px - 2px); +} +.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: 2px 0; + line-height: 1.2; + word-break: break-all; +} +.md-text .article-footer .body .post-title p { + --fsp: calc(17px - 2px); +} +.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: 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; + height: 0; + margin: 0 auto; + transform: scale(0.01); +} +.md-text .article-footer .qrcode img { + object-fit: contain; +} +.md-text .article-footer .qrcode.display { + margin: 2rem auto 1rem; + height: 128px !important; + opacity: 1 !important; + transform: scale(1); +} +.bread-nav { + font-weight: 500; + display: flex; + justify-content: space-between; + color: var(--text-banner); +} +.bread-nav .flex-row { + display: flex; + align-items: baseline; + flex-direction: row; +} +.bread-nav a { + color: var(--text-banner); + padding: 4px; + border-radius: 2px; +} +.bread-nav a:hover { + background: var(--button-hover-bg); +} +.bread-nav span { + color: var(--text-banner); +} +.bread-nav span.sep { + opacity: 0.5; + margin: 0; +} +.bread-nav span.text { + padding: 4px; +} +.bread-nav div#post-meta span.sep:before { + content: '|'; +} +.bread-nav div#post-meta span.updated { + visibility: hidden; +} +.bread-nav:hover div#post-meta span.updated { + visibility: visible; +} +.bread-nav .ghrepo { + font-size: 0.8125rem; + display: flex; + flex-direction: column; + align-items: flex-start; + border-left: 1px solid var(--text-meta); + padding-left: 8px; +} +.bread-nav .ghrepo a { + display: flex; + align-items: center; + color: var(--text-banner); +} +.bread-nav .ghrepo a svg { + margin-right: 4px; +} +.bread-nav .ghrepo a.bold { + font-weight: 600; + color: var(--text-banner); +} +.bread-nav .ghrepo a span { + margin-left: 4px; +} +.bread-nav .ghrepo a:hover { + opacity: 1; +} +.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; + font-size: var(--fsp); +} +.l_cover .cover-wrap .cover-title { + font-weight: 700; + font-size: 1.5rem; + margin: 1rem 0; + line-height: 1.2; + color: var(--text); +} +.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.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; + min-width: 96px; + min-height: 96px; + 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-p2); +} +.page-footer a { + color: var(--text-p2); + border-radius: 4px; + transition: background 0.2s ease-out; +} +.page-footer a:hover { + color: var(--text); + background: var(--block-hover); +} +.page-footer .sitemap { + margin: 0.5rem -4px 2rem; + display: grid; + scrollbar-width: none; + grid-gap: 1rem 1rem; + grid-auto-flow: column dense; + grid-template-columns: repeat(4, 1fr); + 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; + padding: 4px; +} +.page-footer .sitemap .sitemap-group >span { + font-weight: 500; + color: var(--text-p1); + margin: 4px 0; +} +.page-footer .text p { + margin: 4px 0; + line-height: 1.5; +} +.page-footer .text a:not([class]) { + font-weight: 500; +} +.navbar { + padding: 0 1rem; + z-index: 8; + top: 0; + background: var(--site-bg); + position: sticky; + position: -webkit-sticky; + margin-bottom: 1px; + margin-top: -8px; +} +.navbar:after { + content: ''; + height: 2px; + border-radius: 2px; + position: absolute; + bottom: 0; + left: 1rem; + right: 1rem; + background: var(--block-hover); +} +.navbar nav { + display: flex; + overflow: scroll visible; + font-size: 0.875rem; +} +.navbar nav::-webkit-scrollbar { + height: 0; + width: 0; +} +.navbar nav::-webkit-scrollbar-track-piece { + background: transparent; +} +.navbar nav::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.navbar nav::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.navbar nav >p { + margin: 0; +} +.navbar nav a { + padding: 2px 0.75rem; + margin: 10px 0.25rem 8px 0.25rem; + line-height: 2; + color: var(--text-p3); + border-radius: 4px; + font-weight: 500; + white-space: nowrap; + position: relative; + z-index: 1; +} +.navbar nav a:after { + height: 2px; + position: absolute; + bottom: -8px; + left: 0.75rem; + right: 0.75rem; + background: #1cd0fd; + border-radius: 2px; + pointer-events: none; +} +.navbar nav a:hover { + background: var(--block-hover); +} +.navbar nav a.active, +.navbar nav a:hover { + color: var(--text-p1); +} +.navbar nav 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); + cursor: default; + pointer-events: none; +} +.navbar nav a.active:after { + content: ''; +} +.navbar nav a+a { + margin-left: 4px; +} +@media screen and (max-width: 667px) { + .navbar.top { + margin-top: 0; + padding-left: 0; + padding-right: 0; + } + .navbar.top nav a:first-child { + margin-left: 1rem; + } + .navbar.top 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); + color: var(--text-p3); +} +.paginator-wrap .page-number { + padding: 4px 8px; + border-radius: 8px; + margin: 2px; +} +.paginator-wrap a.page-number { + color: var(--text-p3); +} +.paginator-wrap a.page-number:hover { + color: var(--text-p1); + background: var(--block); +} +.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.12/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.12/arrow/f049bbd4e88ec.svg"); +} +.paginator-wrap .current { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + background: var(--block); +} +.paginator-wrap .extend { + 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: 8px; + 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; + --fsp: calc(17px - 1px); + font-size: var(--fsp); + 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); + --fsp: calc(17px - 3px); + font-size: var(--fsp); + margin-top: 0.5rem; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.related-posts .item.active .title { + border-bottom: 1px dashed #1cd0fd; +} +.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.8125rem; + 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: calc(17px + 2px); +} +.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: calc(17px + 7px); +} +.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 { + --theme-link: #1cd0fd; + --theme-link-opa: rgba(28,208,253,0.2); +} +.related-wrap#comments .cmt-body { + min-height: 150px; + position: relative; +} +.related-wrap#comments .cmt-body svg.loading { + top: 60px; +} +.related-wrap#comments .cmt-body iframe { + border-radius: 12px; + border: none; + width: 100%; +} +.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%; + } +} +.banner { + border-radius: 12px; + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: flex-start; + height: 220px; +} +.banner.top { + border-radius: 16px; +} +@media screen and (max-width: 667px) { + .banner { + height: 180px; + } +} +.banner .bg { + z-index: 0; +} +.banner .content { + z-index: 1; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; +} +.banner .content .top { + display: flex; + justify-content: space-between; + align-items: center; + line-height: 1; + margin: 1rem; +} +.banner .content .top .tag-plugin.navbar { + margin: 0; + border-radius: 6px; + padding: 2px; + background: rgba(0,0,0,0.2); + overflow: hidden; +} +.banner .content .top .tag-plugin.navbar:after { + content: none; +} +.banner .content .top .tag-plugin.navbar .link { + margin: 0; + border-radius: 4px; + color: rgba(255,255,255,0.8); + padding: 2px 6px; + background: none; + line-height: 1.5; + font-size: 0.9375rem; + text-shadow: 0 0 1px rgba(0,0,0,0.12); +} +.banner .content .top .tag-plugin.navbar .link+.link { + margin-left: 2px; +} +.banner .content .top .tag-plugin.navbar .link:after { + content: none; +} +.banner .content .top .tag-plugin.navbar .link:hover { + color: #fff; + background: rgba(255,255,255,0.25); +} +.banner .content .top .tag-plugin.navbar .link.active { + color: #fff; + background: rgba(255,255,255,0.25); +} +.banner .content .top .back { + background: none; + padding: 0; + line-height: 0; + visibility: hidden; +} +@media screen and (max-width: 667px) { + .banner .content .top .back { + visibility: visible; + } +} +.banner .content .top .back svg { + width: 20px; + height: 20px; + fill: #fff; +} +.banner .banner-link { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0; + z-index: 2; +} +.banner img { + object-fit: cover; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + margin: 0; + height: 100%; + width: 100%; +} +.banner img.bg { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.banner img.avatar { + border-radius: 50%; + width: 48px; + height: 48px; +} +.banner .bottom { + display: flex; + padding: 1rem; + width: 100%; + box-sizing: border-box; +} +.banner .title { + font-size: 1.5rem; + font-weight: 600; +} +.banner .avatar+.text-area { + margin-left: 0.75rem; +} +.banner .text-area .text { + line-height: 1.2; + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.banner .avatar+.text-area .title { + font-size: 1.2rem; +} +.banner .subtitle { + font-size: 0.875rem; +} +.banner .content:only-child { + color: var(--text-p1); +} +.banner .bg+.content { + color: #fff; +} +.banner .bg+.content .avatar { + border: 2px solid #fff; + margin: 0; +} +.banner .bg+.content .bottom { + background-image: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.2)); + text-shadow: 0 0 1px rgba(0,0,0,0.12); +} +.tag-plugin.banner { + transition: transform 2s ease-out; + -moz-transition: transform 2s ease-out; + -webkit-transition: transform 2s ease-out; + -o-transition: transform 2s ease-out; +} +.tag-plugin.banner:hover img.bg { + transform: scale(1.01); +} +.tag-plugin.banner .navbar a.active { + background: var(--blur-bg); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .tag-plugin.banner .navbar a.active { + background: var(--blur-bg) !important; + backdrop-filter: saturate(200%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(200%) blur(var(--blur-px)); + } +} +.tag-plugin.banner .navbar a.active:hover { + background: var(--card); +} +@media screen and (max-width: 667px) { + .banner.top { + border-radius: 0; + } +} +a.tag-plugin.button { + background: var(--theme); + color: var(--alpha100); + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 4px; + 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-top: 8px; + margin-bottom: 8px; +} +a.tag-plugin.button svg, +a.tag-plugin.button img { + height: 24px; + width: auto; + margin: 0 -0.5em 0 1em; + flex-shrink: 0; +} +a.tag-plugin.button span { + text-indent: 0; + line-height: 24px; + margin: 8px 1em; +} +a.tag-plugin.button[size='xs'] { + margin: 0; + border-radius: 2px; +} +a.tag-plugin.button[size='xs'] svg, +a.tag-plugin.button[size='xs'] img { + margin: 0 2px 0 0; + height: 1em; +} +a.tag-plugin.button[size='xs'] span { + margin: 0; +} +a.tag-plugin.button:hover { + --theme: #ff5724; +} +.tag-plugin.grid a.tag-plugin.button { + width: 100%; + box-sizing: border-box; +} +.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-block: var(--block); + --theme-codeblock: var(--block); +} +.colorful[color='red'] { + --theme: #f44336; + --theme-border: #e6b6b3; + --theme-block: #fddbd8; + --theme-codeblock: #f9edec; + --text: #3f1512; + --text-p1: #4f1b17; + --text-p2: #740e06; +} +.colorful[color='orange'] { + --theme: #fa6400; + --theme-border: #e6c7b3; + --theme-block: #fde7d8; + --theme-codeblock: #f9f1ec; + --text: #3f2412; + --text-p1: #4f2d17; + --text-p2: #743206; +} +.colorful[color='amber'] { + --theme: #ffbd2b; + --theme-border: #e6d6b3; + --theme-block: #fdf2d8; + --theme-codeblock: #f9f5ec; + --text: #3f3112; + --text-p1: #4f3e17; + --text-p2: #745206; +} +.colorful[color='yellow'] { + --theme: #f2e03d; + --theme-border: #e6e0b3; + --theme-block: #fdf9d8; + --theme-codeblock: #f9f7ec; + --text: #3f3b12; + --text-p1: #4f4917; + --text-p2: #746906; +} +.colorful[color='green'] { + --theme: #3dc550; + --theme-border: #b3e6ba; + --theme-block: #d8fddd; + --theme-codeblock: #ecf9ee; + --text: #123f19; + --text-p1: #174f1f; + --text-p2: #067416; +} +.colorful[color='cyan'] { + --theme: #1bcdfc; + --theme-border: #b3dbe6; + --theme-block: #d8f5fd; + --theme-codeblock: #ecf6f9; + --text: #12363f; + --text-p1: #17434f; + --text-p2: #065d74; +} +.colorful[color='blue'] { + --theme: #2196f3; + --theme-border: #b3cfe6; + --theme-block: #d8edfd; + --theme-codeblock: #ecf3f9; + --text: #122b3f; + --text-p1: #17364f; + --text-p2: #064374; +} +.colorful[color='purple'] { + --theme: #9c27b0; + --theme-border: #deb3e6; + --theme-block: #f8d8fd; + --theme-codeblock: #f7ecf9; + --text: #39123f; + --text-p1: #47174f; + --text-p2: #640674; +} +.colorful[color='theme'] { + --theme: #1cd0fd; + --theme-border: #b3dbe6; + --theme-block: #d8f6fd; + --theme-codeblock: #ecf6f9; + --text: #12363f; + --text-p1: #17444f; + --text-p2: #065e74; +} +.colorful[color='accent'] { + --theme: #ff5724; + --theme-border: #e6beb3; + --theme-block: #fde1d8; + --theme-codeblock: #f9efec; + --text: #3f1d12; + --text-p1: #4f2417; + --text-p2: #742006; +} +.colorful[color='light'] { + --theme-block: #fff; + --text: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; +} +.colorful[color='dark'] { + --theme-block: #333; + --text: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +.colorful[color='warning'] { + --theme: #f2e03d; + --theme-border: #ffe659; + --theme-block: #ffe659; + --theme-link: #ff453a; +} +.colorful[color='error'] { + --theme: #f2e03d; + --theme-border: #ff453a; + --theme-block: #ff453a; + --theme-link: #ffe659; + --text: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +:root[data-theme="dark"] .tag-plugin.tag { + --theme: #1cd0fd; + --theme-border: #1f505c; + --theme-block: #222d2f; + --theme-codeblock: #283133; + --text: #b3f0ff; + --text-p1: #9fd2df; + --text-p2: #7edaf1; +} +:root[data-theme="dark"] .colorful[color='red'] { + --theme: #f44336; + --theme-border: #5c231f; + --theme-block: #2f2322; + --theme-codeblock: #332928; + --text: #ffb8b3; + --text-p1: #dfa49f; + --text-p2: #f1867e; +} +:root[data-theme="dark"] .colorful[color='orange'] { + --theme: #fa6400; + --theme-border: #5c371f; + --theme-block: #2f2722; + --theme-codeblock: #332d28; + --text: #ffd1b3; + --text-p1: #dfb99f; + --text-p2: #f1ac7e; +} +:root[data-theme="dark"] .colorful[color='amber'] { + --theme: #ffbd2b; + --theme-border: #5c491f; + --theme-block: #2f2b22; + --theme-codeblock: #333028; + --text: #ffe7b3; + --text-p1: #dfcb9f; + --text-p2: #f1cd7e; +} +:root[data-theme="dark"] .colorful[color='yellow'] { + --theme: #f2e03d; + --theme-border: #5c561f; + --theme-block: #2f2e22; + --theme-codeblock: #333228; + --text: #fff7b3; + --text-p1: #dfd99f; + --text-p2: #f1e57e; +} +:root[data-theme="dark"] .colorful[color='green'] { + --theme: #3dc550; + --theme-border: #1f5c27; + --theme-block: #222f24; + --theme-codeblock: #28332a; + --text: #b3ffbd; + --text-p1: #9fdfa8; + --text-p2: #7ef18e; +} +:root[data-theme="dark"] .colorful[color='cyan'] { + --theme: #1bcdfc; + --theme-border: #1f4f5c; + --theme-block: #222d2f; + --theme-codeblock: #283133; + --text: #b3efff; + --text-p1: #9fd2df; + --text-p2: #7ed9f1; +} +:root[data-theme="dark"] .colorful[color='blue'] { + --theme: #2196f3; + --theme-border: #1f415c; + --theme-block: #222a2f; + --theme-codeblock: #282f33; + --text: #b3ddff; + --text-p1: #9fc3df; + --text-p2: #7ebef1; +} +:root[data-theme="dark"] .colorful[color='purple'] { + --theme: #9c27b0; + --theme-border: #531f5c; + --theme-block: #2d222f; + --theme-codeblock: #322833; + --text: #f4b3ff; + --text-p1: #d69fdf; + --text-p2: #e07ef1; +} +:root[data-theme="dark"] .colorful[color='light'] { + --theme-border: #fff; + --theme-block: #fff; + --text: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; +} +:root[data-theme="dark"] .colorful[color='dark'] { + --theme-border: #000; + --theme-block: #111; + --text: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +:root[data-theme="dark"] .colorful[color='warning'], +:root[data-theme="dark"] .colorful[color='light'] { + --text: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .tag-plugin.tag { + --theme: #1cd0fd; + --theme-border: #1f505c; + --theme-block: #222d2f; + --theme-codeblock: #283133; + --text: #b3f0ff; + --text-p1: #9fd2df; + --text-p2: #7edaf1; + } + :root:not([data-theme]) .colorful[color='red'] { + --theme: #f44336; + --theme-border: #5c231f; + --theme-block: #2f2322; + --theme-codeblock: #332928; + --text: #ffb8b3; + --text-p1: #dfa49f; + --text-p2: #f1867e; + } + :root:not([data-theme]) .colorful[color='orange'] { + --theme: #fa6400; + --theme-border: #5c371f; + --theme-block: #2f2722; + --theme-codeblock: #332d28; + --text: #ffd1b3; + --text-p1: #dfb99f; + --text-p2: #f1ac7e; + } + :root:not([data-theme]) .colorful[color='amber'] { + --theme: #ffbd2b; + --theme-border: #5c491f; + --theme-block: #2f2b22; + --theme-codeblock: #333028; + --text: #ffe7b3; + --text-p1: #dfcb9f; + --text-p2: #f1cd7e; + } + :root:not([data-theme]) .colorful[color='yellow'] { + --theme: #f2e03d; + --theme-border: #5c561f; + --theme-block: #2f2e22; + --theme-codeblock: #333228; + --text: #fff7b3; + --text-p1: #dfd99f; + --text-p2: #f1e57e; + } + :root:not([data-theme]) .colorful[color='green'] { + --theme: #3dc550; + --theme-border: #1f5c27; + --theme-block: #222f24; + --theme-codeblock: #28332a; + --text: #b3ffbd; + --text-p1: #9fdfa8; + --text-p2: #7ef18e; + } + :root:not([data-theme]) .colorful[color='cyan'] { + --theme: #1bcdfc; + --theme-border: #1f4f5c; + --theme-block: #222d2f; + --theme-codeblock: #283133; + --text: #b3efff; + --text-p1: #9fd2df; + --text-p2: #7ed9f1; + } + :root:not([data-theme]) .colorful[color='blue'] { + --theme: #2196f3; + --theme-border: #1f415c; + --theme-block: #222a2f; + --theme-codeblock: #282f33; + --text: #b3ddff; + --text-p1: #9fc3df; + --text-p2: #7ebef1; + } + :root:not([data-theme]) .colorful[color='purple'] { + --theme: #9c27b0; + --theme-border: #531f5c; + --theme-block: #2d222f; + --theme-codeblock: #322833; + --text: #f4b3ff; + --text-p1: #d69fdf; + --text-p2: #e07ef1; + } + :root:not([data-theme]) .colorful[color='light'] { + --theme-border: #fff; + --theme-block: #fff; + --text: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; + } + :root:not([data-theme]) .colorful[color='dark'] { + --theme-border: #000; + --theme-block: #111; + --text: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; + } + :root:not([data-theme]) .colorful[color='warning'], + :root:not([data-theme]) .colorful[color='light'] { + --text: #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(--card); + border-radius: 8px; + border: 1px solid var(--block-border); + overflow: hidden; + width: 100%; + min-width: 200px; +} +.md-text .tag-plugin.copy span { + line-height: 3; + padding: 0 1rem; + background: var(--block); + border-right: 1px solid var(--block-border); + color: var(--text-p3); + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-size: 0.8125rem; + font-weight: 700; + flex-shrink: 0; +} +.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: 2px; + border-radius: calc(8px - 2px); + display: inline-block; + background: none; + 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(--block-hover); +} +.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; + border-radius: 0; +} +.tag-plugin.folders { + margin: var(--gap-p) 0; + --fsp: calc(17px - 2px); + font-size: var(--fsp); + 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); +} +.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 { + --fsp: calc(17px - 1px); +} +.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-block); + border: 1px solid var(--theme-border); +} +details.folding summary { + cursor: pointer; + padding: 1rem; + margin: -1rem; + color: var(--text-p2); + font-weight: 500; + --fsp: calc(17px - 2px); + font-size: var(--fsp); + 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); +} +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); + --fsp: calc(17px - 1px); +} +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 figcaption span { + background: var(--theme-block); +} +details.folding[child=codeblock]>div.body .highlight .code:before { + content: none; +} +details.folding[child=codeblock]>div.body .highlight+.highlight { + border-top: 1px dashed var(--theme-border); + border-top-left-radius: 0; + border-top-right-radius: 0; +} +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.12/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 .grid-box { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); +} +.users-wrap .user-card .card-link { + 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 .name { + max-width: 100%; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.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 12px 16px -4px rgba(0,0,0,0.2); +} +.tag-plugin.gallery .grid-cell, +.tag-plugin.gallery .flow-cell { + display: block; + overflow: hidden; + z-index: 0; + position: relative; +} +.tag-plugin.gallery .grid-cell:hover .image-meta, +.tag-plugin.gallery .flow-cell:hover .image-meta { + background: rgba(0,0,0,0.5); +} +.tag-plugin.gallery .grid-cell:hover .image-caption, +.tag-plugin.gallery .flow-cell:hover .image-caption { + color: #fff; +} +.tag-plugin.gallery img { + object-fit: cover; + max-height: 100%; + display: block; +} +.tag-plugin.gallery .image-meta { + position: absolute; + z-index: 1; + top: 0; + left: 0; + right: 0; + bottom: 0; + pointer-events: none; + background: transparent; + 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; + display: flex; + flex-direction: column; + justify-content: flex-end; +} +.tag-plugin.gallery .image-meta .image-caption { + display: block; + font-size: 0.8125rem; + color: transparent; + pointer-events: none; + line-height: 1.2; + margin: 0.5rem; + 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; + text-align: left; +} +.tag-plugin.gallery .image-meta .image-caption:empty { + display: none; +} +.tag-plugin.gallery .grid-cell >img { + transition: transform 0.5s ease-out; + -moz-transition: transform 0.5s ease-out; + -webkit-transition: transform 0.5s ease-out; + -o-transition: transform 0.5s ease-out; +} +.tag-plugin.gallery .grid-cell:hover >img { + transform: scale(1.1); +} +.tag-plugin.gallery.grid-box { + display: grid; +} +.tag-plugin.gallery.grid-box[size='xs'] { + grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); + grid-gap: 2px; +} +.tag-plugin.gallery.grid-box[size='xs'] .grid-cell, +.tag-plugin.gallery.grid-box[size='xs'] img { + border-radius: 2px; +} +.tag-plugin.gallery.grid-box[size='xs'] .image-caption { + font-size: 0.75rem; +} +.tag-plugin.gallery.grid-box[size='s'] { + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + grid-gap: 2px; +} +.tag-plugin.gallery.grid-box[size='s'] .grid-cell, +.tag-plugin.gallery.grid-box[size='s'] img { + border-radius: 2px; +} +.tag-plugin.gallery.grid-box[size='m'] { + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + grid-gap: 4px; +} +.tag-plugin.gallery.grid-box[size='m'] .grid-cell, +.tag-plugin.gallery.grid-box[size='m'] img { + border-radius: 4px; +} +.tag-plugin.gallery.grid-box[size='l'] { + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + grid-gap: 8px; +} +.tag-plugin.gallery.grid-box[size='l'] .grid-cell, +.tag-plugin.gallery.grid-box[size='l'] img { + border-radius: 8px; +} +.tag-plugin.gallery.grid-box[size='xl'] { + grid-template-columns: repeat(2, 1fr); + grid-gap: 16px; +} +.tag-plugin.gallery.grid-box[size='xl'] .grid-cell, +.tag-plugin.gallery.grid-box[size='xl'] img { + border-radius: 16px; +} +.tag-plugin.gallery.grid-box[size='mix'] { + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + grid-gap: 4px; +} +.tag-plugin.gallery.grid-box[size='mix'] .grid-cell, +.tag-plugin.gallery.grid-box[size='mix'] img { + border-radius: 4px; +} +.tag-plugin.gallery.grid-box[size='mix'] .grid-cell:nth-child(3n+1) { + grid-column: auto/span 2; + grid-row: auto/span 2; +} +.tag-plugin.gallery.grid-box[ratio='square'] .grid-cell { + aspect-ratio: 1; +} +.tag-plugin.gallery.grid-box[ratio='portrait'] .grid-cell { + aspect-ratio: 2/3; +} +.tag-plugin.gallery.grid-box .grid-cell { + background: var(--block); +} +.tag-plugin.gallery.grid-box .grid-cell img { + width: 100%; + height: 100%; +} +.tag-plugin.gallery.flow-box { + column-count: 3; + column-gap: 8px; +} +.tag-plugin.gallery.flow-box .flow-cell { + border-radius: 8px; + padding-bottom: 8px; +} +.tag-plugin.gallery.flow-box .flow-cell img { + width: 100%; + height: 100%; +} +.tag-plugin.gallery.flow-box .image-meta { + border-radius: 8px; + margin-bottom: 8px; +} +.tag-plugin.ghcard { + line-height: 0; +} +.tag-plugin.ghcard a.ghcard { + display: inline-block; +} +.tag-plugin.grid { + display: grid; + grid-gap: 16px; +} +.tag-plugin.grid[bg]>.cell> p { + line-height: 1.5; +} +.tag-plugin.grid[bg]>.cell> :first-child { + margin-top: 0; +} +.tag-plugin.grid[bg]>.cell> :last-child { + margin-bottom: 0; +} +.tag-plugin.grid[bg]>.cell> p:first-child { + margin-top: -0.25em; +} +.tag-plugin.grid[bg]>.cell> p:last-child { + margin-bottom: -0.25em; +} +.tag-plugin.grid[bg]>.cell { + padding: 1rem; + border-radius: 12px; +} +.tag-plugin.grid[bg='box']>.cell { + background: var(--block); +} +.tag-plugin.grid[bg='card']>.cell { + background: var(--card); + 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; +} +:root[data-theme="light"] .tag-plugin.grid[bg='card']>.cell { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root[data-theme="light"] .tag-plugin.grid[bg='card']>.cell:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +:root[data-theme="dark"] .tag-plugin.grid[bg='card']>.cell:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; +} +:root:not([data-theme]) .tag-plugin.grid[bg='card']>.cell { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root:not([data-theme]) .tag-plugin.grid[bg='card']>.cell:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .tag-plugin.grid[bg='card']>.cell:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; + } +} +.md-text .tag-plugin.hashtag { + padding: 0px 8px; + border-radius: 100px; + background: var(--theme-block); + color: var(--text-p2); + margin: 2px 0; + display: inline-flex; + align-items: center; + --fsp: calc(17px - 2px); + font-size: var(--fsp); + font-weight: 500; + 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.hashtag span { + margin: 0 2px; +} +.md-text .tag-plugin.hashtag:hover { + background: var(--text-p2); + color: var(--theme-block); +} +span.tag-plugin.icon { + display: inline-block; + margin: -4px 1px 0; + vertical-align: middle; +} +span.tag-plugin.icon svg, +span.tag-plugin.icon img { + display: block; + height: 1.5em; + width: auto; +} +span.tag-plugin.icon svg { + color: var(--theme); +} +span.tag-plugin.icon img { + object-fit: contain; +} +p>strong>span.tag-plugin.icon { + margin: -4px 4px 0 0; +} +.tag-plugin.icon-wrap span.tag-plugin.icon { + margin-right: 4px; +} +.tag-plugin.image { + margin-top: 1rem; + margin-bottom: 1rem; +} +.tag-plugin.image .image-bg { + text-align: center; + border-radius: 12px; + 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: 40px; + 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: #1cd0fd; +} +.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.8125rem; + color: var(--text-p2); + line-height: 1.5; + text-align: justify; +} +.tag-plugin.image .image-meta .image-caption:empty { + display: none; +} +.md-text .tag-plugin.paper { + display: flex; + flex-direction: column; + align-items: center; + padding-top: var(--gap-padding); + padding-bottom: var(--gap-padding); +} +.md-text .tag-plugin.paper >.content { + border-left: 1px dashed var(--text-meta); + border-right: 1px dashed var(--text-meta); + border-bottom: 1px dashed var(--text-meta); + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + padding: 1rem; + max-width: calc(95%); +} +.md-text .tag-plugin.paper >.content >.title { + font-weight: 500; + text-align: center; +} +.md-text .tag-plugin.paper >.content >.meta { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; +} +.md-text .tag-plugin.paper >.content >.body >.paragraph { + text-indent: 2em; +} +.md-text .tag-plugin.paper >.content >.body >.section >.section-title { + text-align: center; +} +.md-text .tag-plugin.paper >.content >.body >.section >.section-content { + text-indent: 2em; +} +.md-text .tag-plugin.paper >.content >.body >.line.right >p { + text-align: right; +} +.md-text .tag-plugin.paper >.content >.body .tag-plugin { + margin: 0; +} +.md-text .tag-plugin.paper >.content >.footer { + color: var(--text-p4); + font-size: 0.75rem; + text-align: right; +} +.md-text .tag-plugin.paper >.content >.footer >.author-date { + text-align: right; +} +.md-text .tag-plugin.paper >.content >.footer >.author-date >span { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; +} +.md-text .tag-plugin.paper >.content >.footer >.author-date >.author { + margin-right: calc(0.5 * var(--gap-p)); +} +.md-text .tag-plugin.paper>.content { + position: relative; +} +.md-text .tag-plugin.paper>.content:before { + content: ''; + position: absolute; + height: 4px; + left: -16px; + top: -4px; + right: -16px; + border-radius: 4px; + background: var(--block); +} +.md-text .tag-plugin.paper>.content >.title { + position: relative; +} +.md-text .tag-plugin.paper>.content >.title:before { + content: ''; + position: absolute; + height: 4px; + left: calc(-1rem - 6px); + top: calc(-1rem - 4px); + right: calc(100% + 1rem - 6px); + border-radius: 4px; + background: #ff5724; +} +.md-text .tag-plugin.paper>.content >.title:after { + content: ''; + position: absolute; + height: 4px; + right: calc(-1rem - 6px); + top: calc(-1rem - 4px); + left: calc(100% + 1rem - 6px); + border-radius: 4px; + background: #ff5724; +} +.md-text .tag-plugin.paper > .content.underline > .title, +.md-text .tag-plugin.paper > .content.underline > .meta, +.md-text .tag-plugin.paper > .content.underline > .author-date, +.md-text .tag-plugin.paper > .content.underline > .footer, +.md-text .tag-plugin.paper > .content.underline > .body { + background: linear-gradient(transparent 1.5rem, var(--text-meta) 1px); + background-size: 100% calc(1.5rem + 1px); + line-height: calc(1.5rem + 1px); + padding: 0 3px; +} +.md-text .tag-plugin.paper > .content.underline p { + margin: 0; +} +.md-text .tag-plugin.paper > .content.underline >.title { + border-top: 1px solid var(--text-meta); +} +.md-text .tag-plugin.reel { + display: flex; + flex-direction: column; + align-items: center; + padding-top: var(--gap-padding); + padding-bottom: var(--gap-padding); +} +.md-text .tag-plugin.reel >.content { + display: flex; + flex-direction: column; + writing-mode: vertical-rl; + border-top: 1px dashed var(--text-meta); + border-bottom: 1px dashed var(--text-meta); + max-width: calc(100% - 80px); + padding: 1rem; +} +.md-text .tag-plugin.reel >.content >.title { + font-weight: 500; + font-size: 1rem; +} +.md-text .tag-plugin.reel >.content >.meta { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; +} +.md-text .tag-plugin.reel >.content >.body { + overflow: auto; + margin: calc(var(--gap-padding) - 4px); +} +.md-text .tag-plugin.reel >.content >.body::-webkit-scrollbar { + height: 4px; + width: 4px; +} +.md-text .tag-plugin.reel >.content >.body::-webkit-scrollbar-track-piece { + background: transparent; +} +.md-text .tag-plugin.reel >.content >.body::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 2px; +} +.md-text .tag-plugin.reel >.content >.body::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.md-text .tag-plugin.reel >.content >.body .main p { + margin: 0; + font-size: 0.875rem; +} +.md-text .tag-plugin.reel >.content >.date { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; + text-align: right; +} +.md-text .tag-plugin.reel >.content >.footer { + color: var(--text-p4); + font-size: 0.75rem; + text-align: right; +} +.md-text .tag-plugin.reel>.content { + position: relative; +} +.md-text .tag-plugin.reel>.content:before { + content: ''; + position: absolute; + width: 4px; + left: -4px; + top: -16px; + bottom: -16px; + border-radius: 4px; + background: var(--block); +} +.md-text .tag-plugin.reel>.content:after { + content: ''; + position: absolute; + width: 4px; + left: calc(100%); + top: -16px; + bottom: -16px; + border-radius: 4px; + background: var(--block); +} +.md-text .tag-plugin.reel>.content >.title { + position: relative; +} +.md-text .tag-plugin.reel>.content >.title:before { + content: ''; + position: absolute; + width: 4px; + right: calc(-1rem - 4px); + top: calc(-1rem - 6px); + bottom: calc(100% + 1rem - 6px); + border-radius: 4px; + background: #ff5724; + z-index: 1; +} +.md-text .tag-plugin.reel>.content >.title:after { + content: ''; + position: absolute; + width: 4px; + right: calc(-1rem - 4px); + top: calc(100% + 1rem - 6px); + bottom: calc(-1rem - 6px); + border-radius: 4px; + background: #ff5724; + z-index: 1; +} +.md-text .tag-plugin.reel>.content >.footer { + position: relative; +} +.md-text .tag-plugin.reel>.content >.footer:before { + content: ''; + position: absolute; + width: 4px; + left: calc(-1rem - 4px); + top: calc(-1rem - 6px); + bottom: calc(100% + 1rem - 6px); + border-radius: 4px; + background: #ff5724; +} +.md-text .tag-plugin.reel>.content >.footer:after { + content: ''; + position: absolute; + width: 4px; + left: calc(-1rem - 4px); + top: calc(100% + 1rem - 6px); + bottom: calc(-1rem - 6px); + border-radius: 4px; + background: #ff5724; +} +.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 { + margin: 1em auto; + display: flex; + justify-content: center; +} +.md-text .link-card { + background: var(--card); + display: inline-flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + width: 300px; + max-width: 100%; + border-radius: 12px; + 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; +} +:root[data-theme="light"] .md-text .link-card { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root[data-theme="light"] .md-text .link-card:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +:root[data-theme="dark"] .md-text .link-card:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; +} +:root:not([data-theme]) .md-text .link-card { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root:not([data-theme]) .md-text .link-card:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .md-text .link-card:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; + } +} +.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: 1px 2px; + border-radius: 2px; + background: var(--theme-block); + color: var(--text); +} +.tag-plugin.video { + line-height: 0; + margin: auto; +} +.tag-plugin.video video, +.tag-plugin.video iframe { + border-radius: 12px; + box-shadow: 0 12px 16px -4px rgba(0,0,0,0.2); + z-index: 1; + background: var(--block); + width: 100%; + height: 100%; + margin: 0; +} +.tag-plugin.navbar { + padding: 0; +} +.tag-plugin.navbar:after { + left: 0; + right: 0; +} +@media screen and (min-width: 667px) { + .tag-plugin.navbar nav a { + margin-top: 2px; + } +} +.md-text .tag-plugin.note { + position: relative; + padding: 0.25rem 1rem; + border-radius: 12px; + background: var(--theme-block); + overflow: hidden; + border: 1px solid var(--theme-border); + color: var(--text-p1); +} +.md-text .tag-plugin.note >.title { + --fsp: calc(17px - 1px); + font-size: var(--fsp); + line-height: 1.5; + margin-top: var(--gap-p-compact); + font-weight: 500; + color: var(--text); +} +.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 { + --fsp: calc(17px - 2px); + font-size: var(--fsp); + 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; + background: var(--theme-codeblock); +} +.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=codeblock] .highlight figcaption span { + background: var(--theme-block); +} +.md-text .tag-plugin.note[child=codeblock] .highlight+.highlight { + border-top: 1px dashed var(--theme-border); + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.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; +} +.md-text .tag-plugin.okr { + position: relative; + border-radius: 12px; + background: var(--theme-block); + border: 1px solid var(--theme-border); + overflow: hidden; + color: var(--text-p1); + line-height: 1.5; +} +.md-text .tag-plugin.okr .o .title { + font-size: 0.9375rem; +} +.md-text .tag-plugin.okr .o .note { + font-size: 0.875rem; +} +.md-text .tag-plugin.okr .o .note p { + font-size: 0.875rem; +} +.md-text .tag-plugin.okr .kr .title { + font-size: 0.875rem; +} +.md-text .tag-plugin.okr .kr .note { + font-size: 0.875rem; +} +.md-text .tag-plugin.okr .kr .note p, +.md-text .tag-plugin.okr .kr .note li, +.md-text .tag-plugin.okr .kr .note .tag-plugin { + font-size: 0.875rem; +} +.md-text .tag-plugin.okr .title { + font-weight: 600; + display: block; +} +.md-text .tag-plugin.okr .note { + font-weight: 400; + display: block; + margin-top: 0.5rem; +} +.md-text .tag-plugin.okr .note >p, +.md-text .tag-plugin.okr .note >ul { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.md-text .tag-plugin.okr .note >.tag-plugin { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.md-text .tag-plugin.okr .note >*:last-child { + margin-bottom: 0; +} +.md-text .tag-plugin.okr .status { + font-size: 0.75rem; + padding: 2px 4px; + border-radius: 2px; +} +.md-text .tag-plugin.okr .okr-item.o { + border-bottom: 4px solid var(--theme-border); +} +.md-text .tag-plugin.okr .okr-item.kr+.okr-item.kr { + border-top: 1px dashed var(--theme-border); +} +.tag-plugin.okr .okr-item { + display: grid; + grid-template-columns: 3.2rem auto 100px; + grid-column-gap: 0.75rem; + padding: 1rem; +} +.tag-plugin.okr .okr-item .okr-left .title { + background: var(--card); + border-radius: 1rem; + text-align: center; + padding: 0 0.5rem; +} +.tag-plugin.okr .okr-item .labels { + display: flex; + justify-content: space-between; + align-items: flex-start; + position: relative; + flex-wrap: wrap; +} +.tag-plugin.okr .okr-item .labels .label { + background: var(--theme-block); + color: var(--text-p1); +} +.tag-plugin.okr .okr-item .progress { + margin-top: 4px; + height: 4px; + border-radius: 2px; + position: relative; + background: var(--card); +} +.tag-plugin.okr .okr-item .progress .fill { + position: absolute; + background: var(--theme); + border-radius: 2px; + top: 0; + left: 0; + bottom: 0; +} +.tag-plugin.okr .okr-item .progress .fill:before { + content: ''; + position: absolute; + top: -4px; + bottom: -4px; + right: -4px; + width: 8px; + height: 12px; + border-radius: 8px; + background: #fff; + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +.tag-plugin.okr .okr-item .progress .fill:after { + content: ''; + position: absolute; + top: -2px; + bottom: -2px; + right: -2px; + width: 4px; + height: 8px; + border-radius: 4px; + background: var(--theme); +} +@media screen and (max-width: 667px) { + .tag-plugin.okr .okr-item { + grid-template-columns: 2.8rem auto 50px; + grid-column-gap: 0.5rem; + padding: 0.5rem; + } + .tag-plugin.okr .okr-item .okr-left .title { + padding: 0 0.25rem; + } + .tag-plugin.okr .okr-item .label { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} +.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; + margin-top: var(--gap-p); +} +.md-text .tag-plugin.poetry .content >.meta { + color: var(--text-p2); + --fsp: calc(17px - 3px); + font-size: var(--fsp); + 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); + line-height: 2; +} +.md-text .tag-plugin.poetry .content >.footer { + font-style: italic; + color: var(--text-p4); + margin: var(--gap-p) 0; + --fsp: calc(17px - 3px); + font-size: var(--fsp); +} +.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; + --gap-p: 2rem; + margin: var(--gap-p) 1rem; +} +.md-text .tag-plugin.quot .content { + display: flex; + align-items: center; + border-bottom: none; + font-weight: 700; + padding: 0 24px; + line-height: 1.2; +} +@media screen and (max-width: 500px) { + .md-text .tag-plugin.quot .content { + padding: 0 20px; + } +} +.md-text .tag-plugin.quot .content { + position: relative; +} +.md-text.content .tag-plugin.quot h1, +.md-text.content .tag-plugin.quot h2 { + font-size: calc(17px + 11px); + font-weight: 900; + padding: 4px 32px 0; +} +@media screen and (max-width: 500px) { + .md-text.content .tag-plugin.quot h1, + .md-text.content .tag-plugin.quot h2 { + padding: 4px 24px 0; + } +} +.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: calc(17px + 7px); +} +.md-text.content .tag-plugin.quot p { + font-size: calc(var(--fsp) + 2px); + color: var(--text); +} +.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] img, +.md-text .tag-plugin.quot .content[type=icon] svg { + height: 1.5em; + display: inline-block; + color: #ff5724; + border-radius: 0; + flex-shrink: 0; +} +.md-text .tag-plugin.quot .content[type=icon] span.text { + margin: 0 0.5rem; + padding-top: 1px; +} +.md-text .tag-plugin.quot .content[type=icon] span.empty { + padding: 0 8px; +} +.sites-wrap .grid-box { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + grid-gap: 1rem 1rem; +} +.sites-wrap .grid-box .grid-cell { + aspect-ratio: 1.5; +} +.sites-wrap .site-card .card-link { + width: 100%; + display: flex; + flex-direction: column; +} +.sites-wrap .site-card .card-link >img { + object-fit: cover; + aspect-ratio: 1.5; + width: 100%; + height: 100%; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.2); +} +.sites-wrap .site-card .card-link .info { + margin-top: 0.5rem; + line-height: 1.2; +} +.sites-wrap .site-card .card-link .info >img { + width: 28px; + height: 28px; + border-radius: 28px; + float: left; + margin-right: 8px; + margin-top: 2px; +} +.sites-wrap .site-card .card-link .info span { + display: block; +} +.sites-wrap .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 .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: 1; +} +.sites-wrap .site-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; +} +.sites-wrap .site-card .card-link:hover >img { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +.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; + --fsp: calc(17px - 3px); + font-size: var(--fsp); + 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; +} +.tag-plugin.tabs .tab-content:has(.grid-box) { + width: 100%; +} +.l_body[text-indent] .md-text .tag-plugin.tabs .tab-content .tab-pane>p:not([class]) { + text-indent: calc(var(--fsp) * 2); +} +.l_body[text-indent] .md-text .tag-plugin.tabs .tab-content .tab-pane>p:not([class]) a { + text-indent: 0; +} +.tag-plugin.timeline { + position: relative; + padding-left: 16px; +} +.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; +} +.tag-plugin.timeline:has(.loading-wrap) { + padding-left: 0; +} +.tag-plugin.timeline:has(.loading-wrap):before { + display: none; +} +.tag-plugin.timeline .timenode { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + box-sizing: border-box; + max-width: 100%; +} +.tag-plugin.timeline .timenode >.header, +.tag-plugin.timeline .timenode >.body { + box-sizing: border-box; + max-width: 100%; +} +.tag-plugin.timeline .timenode[highlight] .header:before { + background: #1cd0fd; +} +.tag-plugin.timeline .timenode+.timenode { + margin-top: 1rem; +} +.tag-plugin.timeline .timenode:hover .header span { + color: var(--text-p1); +} +.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.8125rem; +} +.tag-plugin.timeline .timenode .header a.user-info span { + font-weight: 600; +} +.tag-plugin.timeline .timenode .header .user-info { + display: flex; + align-items: center; + font-size: 0.8125rem; + font-weight: 500; + color: var(--text-p1); + margin-right: 8px; + line-height: 1; + border-radius: 16px; +} +.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, +.tag-plugin.timeline .timenode .header span { + font-weight: 500; + color: var(--text-p3); + line-height: 1; +} +.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 { + --fsp: calc(17px - 1px); +} +.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] a.body { + display: block; + color: var(--text-p1); + line-height: 1.25; + padding: 0.75rem 1rem; + --fsp: calc(17px - 1px); + font-size: var(--fsp); +} +.tag-plugin.timeline[api] .body p.title { + 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; + text-decoration: none; + border-bottom: 2px solid #1cd0fd; + 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; + background: none; +} +.tag-plugin.timeline[api] .body p.title a:hover { + background: none; + border-radius: 0; + border-bottom: 2px solid #ff5724; +} +.tag-plugin.timeline[api] .body >p:first-child:not([class]) a:not([class]) { + padding: 0; + margin: 0; + color: inherit; + text-decoration: none; + border-bottom: 2px solid #1cd0fd; + 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; + background: none; +} +.tag-plugin.timeline[api] .body >p:first-child:not([class]) a:not([class]):hover { + background: none; + border-radius: 0; + border-bottom: 2px solid #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.8125rem; +} +.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.8125rem; + align-items: stretch; +} +.tag-plugin.timeline[api] .body .footer .left+.right { + margin-left: 4px; +} +.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; + border-color: #2094f3; +} +.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 a.item { + background: var(--block); + border-color: var(--block-border); + color: inherit; +} +.tag-plugin.timeline[api] .body .footer a.item:hover { + background: var(--block-hover); +} +.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 { + --fsp: calc(17px - 2px); + 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; +} +.tag-plugin.timeline.ds-memos .body p:first-child { + margin-top: 2px; +} +.tag-plugin.timeline.ds-memos .body p:last-child { + margin-bottom: 2px; +} +.tag-plugin.timeline.ds-memos .body img { + margin: 0.5rem 0; + max-height: 128px; + cursor: zoom-in; +} +.tag-plugin.timeline.ds-memos .body .tag-plugin.image { + display: flex; +} +.tag-plugin.timeline.ds-memos .body .tag-plugin.image .image-bg+.image-bg { + margin-left: 4px; +} +details.toc { + background: var(--block); + border: 1px solid var(--block-border); + border-radius: 12px; + 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.footer { + margin: 0.5rem var(--gap-max) 1rem; +} +.social-wrap { + display: grid; + grid-gap: 0.25rem 0.25rem; + grid-template-columns: repeat(auto-fill, 32px); + text-align: center; +} +.social-wrap .social { + line-height: 0; + display: inline-block; + padding: 6px; + border-radius: 32px; + 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 .social:hover { + z-index: 1; + filter: unset; + background: var(--alpha100); +} +.social-wrap .social img { + border-radius: 2px; +} +.logo-wrap { + display: flex; + align-items: center; + overflow: hidden; + min-height: 48px; +} +.logo-wrap img.avatar { + object-fit: cover; +} +.logo-wrap img.icon { + object-fit: contain; +} +.logo-wrap .icon { + width: 48px; + height: 48px; + margin-right: 1rem; + border-radius: 4px; + flex-shrink: 0; +} +.logo-wrap a { + color: inherit; + display: flex; + align-items: center; +} +.logo-wrap a.avatar { + display: block; + position: relative; + width: 48px; + height: 48px; + flex-shrink: 0; + border-radius: 48px; + 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; + 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.5rem; + font-weight: 900; + color: inherit; + line-height: 1.2; + display: block; + position: relative; +} +.logo-wrap a.title .main { + color: var(--text); +} +.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; +} +.nav-area .menu { + width: 100%; + display: grid; + margin: 8px 0; + grid-template-columns: repeat(4, 1fr); + grid-gap: 8px; +} +.nav-area .menu::-webkit-scrollbar { + display: none; +} +.nav-area .menu::-webkit-scrollbar-track-piece { + background: transparent; +} +.nav-area .menu::-webkit-scrollbar-thumb { + display: none; +} +.nav-area .menu .nav-item { + box-sizing: border-box; + width: 100%; + min-height: 40px; + border-radius: 8px; + font-size: 0.9375rem; + font-weight: 500; + color: var(--text-p3); + text-align: center; + background: var(--alpha50); + 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; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.nav-area .menu .nav-item img, +.nav-area .menu .nav-item svg { + height: 28px; + object-fit: contain; + filter: grayscale(100%) brightness(0.8) opacity(0.8); + 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; +} +.nav-area .menu .nav-item span { + text-overflow: ellipsis; + word-break: keep-all; +} +.nav-area .menu .nav-item.active, +.nav-area .menu .nav-item:hover { + color: var(--text-p1); + background: var(--alpha100); +} +.nav-area .menu .nav-item.active img, +.nav-area .menu .nav-item:hover img, +.nav-area .menu .nav-item.active svg, +.nav-area .menu .nav-item:hover svg { + filter: unset; +} +.nav-area .menu .nav-item.active:after { + content: ''; + position: absolute; + width: 16px; + height: 2px; + left: 50%; + transform: translateX(-50%); + border-radius: 2px; + bottom: 2px; + background: currentColor; +} +.nav-area { + margin: 32px var(--gap-margin) 0; +} +.search-wrapper { + width: 100%; +} +.search-wrapper >.search-form { + position: sticky; + margin-bottom: 8px; + top: 1rem; + height: 40px; + display: flex; + flex-direction: row; + align-items: center; + transition: 0.38s ease-out; + z-index: 0; + border-radius: 8px; + color: var(--text); + background: var(--alpha50); +} +.search-wrapper >.search-form:has(input:focus) { + background: var(--alpha100); +} +.search-wrapper .search-input { + width: 100%; + box-sizing: border-box; + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; + font-size: 0.875rem; + padding: 12px 0; + color: var(--text); +} +.search-wrapper .search-button { + border-radius: 8px; + display: flex; + align-items: center; + height: 40px; +} +.search-wrapper .search-button svg { + height: 1rem; + width: 40px; + margin-left: 4px; + color: var(--text-p2); + fill: currentColor; +} +.search-wrapper .search-button svg path[p-id="1562"] { + color: #1cd0fd; +} +.search-wrapper[searching='true'] .search-button path[p-id="1562"] { + color: #3dc550; +} +.search-wrapper.noresult[searching='true'] .search-button path[p-id="1562"] { + color: #f44336; +} +.search-wrapper .search-no-result { + display: none; + color: var(--text-p1); + text-align: center; + font-size: 0.875rem; + padding: 2rem; + background: var(--alpha20); + border-radius: 12px; +} +.search-wrapper #search-result { + max-height: 60vh; + overflow: scroll; + scrollbar-width: none; + border-radius: 12px; +} +.search-wrapper #search-result::-webkit-scrollbar { + height: 0; + width: 0; +} +.search-wrapper #search-result::-webkit-scrollbar-track-piece { + background: transparent; +} +.search-wrapper #search-result::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.search-wrapper #search-result::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.search-wrapper #search-result:empty { + display: none; +} +.search-wrapper #search-result .search-result-list { + padding: 0; + margin: 0; + list-style-type: none; +} +.search-wrapper #search-result li a { + display: block; + background: var(--alpha20); + line-height: 1.2; + padding: 0.75rem 1rem; + border-radius: 12px; + 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; +} +.search-wrapper #search-result li a:hover { + background: var(--alpha100); +} +.search-wrapper #search-result li+li { + margin-top: 8px; +} +.search-wrapper #search-result .search-result-title { + color: var(--text-p1); + font-weight: 700; + font-size: 0.9375rem; +} +.search-wrapper #search-result .search-result-content { + overflow: hidden; + color: var(--text-p3); + margin: 4px 0 0; + max-height: 13em; + text-align: justify; + font-size: 0.8125rem; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.search-wrapper #search-result .search-keyword { + color: #f44336; + border-bottom: 1px dashed #f44336; + font-weight: bold; + filter: grayscale(25%); +} +.search-wrapper.noresult[searching='true'] .search-no-result { + display: block; + margin-bottom: 8px; +} +.l_left { + margin: 8px; + height: calc(100vh - 16px); + border-radius: 16px; + overflow: hidden; + overflow: clip; + overflow-clip-margin: 0.5px; +} +.l_left .header { + margin: var(--gap-max) var(--gap-margin) 0; +} +.l_right { + margin: 8px; + border-radius: 16px; +} +@media screen and (min-width: 2048px) { + .l_left { + margin-left: auto; + margin-right: calc(2 * var(--gap-max)); + } + .l_right { + margin-left: var(--gap-max); + margin-right: auto; + } +} +.l_left { + background-size: cover; + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.13/image/sidebar-bg1@small.jpg"); +} +.l_left .leftbar-container { + height: 100%; + display: flex; + flex-direction: column; + word-break: break-all; + text-align: justify; + --blur-px: 100px; + --blur-bg: var(--alpha60); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .l_left .leftbar-container { + background: var(--blur-bg); + backdrop-filter: saturate(240%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(240%) blur(var(--blur-px)); + } +} +.widget-body .linklist { + display: grid; + grid-gap: 8px; +} +.linklist .link { + border-radius: 8px; + color: var(--text-p2); + min-height: 32px; + padding: 0 4px; + 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; + display: flex; + justify-content: center; + align-items: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.linklist .link.active { + background: var(--alpha50); +} +.linklist .link.active svg, +.linklist .link.active img { + filter: unset; +} +.linklist .link span { + padding: 0 4px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.linklist .link svg, +.linklist .link img { + padding: 0 2px; + max-height: 18px; + width: auto; + filter: grayscale(100%) brightness(0.8) opacity(0.8); + transition: filter 0.2s ease-out; + -moz-transition: filter 0.2s ease-out; + -webkit-transition: filter 0.2s ease-out; + -o-transition: filter 0.2s ease-out; + flex-shrink: 0; +} +.linklist .link svg:not([class='active-icon']), +.linklist .link img:not([class='active-icon']) { + color: #1cd0fd; +} +.widget-body .linklist.left { + grid-gap: 2px; +} +.linklist.left .link { + justify-content: space-between; + padding: 0 16px; +} +.linklist.left .link img, +.linklist.left .link svg { + width: 1em; + height: 1em; + transform: scale(1.2); +} +.linklist.left .link span { + padding: 0 8px; +} +.linklist .link:hover { + background: var(--alpha100); +} +.linklist .link:hover svg { + filter: unset; +} +.widget-wrapper.ghrepo .repo { + display: block; + padding: 0.75rem 0.5rem; + color: var(--text-p2); + background: var(--card); + border-radius: 12px; + 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; +} +:root[data-theme="light"] .widget-wrapper.ghrepo .repo { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root[data-theme="light"] .widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +:root[data-theme="dark"] .widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; +} +:root:not([data-theme]) .widget-wrapper.ghrepo .repo { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root:not([data-theme]) .widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; + } +} +.widget-wrapper.ghrepo .repo >div+div { + margin-top: 0.5rem; +} +.widget-wrapper.ghrepo .repo span { + color: var(--text-p2); +} +.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.user-card .widget-header+.widget-body { + margin: 0.75rem 0; +} +.widget-wrapper.user-card .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); +} +.widgets .widget-wrapper.user-card .avatar { + display: block; + border-radius: 100%; + margin: 1rem auto 1.25rem auto; + max-width: 128px; + overflow: hidden; +} +.widgets .widget-wrapper.user-card .avatar img { + display: block; + aspect-ratio: 1; +} +@media screen and (max-width: 768px) { + .widgets .widget-wrapper.user-card .avatar { + max-width: 50%; + } +} +.widgets .widget-wrapper.user-card p.username { + font-weight: 900; + font-size: calc(17px + 11px); + color: var(--text); + margin: 0; +} +.widgets .widget-wrapper.user-card p.bio { + font-size: 0.8125rem; + margin: 0; +} +.widgets .widget-wrapper.user-card .follow { + font-weight: 500; + border-radius: 64px; + margin: 1rem 0 0; + 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; +} +.widgets .widget-wrapper.user-card .follow svg { + margin-right: 6px; + height: 1.5em; + width: auto; +} +.widgets .widget-wrapper.user-card .follow:hover { + background: #ff5724; +} +.widgets .widget-wrapper.user-card .buttons { + margin: 1rem 0; + align-self: stretch; + display: grid; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 2px) / 3)); +} +.widgets .widget-wrapper.user-card .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; +} +.widgets .widget-wrapper.user-card .btn:hover { + background: var(--block); +} +.widgets .widget-wrapper.user-card .btn .title { + font-size: 1rem; + font-weight: 700; +} +.widgets .widget-wrapper.user-card .btn .desc { + font-size: 0.75rem; + color: var(--text-p3); + font-weight: 500; +} +.widget-wrapper.post-list .widget-body a { + font-size: 0.875rem; + padding: 8px 16px; + display: block; + border-radius: 8px; + color: var(--text-p1); + 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.post-list .widget-body a.active { + background: var(--alpha50); +} +.widget-wrapper.post-list .widget-body a:hover { + background: var(--alpha100); +} +.widget-wrapper.post-list .widget-body a+a { + margin-top: 2px; +} +.widget-wrapper.post-list .widget-body a { + display: flex; + justify-content: space-between; + align-items: center; +} +.widget-wrapper.post-list .widget-body a .title { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.widget-wrapper.post-list .widget-body a svg { + flex-shrink: 0; + height: 1em; + width: auto; + transform: scale(1.2); +} +.widget-wrapper.post-list .widget-body+.widget-header { + margin-top: 28px; +} +.widget-wrapper.markdown .widget-body { + border-radius: 12px; + padding: 4px 16px; + background: var(--alpha50); +} +.widget-wrapper.markdown .widget-body a:not([class]) { + 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; + border-bottom: 1px solid var(--text); + color: var(--text); +} +.widget-wrapper.markdown .widget-body a:not([class]):hover { + color: #ff5724; + border-bottom: 1px solid #ff5724; +} +.widget-wrapper.markdown .linklist { + margin: 1em 0; +} +.widget-wrapper.markdown .linklist .link { + background: var(--alpha50); +} +.widget-wrapper.markdown .linklist .link:hover { + background: var(--alpha100); +} +.widget-wrapper.post-card .widget-body { + max-width: 100%; +} +.widget-wrapper.post-card .widget-body .item+.item { + margin-top: 8px; +} +.widget-wrapper.post-card .widget-body .item { + line-height: 1.2; + background: var(--alpha20); + padding: 10px 16px; + border-radius: 12px; + display: block; + border-left: 0; + box-sizing: border-box; +} +.widget-wrapper.post-card .widget-body .title { + color: var(--text-p1); + font-weight: 500; + font-size: 1rem; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 1; + font-weight: 700; + font-size: 0.875rem; +} +.widget-wrapper.post-card .widget-body .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; +} +.widget-wrapper.post-card .widget-body .item { + 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.post-card .widget-body .item.active { + background: var(--alpha50); +} +.widget-wrapper.post-card .widget-body .item:hover { + background: var(--alpha50); +} +.widget-wrapper.tagcloud .widget-body { + border-radius: 12px; + padding: 12px 16px; + background: var(--alpha50); +} +.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 .tag-plugin.timeline { + padding-left: 0; +} +.widget-wrapper.timeline .tag-plugin.timeline:before { + left: 6px; +} +.widget-wrapper.timeline .widget-body { + overflow: hidden; +} +.widget-wrapper.timeline .body a { + 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; + word-break: break-all; + --fsp: calc(17px - 2px); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode { + z-index: 1; + margin-top: 0.25rem; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header { + margin: 0.25rem var(--gap-padding); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header .user-info { + background: none; + padding-right: 0; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header img { + display: none; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header:before { + left: calc(6px - var(--gap-padding)); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body { + border-radius: 12px; + padding: 0.5rem 1rem; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body p, +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body li { + --fsp: calc(17px - 3px); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body code { + background: none; + padding: 0; + margin: 0; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body .highlight, +.widget-wrapper.timeline .tag-plugin.timeline .timenode .body pre:not([class]):has(>code) { + background: var(--alpha50); +} +.widget-wrapper.timeline .tag-plugin.timeline[api] .body .footer { + background: none; +} +.l_left .widget-wrapper.timeline .tag-plugin.timeline { + padding-left: 0; +} +.l_left .widget-wrapper.timeline .tag-plugin.timeline:before { + content: none; +} +.l_left .widget-wrapper.timeline .body { + box-shadow: none; + background: var(--alpha50); +} +.widget-wrapper.toc { + background: var(--site-bg); + z-index: 3; +} +.widget-wrapper.toc .widget-body { + position: relative; +} +.widget-wrapper.toc .widget-body:before { + content: ''; + position: absolute; + top: 6px; + bottom: 6px; + left: 0; + width: 4px; + background: var(--block); + border-radius: 4px; +} +.widget-wrapper.toc .toc { + --fsp: calc(17px - 2px); + padding: 0; + margin: 0; + position: relative; + list-style: none; +} +.widget-wrapper.toc .toc li { + margin: 0; + list-style: none; +} +.widget-wrapper.toc .toc a { + --padding: calc(var(--gap-padding) / 2); + --padding-offset: calc(0 - var(--padding)); + padding: 6px var(--padding); + margin: 0 var(--padding); + color: var(--text-p3); + display: block; + position: relative; + border-radius: 8px; + 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; +} +.widget-wrapper.toc .toc a.active:before { + content: ''; + position: absolute; + top: 6px; + bottom: 6px; + left: -8px; + width: 4px; + background: #1cd0fd; + border-radius: 4px; +} +.widget-wrapper.toc .toc a:hover { + background: var(--block-hover); + color: var(--text); +} +.l_right .widgets .widget-wrapper.toc { + margin-top: 0; + position: sticky; + position: -webkit-sticky; + top: 0; + padding: 16px 0; +} +.l_right .widgets .widget-wrapper.toc:first-child { + top: 8px; + padding-top: 8px; +} +.l_right .widgets .widget-wrapper.toc .widget-body .toc { + max-height: 70vh; + overflow: auto; +} +@media screen and (max-width: 1180px) { + .l_right .widgets .widget-wrapper.toc .widget-body .toc { + max-height: unset; + } +} +.l_right .widgets .widget-wrapper.toc .widget-body .toc::-webkit-scrollbar { + height: 0; + width: 0; +} +.l_right .widgets .widget-wrapper.toc .widget-body .toc::-webkit-scrollbar-track-piece { + background: transparent; +} +.l_right .widgets .widget-wrapper.toc .widget-body .toc::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.l_right .widgets .widget-wrapper.toc .widget-body .toc::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.widget-wrapper.toc .toc .toc-item { + font-weight: 500; + --fsp: calc(17px - 1px); +} +.widget-wrapper.toc .toc .toc-item .toc-item { + font-weight: 400; + --fsp: calc(17px - 2px); +} +.widget-wrapper.toc .toc ol { + padding-left: 0; +} +.widget-wrapper.toc .toc .toc-child .toc-link { + padding-left: 1.5rem; +} +.widget-wrapper.toc .toc .toc-child .toc-child .toc-link { + padding-left: 2.5rem; +} +.widget-wrapper.toc .toc .toc-child .toc-child .toc-child .toc-link { + padding-left: 3.5rem; +} +.widget-wrapper.toc .toc .toc-child .toc-child .toc-child .toc-child .toc-link { + padding-left: 4.5rem; +} +.widget-wrapper.toc .toc .toc-child .toc-child .toc-child .toc-child .toc-child .toc-link { + padding-left: 5rem; +} +.widget-wrapper.toc .toc a.toc-link.active { + color: var(--text); +} +.widget-wrapper.toc .toc a.toc-link.active:before, +.widget-wrapper.toc .toc a.toc-link.active:after { + content: ''; +} +.widget-wrapper.toc[collapse='true'] .toc-item a.toc-link+ol { + display: none; +} +.widget-wrapper.toc[collapse='true'] .toc a.toc-link.active+ol { + display: block; +} +.widget-wrapper.toc[collapse='auto'] .toc-item a.toc-link+ol { + display: none; +} +.widget-wrapper.toc[collapse='auto'] .toc a.toc-link.active+ol { + display: block; +} +.widget-wrapper.toc[collapse='auto']:hover a.toc-link+ol { + display: block; +} +.widget-wrapper.toc[collapse='true'] ol:has(> .toc-item a.active) { + display: block; +} +.widget-wrapper.toc[collapse='auto'] ol:has(> .toc-item a.active) { + display: block; +} +.widget-wrapper.toc .widget-body { + display: grid; + grid-template-rows: 1fr; + 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; +} +.l_right .widgets .widget-wrapper.toc .widget-header .cap-action:hover { + background: var(--block-border); +} +.l_right .widgets .widget-wrapper.toc.collapse .widget-header .cap-action { + background: var(--block-border); +} +.l_right .widgets .widget-wrapper.toc.collapse .widget-body { + grid-template-rows: 0fr; +} +.widget-wrapper.toc .widget-body+.widget-footer:before { + content: ''; + position: absolute; + background: var(--block-border); + top: 0; + height: 1px; + left: var(--gap-padding); + right: var(--gap-padding); +} +.widget-wrapper.toc .widget-footer { + margin-top: 8px; + color: var(--text-p2); + position: relative; + padding-top: 8px; +} +.widget-wrapper.toc .widget-footer a { + display: flex; + align-items: center; + color: inherit; + font-size: 0.875rem; + padding: 8px var(--gap-padding); + border-radius: 8px; + 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; +} +.widget-wrapper.toc .widget-footer a svg, +.widget-wrapper.toc .widget-footer a img { + height: 16px; + width: auto; + margin-right: 8px; +} +.widget-wrapper.toc .widget-footer a:hover { + background: var(--block-hover); + color: var(--text); +} +.widget-wrapper.toc+.widget-wrapper { + padding-top: 32px; +} +@media screen and (max-width: 1180px) { + .l_right { + background: var(--blur-bg); + } + @supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .l_right { + background: var(--blur-bg) !important; + backdrop-filter: saturate(200%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(200%) blur(var(--blur-px)); + } + } + .l_right:hover { + background: var(--card); + } + .l_right .widgets .widget-wrapper.toc { + position: static; + background: none; + } + .widget-wrapper.toc .toc a { + color: var(--text-p2); + } + .widget-wrapper.toc .widget-footer a { + background: var(--alpha100); + } + .widget-wrapper.toc .widget-footer a+a { + margin-top: 4px; + } +} +.widgets .loading-wrap { + margin: 0.5rem 0; + background: var(--alpha50); +} +.widgets { + overflow: scroll; + flex-grow: 1; + scrollbar-width: none; + z-index: 1; + line-height: 1.2; + margin: 0 var(--gap-margin); +} +.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-padding); + padding-right: var(--gap-padding); + display: flex; + justify-content: space-between; + align-items: baseline; + line-height: 28px; + font-weight: 500; + font-size: 0.8125rem; + color: var(--text-p1); +} +.widgets .widget-wrapper .widget-header .item { + display: block; +} +.widgets .widget-wrapper .widget-header >span { + text-align: left; + opacity: 0.6; +} +.widgets .widget-wrapper .widget-header:empty { + display: none; +} +.widgets .widget-wrapper .widget-header .cap-action { + line-height: 0; + color: inherit; + opacity: 0.6; + transition: opacity 0.2s ease-out, background 0.2s ease-out; + -moz-transition: opacity 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: opacity 0.2s ease-out, background 0.2s ease-out; + -o-transition: opacity 0.2s ease-out, background 0.2s ease-out; + border-radius: 4px; + padding: 6px; + margin-right: -6px; +} +.widgets .widget-wrapper .widget-header .cap-action svg { + height: 1em; + width: auto; + transform: scale(1.2); + fill: var(--text-p2); +} +.widgets .widget-wrapper .widget-header .cap-action:hover { + color: #ff5724; + background: var(--alpha100); + opacity: 1; +} +.widgets .widget-wrapper .widget-header .cap-action:hover svg { + fill: #ff5724; +} +.widgets .widget-wrapper .widget-body { + color: var(--text-p1); +} +.widgets .widget-wrapper .widget-body p { + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.5; +} +.widget-wrapper { + display: block; + padding-bottom: 32px; +} +.l_left .widgets .widget-wrapper:first-child { + margin-top: 32px; +} +.l_right .widgets:empty { + display: none; +} +.l_right .widgets .widget-wrapper .widget-header { + padding-left: var(--gap-padding); + padding-right: var(--gap-padding); +} +@media screen and (max-width: 1180px) { + .l_right .widgets .widget-wrapper { + margin-top: var(--gap-margin); + border-radius: 12px; + } +} +@media screen and (min-width: 1180px) { + .l_right .widgets .widget-wrapper.markdown .widget-body { + background: var(--block); + } +} +.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-p1); +} +.post-list #archive .archive-header:after { + content: ""; + position: absolute; + height: 4px; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + border-radius: 4px; + background: #1cd0fd; +} +.post-list #archive a.post { + display: inline-flex; + align-items: baseline; + margin: 0.25rem 0; + color: var(--text-p1); + 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; + border-bottom: 1px dashed var(--text-meta); +} +.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; + color: var(--text-p4); +} +.post-list #archive a.post:hover { + border-bottom: 1px solid #1cd0fd; + color: var(--text); +} +.post-list #archive a.post:hover time { + color: #1cd0fd; +} +.post-list #cats { + padding: 0; +} +.post-list #cats a.cat { + display: flex; + padding: 0.5em 1rem; + border-radius: 8px; + color: var(--text-p2); + align-items: center; + justify-content: space-between; + font-weight: 500; + font-size: calc(17px - 2px); +} +.post-list #cats a.cat.child { + padding-left: 2rem; +} +.post-list #cats a.cat span { + display: flex; + align-items: center; +} +.post-list #cats a.cat svg { + height: 1em; + width: auto; + transform: scale(1.2); + margin-right: 8px; +} +.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); +} +.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); + background: var(--block-hover); +} +.post-list #tags a.tag:hover:before { + color: #1cd0fd; + opacity: 1; +} +@media screen and (min-width: 500px) { + .post-list.author #archive { + padding: 1rem 0; + } +} +.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; + } +} +.md-text .tag-list { + display: flex; + flex-wrap: wrap; + padding: 0; + margin-top: 2rem; +} +.md-text .tag-list 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; +} +.md-text .tag-list a.tag:before { + content: "#"; + margin-left: -2px; + margin-right: 2px; + opacity: 0.4; +} +.md-text .tag-list a.tag:hover { + color: var(--text); + background: var(--block-hover); +} +.md-text .tag-list a.tag:hover:before { + color: #1cd0fd; + opacity: 1; +} +.post-list .post-card .meta.cap .tag:before { + content: "#"; + margin-left: -2px; + margin-right: 2px; + opacity: 0.4; +} +.widget-body.tag-tree .tag-subtree > a > .tag-switcher-wrapper { + width: 1.75rem; + height: 0.875rem; + display: flex; + justify-content: end; + align-items: center; +} +.widget-body.tag-tree .tag-subtree > a > .tag-switcher-wrapper:hover { + color: #1cd0fd; +} +.widget-body.tag-tree .tag-subtree.parent-tag > a .tag-switcher { + display: inline-block; + height: 0.5rem; + width: 0.5rem; + border-width: 1px; + border-style: none solid solid none; + transform: translateX(-25%) rotate(-45deg); +} +.widget-body.tag-tree .tag-subtree.parent-tag.expanded > a .tag-switcher { + transform: translateY(-25%) rotate(45deg); +} +.widget-body.tag-tree .tag-subtree.parent-tag > .tag-subtree { + display: none; +} +.widget-body.tag-tree .tag-subtree.parent-tag.expanded > .tag-subtree { + display: block; +} +.widget-body.tag-tree .tag-subtree .tagcon { + font-size: smaller; + opacity: 0.4; + margin-right: 0.25rem; +} +.l_body { + display: grid; + grid-template-columns: 1fr minmax(200px, var(--width-main)) 1fr; + grid-gap: var(--gap-margin); + margin: auto; + font-size: var(--fsp); +} +.l_body aside { + z-index: 8; + flex-shrink: 0; + position: sticky; + position: -webkit-sticky; + --width-sidebar: calc(var(--gap-margin) * 2 + var(--gap-padding) * 2 + var(--side-content-width)); + width: var(--width-sidebar); +} +.l_body .l_left { + justify-self: right; + top: 8px; +} +.l_body .l_right { + justify-self: left; + --gap-margin: 0px; + max-height: calc(100% - 8px * 2); +} +.l_body .l_right .widgets { + height: 100%; + overflow: visible; +} +@media screen and (max-width: 1180px) { + .l_body .l_right { + --gap-margin: 16px; + } + .laptop-only { + display: block !important; + } + .l_body .l_right { + top: 8px; + position: fixed; + max-height: calc(100% - 8px * 2); + transform: translateX(320px); + transition: transform 0.38s ease-out; + margin: 0; + right: 8px; + box-shadow: 0 12px 16px -4px rgba(0,0,0,0.2); + z-index: 10; + background: var(--site-bg); + overflow: auto; + --blur-bg: var(--alpha60); + --blur-px: 50px; + } + .l_body .l_right::-webkit-scrollbar { + height: 0; + width: 0; + } + .l_body .l_right::-webkit-scrollbar-track-piece { + background: transparent; + } + .l_body .l_right::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; + } + .l_body .l_right::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); + } + .l_body[rightbar] .l_right { + transform: translateX(0px); + } + .l_body[rightbar] .main-mask { + pointer-events: inherit; + } +} +@media screen and (max-width: 667px) { + .mobile-only { + display: block !important; + } + .l_body { + padding: 0; + display: block; + } + .l_body .l_left { + position: fixed; + transform: translateX(-320px); + transition: transform 0.38s ease-out; + margin: 0; + left: 8px; + box-shadow: 0 12px 16px -4px rgba(0,0,0,0.2); + z-index: 10; + } + .l_body .l_main { + max-width: 100%; + } + .l_body[leftbar] .l_left { + transform: translateX(0px); + } + .l_body[leftbar] .main-mask { + opacity: 1; + pointer-events: inherit; + } +} +.main-mask { + position: fixed; + pointer-events: none; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.1); + z-index: 9; + opacity: 0; + 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; +} +.l_main .post-list { + margin: 1rem; +} +.l_main .post-list .post-title:first-child { + margin-top: 0.5rem; +} +.l_main .post-list .post-title { + font-weight: 500; + margin: 1.25rem auto 0.75rem 0; + line-height: 1.2; + font-size: calc(17px + 4px); + border-bottom: none; + color: var(--text); + 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) { + .l_main .post-list .post-title { + font-size: calc(17px + 2px); + margin: 0.5rem 0; + } +} +.l_main .post-list .wiki .post-title { + margin-top: 0.5rem; +} +.post-list .post-card { + display: block; + margin: 1rem 0; + border-radius: 12px; + background: var(--card); + 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; + position: relative; +} +:root[data-theme="light"] .post-list .post-card { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root[data-theme="light"] .post-list .post-card:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +:root[data-theme="dark"] .post-list .post-card:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; +} +:root:not([data-theme]) .post-list .post-card { + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +:root:not([data-theme]) .post-list .post-card:hover { + box-shadow: 0 12px 20px -4px rgba(0,0,0,0.15); + transform: translate3d(0, -2px, 0); +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme]) .post-list .post-card:hover { + box-shadow: 0 0 4px -2px #1cd0fd, 0 0 24px -8px #1cd0fd; + } +} +.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 { + flex-wrap: wrap; + margin: 0; + line-height: 2; + --fsp: calc(17px - 1px); + font-size: var(--fsp); +} +.post-list .post-card .meta.cap, +.post-list .post-card .meta.cap span { + display: flex; + align-items: center; +} +.post-list .post-card .meta.cap svg { + height: 1em; + width: auto; + line-height: 0; + transform: scale(1.2); + margin-right: 8px; +} +.post-list .post-card .meta.cap >span+span { + margin-left: 1.5rem; +} +.post-list .post-card .meta.cap span.pin img { + object-fit: contain; +} +.post-list .post-card .meta.cap span.pin svg { + color: #f44336; +} +.post-list.post .post-card:hover img { + filter: brightness(50%); +} +.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; + aspect-ratio: 2.4; +} +.post-list .post-card.post.photo .cover { + position: relative; + line-height: 0; +} +.post-list .post-card.post.photo .cover img { + width: 100%; + object-fit: cover; + aspect-ratio: 2.4; +} +.post-list .post-card.post.photo .cover .cover-info { + padding: 1.5rem 1rem; + position: absolute; + line-height: 1.2; + width: calc(100% - 1rem * 2); + --text-banner: #fff; + color: var(--text-banner); +} +.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: calc(17px + 7px); +} +@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: calc(17px + 4px); + } + .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: calc(17px + 4px); +} +.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; + margin: 1rem 3rem; + align-items: center; +} +.post-list .post-card.wiki article .preview img { + width: 96px; + max-height: 96px; + 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 .caps { + line-height: 1; + margin-bottom: 0.75rem; +} +.post-list .post-card.wiki article .excerpt .cap { + --theme-block: var(--block); + background: var(--theme-block); + padding: 2px 4px; + border-radius: 2px; +} +.post-list .post-card.wiki article .excerpt p:last-child { + margin-bottom: 0; +} +.post-list .post-card.wiki article .excerpt .cap+.cap { + margin-left: 4px; +} +@media screen and (max-width: 500px) { + .post-list.archives { + margin: 1rem 0; + } +} +.l_main { + position: relative; + padding-bottom: var(--gap-max); +} +@media screen and (min-width: 667px) { + .l_main { + padding-top: 8px; + } +} +.l_main header { + margin: 2rem 1rem 1rem; +} +.l_main header .logo-wrap { + margin: 0; +} +@media screen and (max-width: 667px) { + .l_body.index .l_main { + padding-top: 0; + } +} +body>.sitebg { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-size: cover; +} +body>.sitebg .siteblur { + width: 100%; + height: 100%; + background: var(--blur-bg); + --blur-px: 100px; + --blur-bg: var(--alpha75); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + body>.sitebg .siteblur { + background: var(--blur-bg) !important; + backdrop-filter: saturate(200%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(200%) blur(var(--blur-px)); + } +} +body>.sitebg .siteblur:hover { + background: var(--card); +} +.md-text { + max-width: 100%; + padding: 1rem; + color: var(--text-p1); + line-height: 1.6; + word-break: break-word; +} +.md-text.excerpt p { + font-size: 0.875rem; + margin: 1em 0; +} +.md-text.content { + position: relative; + padding-top: 0; + padding-bottom: 2rem; + overflow: hidden; +} +.l_body[text-indent] .md-text.content p:not([class]) { + text-indent: calc(var(--fsp) * 2); + text-align: justify; +} +.l_body[text-indent] .md-text.content p:not([class]) a { + text-indent: 0; +} +.l_body[text-indent] .md-text.content ol, +.l_body[text-indent] .md-text.content ul { + margin-left: 0.5em; +} +.l_body[text-indent] .md-text.content h1, +.l_body[text-indent] .md-text.content h2, +.l_body[text-indent] .md-text.content h3, +.l_body[text-indent] .md-text.content h4, +.l_body[text-indent] .md-text.content h5, +.l_body[text-indent] .md-text.content h6 { + text-align: center; +} +.l_body[text-indent] .md-text.content h1 >a:first-child, +.l_body[text-indent] .md-text.content h2 >a:first-child, +.l_body[text-indent] .md-text.content h3 >a:first-child, +.l_body[text-indent] .md-text.content h4 >a:first-child, +.l_body[text-indent] .md-text.content h5 >a:first-child, +.l_body[text-indent] .md-text.content h6 >a:first-child { + display: none; +} +.l_body[text-indent] .md-text.content h2 { + margin: 2em 0 1.5em; +} +.l_body[text-indent] .md-text.content blockquote p:not([class]), +.l_body[text-indent] .md-text.content .poetry p:not([class]), +.l_body[text-indent] .md-text.content .okr p:not([class]), +.l_body[text-indent] .md-text.content .timeline p:not([class]), +.l_body[text-indent] .md-text.content li p:not([class]), +.l_body[text-indent] .md-text.content .article-footer p:not([class]) { + text-indent: 0; + text-align: left; +} +.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 { + --fsp: calc(17px - 1px); + font-size: var(--fsp); + 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 h1, +.md-text.content h2, +.md-text.content h3, +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + color: var(--text); + line-height: 1.8; +} +.md-text.content h1 >a:first-child, +.md-text.content h2 >a:first-child, +.md-text.content h3 >a:first-child, +.md-text.content h4 >a:first-child, +.md-text.content h5 >a:first-child, +.md-text.content h6 >a:first-child { + background: #1cd0fd; + border-radius: 2px; + margin-right: 8px; + 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; +} +.md-text.content h1 >a:first-child:hover, +.md-text.content h2 >a:first-child:hover, +.md-text.content h3 >a:first-child:hover, +.md-text.content h4 >a:first-child:hover, +.md-text.content h5 >a:first-child:hover, +.md-text.content h6 >a:first-child:hover { + background: #ff5724; +} +.md-text.content h1 >a:first-child:before, +.md-text.content h2 >a:first-child:before, +.md-text.content h3 >a:first-child:before, +.md-text.content h4 >a:first-child:before, +.md-text.content h5 >a:first-child:before, +.md-text.content h6 >a:first-child:before { + content: ''; + color: #fff; + font-weight: 700; + padding: 0 2px; + font-size: 0.75rem; +} +.md-text.content h2 { + font-weight: 500; +} +.md-text.content h2 >a:first-child:before { + content: ':'; +} +.md-text.content blockquote h2, +.md-text.content .tag-plugin h2, +.md-text.content blockquote h3, +.md-text.content .tag-plugin h3, +.md-text.content blockquote h4, +.md-text.content .tag-plugin h4, +.md-text.content blockquote h5, +.md-text.content .tag-plugin h5, +.md-text.content blockquote h6, +.md-text.content .tag-plugin h6 { + margin-top: 0.25em; + margin-bottom: 0.25em; +} +.md-text.content:first-child .tag-plugin:first-child { + margin-top: 0; +} +.md-text p { + font-size: var(--fsp); +} +.md-text pre { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} +.md-text pre.mermaid { + overflow: auto; +} +.md-text .center { + align-self: center; +} +.md-text>div { + margin: var(--gap-p) 0; +} +.md-text img { + border-radius: 12px; + margin: auto; + display: block; +} +li:not([class]) a:not([class]), +p:not([class]) a:not([class]), +table a:not([class]) { + position: relative; + text-decoration: none; + 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; + padding: 0 2px; + border-radius: 0; + color: inherit; + background: linear-gradient(0deg, var(--theme-link), var(--theme-link)) no-repeat left 100%/100% 1px; +} +li:not([class]) a:not([class]):hover, +p:not([class]) a:not([class]):hover, +table a:not([class]):hover { + text-decoration: none; + color: var(--theme-link); + border-radius: 4px; + background: linear-gradient(0deg, var(--theme-link-opa), var(--theme-link-opa)) no-repeat left 100%/100% 100%; +} +li:not([class]) a:not([class]):has(img), +p:not([class]) a:not([class]):has(img), +table a:not([class]):has(img) { + background: none; + padding: 0; +} +li:not([class]) a:not([class]):has(img):hover, +p:not([class]) a:not([class]):has(img):hover, +table a:not([class]):has(img):hover { + background: none; +} +.md-text .aplayer { + border-radius: 12px; +} +img.lazy { + transition: all 0.38s ease-out; + -moz-transition: all 0.38s ease-out; + -webkit-transition: all 0.38s ease-out; + -o-transition: all 0.38s ease-out; +} +img.lazy:not(.loaded) { + opacity: 0; +} +img.lazy.loaded, +img.lazy.error { + opacity: 1; +} +: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) !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[data-fancybox], +a[data-fancybox] { + cursor: zoom-in; +} +.highlight { + position: relative; +} +.highlight .code .copy-btn { + position: absolute; + top: 0; + right: 0; + padding: 0px 0.5rem; + font-weight: 700; + visibility: hidden; + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + background: var(--card); + display: block; + cursor: pointer; + margin-right: 4px; + margin-top: 4px; + border-radius: calc(12px - 4px); +} +.highlight:hover .code:before { + visibility: hidden; +} +.highlight:hover .copy-btn { + visibility: visible; +} +.highlight .code .copy-btn.success { + background: #3dc550; + color: #fff; + visibility: visible; +} +.highlight .code .copy-btn.warning { + background: #fa6400; + color: #fff; + visibility: visible; +} +.md-text .folding[child=codeblock] .code .copy-btn { + z-index: 1; + margin-right: 1rem; + border-radius: 8px; +} +.cmt-body.twikoo { + --twikoo-theme: #1cd0fd; + margin-top: 1.5rem; +} +.cmt-body.twikoo .tk-content .vemoji, +.cmt-body.twikoo .tk-content .tk-owo-emotion { + width: unset; + border-radius: 12px; + max-height: 24px; + max-width: 100px; + display: inline; + margin: 0 0.25em; +} +.cmt-body.twikoo .tk-content img { + max-width: 400px; + max-height: 400px; + border-radius: 12px; +} +.OwO .OwO-body { + background-color: var(--block) !important; + color: var(--text-p1) !important; +} +.OwO .OwO-body .OwO-items .OwO-item img { + max-height: 26px; + width: unset; +} +.twikoo .el-input-group__append, +.twikoo .el-input-group__prepend, +.twikoo .el-input__inner, +.twikoo .el-textarea__inner, +.twikoo .tk-preview-container { + border-color: var(--block-border); +} +.twikoo .el-input__inner:focus, +.twikoo .el-textarea__inner:focus { + border-color: var(--twikoo-theme) !important; +} +.twikoo .el-button:not(.el-button--primary):not(.el-button--text):active, +.twikoo .el-button:not(.el-button--primary):not(.el-button--text):focus, +.twikoo .el-button:not(.el-button--primary):not(.el-button--text):hover { + color: var(--twikoo-theme) !important; + border-color: var(--theme-link-opa) !important; + background-color: var(--block) !important; +} +.twikoo .el-button--primary.is-disabled:active, +.twikoo .el-button--primary.is-disabled:focus, +.twikoo .el-button--primary.is-disabled:hover { + background-color: var(--theme-link-opa) !important; +} +.twikoo .el-button:focus, +.twikoo .el-button:hover { + border-color: var(--theme-link-opa); +} +.twikoo .el-button:active { + color: var(--twikoo-theme); + border-color: var(--twikoo-theme); +} +.twikoo .el-button.is-active, +.twikoo .el-button.is-plain:active { + color: var(--twikoo-theme); + border-color: var(--twikoo-theme); +} +.twikoo .el-button--primary { + background-color: var(--twikoo-theme); + border-color: var(--twikoo-theme) !important; +} +.twikoo .el-button--primary:focus, +.twikoo .el-button--primary:hover { + background: #ff5724; + border-color: #ff5724 !important; +} +.twikoo .el-button--primary:active { + background: var(--twikoo-theme); + border-color: var(--twikoo-theme); +} +.twikoo .el-button--primary.is-active { + background: var(--twikoo-theme); + border-color: var(--twikoo-theme); +} +.twikoo .el-button--primary.is-disabled, +.twikoo .el-button--primary.is-disabled:active, +.twikoo .el-button--primary.is-disabled:focus, +.twikoo .el-button--primary.is-disabled:hover { + background-color: var(--theme-link-opa) !important; + border-color: var(--theme-link-opa) !important; +} +.twikoo .el-button--primary.is-plain { + color: var(--twikoo-theme) !important; + border-color: var(--theme-link-opa); +} +.twikoo .el-button--primary.is-plain:focus, +.twikoo .el-button--primary.is-plain:hover { + background: var(--twikoo-theme) !important; + border-color: var(--twikoo-theme); +} +.twikoo .el-button--primary.is-plain:active { + background: var(--twikoo-theme) !important; + border-color: var(--twikoo-theme); +} +.twikoo .tk-action-icon svg { + color: var(--text-p2); +} +.twikoo .tk-action-link { + color: var(--text-p1); +} +.twikoo .tk-action-link:hover { + color: var(--twikoo-theme); +} +.twikoo .el-loading-spinner .path { + stroke: var(--twikoo-theme); +} +.twikoo .tk-icon.__comments { + color: var(--twikoo-theme); +} +.twikoo b, +.twikoo strong { + color: var(--text-p1); +} +.twikoo a { + cursor: pointer; +} +.twikoo .tk-time, +.twikoo .tk-extras { + color: var(--text-p3); +} +.twikoo .tk-expand { + width: auto; + border: none; + padding: 6px 2rem; + border-radius: 12px; + background: var(--block-hover); + color: var(--text-p1); + line-height: 2; + font-size: 14px; + font-weight: 500; + 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; +} +.twikoo .tk-expand:hover { + background: var(--card); +} +.twikoo .tk-comment { + margin-top: 0; + margin-bottom: 1rem; + border: 1px dashed var(--block-border); + padding: 1rem; + border-radius: 12px; + background: var(--block); +} +.twikoo .tk-comment:hover { + border-color: var(--twikoo-theme); +} +.twikoo .tk-main .tk-comment { + margin-top: 1rem; + margin-bottom: 0; +} +.twikoo .tk-submit { + padding: 1rem 1rem 0 1rem; + border-radius: 12px; + background: var(--block); +} +.twikoo .tk-tag { + vertical-align: 0.1em; +} +.twikoo .tk-tag-green { + border: none; + background-color: var(--theme-link-opa); + color: var(--twikoo-theme); +} +.twikoo .tk-comments-title .tk-comments-count { + margin-top: 15px; + color: var(--text-p1); +} +.twikoo .tk-comments-title .tk-comments-count span:nth-child(1) { + font-size: 1.5rem; + font-weight: 700; +} +.twikoo .tk-comments-title .tk-comments-count span:nth-child(2) { + font-size: 1rem; +} +.twikoo .tk-comments-no { + color: var(--text-p1); +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..9994fb7a --- /dev/null +++ b/index.html @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + Ekyfig's blog + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+

解决Alist移动云盘到期失效问题

原理抓取移动云盘APP的authorization,因为手机APP的登录有效日期比web端长得多。 +教程 +手机安装Reqable,并安装证书 +开始抓包,同时打开移动云盘,切换到”文件” +停止抓包,在记录里寻找authorization + + +如果你是旧...

Guide
+
+

我的选择,我的梦想

+化用雷军演讲的标题,是觉得这个选择对塑造现在的我非常重要。至于调换顺序,是因为当时的我一心觉得能进好的高中就不错了,是阶段的最终目标(就像高三觉得能进好大学就行,以后路不管,反正进更好的大学以后路肯定更光明) 所以选择在前。这篇文章可能基于模糊的记...

Log
+
+

退烧!

没想到啊,又是一场时间短、剧烈变化的闹剧,不过好在结果是退烧了。首先是周一晚上,我想清楚了:我感到魂不守舍和那些人畜无害的日常篇没有关系(当时我还没觉得皮皮多好看),只与主线篇有关接着觉得皮皮越看越可爱,做成壁纸。接着周二在盗版网站上看了辟邪和瓦猫两...

Log
+
+

有刀焉

⚠️⚠️⚠️宇宙安全声明: 这周刚考了半期,心情不好,对兽圈了解不多,以下内容纯属吃饱了没事干,不要上纲上线🔪🔪🔪之前有同学在午间分享时讲过有兽焉,当时看着觉得就是个可爱的国漫昨晚想着换下口味,反正这部剧应该不需要带脑子看,结果!前面几集还好,...

Log
+
+

2024年10月总结

+写在前面很快啊,已经开学两个多月了。想想刚开学时的炎热难眠,转眼已是寒风刺骨了。 +总述“这个月是个正常月~”相比开学第一月的迷茫和无所适从有所改善,但仍有以下不足,总之so-called改革成效甚微,不过有值得欣慰的优势学科复健,以及赋分制的满满恶...

Log
+
+

xaga类原生指南

前言: xaga的类原生丰富度有今天,离不开各位大佬的无私奉献,在这里一并表示感谢🙏 +A12通病 + +几乎所有ROM为了解决GMS登录和同步问题都用的build vendor,所以是SELinux宽容状态,除了Kaleiscope0815和Crdr...

Guide
+
+

也许最简单的图床方案

一篇 水💧 文~在Alist上传图片,然后选择复制链接,在Markdown中直接把这个链接作为图片URL就行了。而且Alist有很完善的文件管理功能 +优点对于无法提取直链的网盘也能用 +缺点 +可能会因为多地使用而风控? (使用代理下载可解,但是可能加...

Guide
+
+

小米手环9NFC简评

+闲话这一代手环确实卖得好,除了黑色其他颜色官方渠道都查不到,第三方店铺都得加价,首发买的成了最便宜的😄小米商城配送前一天晚上还显示黑色有货,第二天早上就是全部到货通知了。我是在小米之家自提的,店员说是最后一个了,提货后小米商城也确实显示这家店缺货...

Review
+
+

也许更简单的Vaultwarden部署教程

可以选择的方式运行Vaultwarden有两种方式:直接运行二进制和docker运行,显然后者更方便,前者也需要先pull docker镜像再从里面提取。配置有好几种方式:docker命令、docker compose、环境文件(.env)、管理面板...

Guide
+
+

2024年9月总结

+高三的第一个月结束了,貌似应该写点总结。 +月考考前感觉明明有计划,但是就是不想复习。举个例子,本来古诗文肯定是要背的,但是又想着先做其他的或者感觉状态不好背得很慢,最后连文言文都没背完,还好这次考得简单。生化复习刷新底线,连过一遍都没过完。 +考中以...

Log
+
+ +
+ 12 +
+ + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/js/main.js b/js/main.js new file mode 100644 index 00000000..4894426a --- /dev/null +++ b/js/main.js @@ -0,0 +1,210 @@ +// 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 + + let result + if (more) { + const dayCount = dateDiff / day + const hourCount = dateDiff / hour + const minuteCount = dateDiff / minute + + if (dayCount > 14) { + result = null + } else if (dayCount >= 1) { + result = parseInt(dayCount) + ' ' + ctx.date_suffix.day + } else if (hourCount >= 1) { + result = parseInt(hourCount) + ' ' + ctx.date_suffix.hour + } else if (minuteCount >= 1) { + result = parseInt(minuteCount) + ' ' + ctx.date_suffix.min + } else { + result = ctx.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, 2500); + } + } + }, + + toggle: (id) => { + const el = document.getElementById(id); + if (el) { + el.classList.toggle("display"); + } + }, + + scrollTop: () => { + window.scrollTo({top: 0, behavior: "smooth"}); + }, + + scrollComment: () => { + document.getElementById('comments').scrollIntoView({behavior: "smooth"}); + }, + + viewportLazyload: (target, func, enabled = true) => { + if (!enabled || !("IntersectionObserver" in window)) { + func(); + return; + } + const observer = new IntersectionObserver((entries) => { + if (entries[0].intersectionRatio > 0) { + func(); + observer.disconnect(); + } + }); + observer.observe(target); + } +} + +const hud = { + toast: (msg, duration) => { + const d = Number(isNaN(duration) ? 2000 : duration); + var el = document.createElement('div'); + el.classList.add('toast'); + el.classList.add('show'); + el.innerHTML = msg; + document.body.appendChild(el); + + setTimeout(function(){ document.body.removeChild(el) }, d); + + }, + +} + +// defines + +const l_body = document.querySelector('.l_body'); + + +const init = { + toc: () => { + utils.jq(() => { + const scrollOffset = 32; + var segs = []; + $("article.md-text :header").each(function (idx, node) { + segs.push(node); + }); + function activeTOC() { + 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"); + } + } else { + $('#data-toc a.toc-link:first').addClass("active"); + } + } + } + function scrollTOC() { + const e0 = document.querySelector('#data-toc .toc'); + const e1 = document.querySelector('#data-toc .toc a.toc-link.active'); + if (e0 == null || e1 == null) { + return; + } + const offsetBottom = e1.getBoundingClientRect().bottom - e0.getBoundingClientRect().bottom + 100; + const offsetTop = e1.getBoundingClientRect().top - e0.getBoundingClientRect().top - 64; + if (offsetTop < 0) { + e0.scrollBy({top: offsetTop, behavior: "smooth"}); + } else if (offsetBottom > 0) { + e0.scrollBy({top: offsetBottom, behavior: "smooth"}); + } + } + + var timeout = null; + window.addEventListener('scroll', function() { + activeTOC(); + if(timeout !== null) clearTimeout(timeout); + timeout = setTimeout(function() { + scrollTOC(); + }.bind(this), 50); + }); + }) + }, + sidebar: () => { + utils.jq(() => { + $("#data-toc a.toc-link").click(function (e) { + sidebar.dismiss(); + }); + }) + }, + 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() diff --git a/js/plugins/copycode.js b/js/plugins/copycode.js new file mode 100644 index 00000000..3f3f62a4 --- /dev/null +++ b/js/plugins/copycode.js @@ -0,0 +1,32 @@ +window.codeElements.forEach((codeElement) => { + // 创建复制按钮 + const codeCopyBtn = document.createElement('div'); + codeCopyBtn.className = 'copy-btn'; + codeCopyBtn.textContent = ctx.copycode.default_text; + codeElement.appendChild(codeCopyBtn); + + // 添加点击事件监听 + codeCopyBtn.addEventListener('click', async () => { + const codeToCopy = codeElement.querySelector('pre')?.innerText || ''; + if (navigator.clipboard) { + try { + await navigator.clipboard.writeText(codeToCopy); + codeCopyBtn.textContent = ctx.copycode.success_text; + codeCopyBtn.classList.add('success'); + hud.toast(ctx.copycode.toast, 2500); + } catch (error) { + codeCopyBtn.textContent = '未获得用户许可'; + codeCopyBtn.classList.add('warning'); + } + } else { + codeCopyBtn.textContent = '浏览器不支持/非HTTPS'; + codeCopyBtn.classList.add('warning'); + } + + // 3秒后恢复默认文本 + setTimeout(() => { + codeCopyBtn.textContent = ctx.copycode.default_text; + codeCopyBtn.classList.remove('success', 'warning'); + }, 3000); + }); +}); \ No newline at end of file diff --git a/js/search/algolia-search.js b/js/search/algolia-search.js new file mode 100644 index 00000000..2398bf01 --- /dev/null +++ b/js/search/algolia-search.js @@ -0,0 +1,75 @@ +utils.jq(() => { + var $inputArea = $("input#search-input"); + if ($inputArea.length === 0) { + return; + } + + var $resultArea = $("#search-result"); + var $searchWrapper = $("#search-wrapper"); + var client = algoliasearch(window.searchConfig.appId, window.searchConfig.apiKey); + var index = client.initIndex(window.searchConfig.indexName); + + function filterResults(hits, filterPath) { + if (!filterPath || filterPath === '/') return hits; + var regex = new RegExp(filterPath); + return hits.filter(hit => regex.test(hit.url)); + } + + function displayResults(hits) { + var $resultList = $("