diff --git a/2023/12/02/math_01/index.html b/2023/12/02/math_01/index.html new file mode 100644 index 0000000..0f56c64 --- /dev/null +++ b/2023/12/02/math_01/index.html @@ -0,0 +1,519 @@ + + + + + + + + + + + + + + + + + + + + + + + 三大微分中值定理 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ 发布于  + + 更新于  +
+ +
+

三大微分中值定理

+

收录:计算机数学故事
+作者:YY同学Serendipity
+绘图:勤奋的三塔同学🍊

+

简述

+
+

微分中值定理包括罗尔中值定理、拉格朗日中值定理和柯西中值定理,较多出现在证明题中,该知识点往往考察联想记忆以及灵活运用定理的能力,整体难度中。

+
+

一、罗尔(Rolle)中值定理

+

1. 定义

+
+

如果函数满足以下三个条件:
+1. 在闭区间 上连续
+2. 在开区间 上可导
+3.
+
则在 内有一点 ,满足

+
+

2. 证明

+
+

如果 是常函数,则显然恒存在 +
如果 不是常函数,假设在 处取到 ,则
+ +因为 可导,即 +所以得证

+
+

3. 几何意义

+
+

一定存在一条绿线(函数的切线)与 轴平行,如图:

+
+

二、拉格朗日(Lagrange)中值定理

+

1. 定义

+
+

如果函数满足以下两个条件:
+1. 在闭区间 上连续
+2. 在开区间 上可导
+
则在 内有一点 ,满足

+
+

2. +证明(采用函数构造法+罗尔定理)

+
+

我们先不急着证明,先观察定理的结论。我们会发现,如果将结论进行一下变形: + +其结果是不是很像罗尔定理最后 的结论,因此我们需要构造函数 + 使 尽量与上式左边相同。我们将含有 + 的项当作自变量 然后积分找到 这样 +然后考虑罗尔定理应用的条件是需要找到 因此当 时有 根据罗尔定理,则在 内有一点 ,满足 因此 +变形之后即为拉格朗日中值定理的结论

+
+

3. 几何意义

+
+

一定存在一条切线,它的斜率等于线 的斜率(即两线平行),如图:
+

+
+

三、柯西(Cauchy)中值定理

+

1. 定义

+
+

如果函数满足以下两个条件:
+1. 在闭区间 上连续
+2. 在开区间 上可导且
+
则在 内有一点 ,满足

+
+

2. +证明(采用函数构造法+罗尔定理)

+
+

同理,受拉格朗日中值定理证明的启发,我们先给原式做变形: +然后积分找到 +当 时恰好有 + 所以根据罗尔定理有 + +变形之后即为柯西中值定理的结论,定理得证

+
+

3. 几何意义

+
+

一定存在一条绿线(函数的切线)与红线平行,如图:
+

+
+

小结

+
+

可能细心的同学已经发现了,对于微分中值定理其实有: +即拉格朗日中值定理是柯西中值定理 +时的特例,而罗尔中值定理也是拉格朗日中值定理 +时的特例。从几何意义上讲,一定能找到与两个端点连线相平行的函数切线。这三个定理是从特殊情况推广到一般情况,如果理解了这些,相信大家也能很快地记住这三个非常重要的定理。

+
+ + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/2023/12/04/math_02/index.html b/2023/12/04/math_02/index.html new file mode 100644 index 0000000..989f0ce --- /dev/null +++ b/2023/12/04/math_02/index.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + + + + + + + 常见积分方法 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ 发布于  + + 更新于  +
+ +
+

常见积分方法

+

收录:计算机数学故事
+作者:YY同学Serendipity

+

一、积分表法(常用)

+
+
    +
  1. +
  2. +
  3. +
  4. +
  5. +
  6. +
  7. +
  8. +
  9. +
  10. +
  11. +
  12. +
  13. +
  14. +
  15. +
  16. +
  17. +
  18. +
  19. +
+
+

二、换元法

+

1. 第一换元积分法(右合法)

+
+

将积分左边的子式凑成积分变量右侧所需的变元,从而改变积分变量,例如 +

+
+

2. 第二换元积分法(左拆法)

+
+

将积分变量直接换元,然后将新变元拆到左侧,例如

+
+

3. 三角换元法

+
+

将积分变量变换为三角函数形式,例如 +替换,,得 +

+
+

三、分部积分法

+
+

的原函数,则有 该公式可由乘法求导的链式法则推导出 +两边积分 移项后有

+
+

四、有理函数积分法(多项式分式积分法)

+
+

将分式拆成分式多项式和的形式,例如: 然后就可以分别积分求解啦~ +但是请注意:使用这种方法的前提条件是函数是有理分式,即分子分母部分必须是含 + +的多次多项式。并且最后分母多项式需要能够进行因式分解,例如例子中

+
+ + + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..5b781c3 --- /dev/null +++ b/404.html @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

404

+

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

+

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

+

+ 返回主页 +
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/2023/12/index.html b/archives/2023/12/index.html new file mode 100644 index 0000000..9216a01 --- /dev/null +++ b/archives/2023/12/index.html @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/2023/index.html b/archives/2023/index.html new file mode 100644 index 0000000..32e380a --- /dev/null +++ b/archives/2023/index.html @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..e5b1c37 --- /dev/null +++ b/archives/index.html @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + 归档 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..f187862 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + + + + + + + + + + + + 分类 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + +
+ +
+ + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git "a/categories/\350\256\241\347\256\227\346\234\272\346\225\260\345\255\246\346\225\205\344\272\213/index.html" "b/categories/\350\256\241\347\256\227\346\234\272\346\225\260\345\255\246\346\225\205\344\272\213/index.html" new file mode 100644 index 0000000..ce60685 --- /dev/null +++ "b/categories/\350\256\241\347\256\227\346\234\272\346\225\260\345\255\246\346\225\205\344\272\213/index.html" @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + 分类:计算机数学故事 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + + + +
+
计算机数学故事
常见积分方法
作者:YY同学Serendipity
+
+
计算机数学故事
三大微分中值定理
作者:YY同学Serendipity
+
+ + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..f5e8db8 --- /dev/null +++ b/css/main.css @@ -0,0 +1,5362 @@ +:root { + --width-left: 288px; + --width-main: 720px; + --gap-l: 16px; + --gap-p: 1rem; + --gap-p-compact: 0.75rem; +} +@media screen and (min-width: 2048px) { + :root { + --gap-l: 32px; + --width-left: 352px; + --width-main: 780px; + } +} +@media screen and (min-width: 2560px) { + :root { + --width-main: 860px; + --gap-l: 64px; + } +} +@media screen and (max-width: 768px) { + :root { + --width-left: 252px; + } +} +@media screen and (max-width: 667px) { + :root { + --width-left: 288px; + } +} +:root { + --site-bg: #f9fafb; + --card: #fff; + --block: #f1f2f3; + --block-border: #e3e5e8; + --block-hover: #e9eaec; + --text-p0: #000; + --text-p1: #333; + --text-p2: #4d4d4d; + --text-p3: #808080; + --text-p4: #999; + --text-meta: #ccc; + --text-code: #f53900; + --theme-link: #2094f3; +} +@media (prefers-color-scheme: dark) { + :root { + --site-bg: #1c1e21; + --card: #373d43; + --block: #26292c; + --block-border: #383d42; + --block-hover: #2f3337; + --text-p0: #fff; + --text-p1: #ccc; + --text-p2: #b3b3b3; + --text-p3: #858585; + --text-p4: #707070; + --text-meta: #4d4d4d; + --text-code: #ff6333; + } +} +@media screen and (prefers-color-scheme: dark) and (max-width: 667px) { + :root { + --site-bg: #000; + } +} +pre { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-size: 0.8125rem; + tab-size: 4; + -moz-tab-size: 4; + -o-tab-size: 4; + -webkit-tab-size: 4; +} +a { + text-decoration: none; + color: var(--theme-link); +} +a:hover { + color: #ff5724; +} +.md-text p:not([class]) { + text-align: left; +} +hr { + color: var(--text-meta); + opacity: 0.1; +} +img { + max-width: 100%; +} +li { + font-size: 0.9375rem; +} +ul, +ol { + padding-left: 1.5rem; +} +table:not([class]) { + border-collapse: collapse; + overflow: auto; + display: block; + margin: 1rem 0; + max-width: 100%; + vertical-align: text-top; + font-size: 0.875rem; +} +table:not([class]) th { + background: var(--block); +} +table:not([class]) td, +table:not([class]) th { + padding: 0.5em 1em; + border: 1px solid var(--block-hover); + line-height: 1.5; +} +table:not([class]) tr { + word-break: keep-all; + white-space: nowrap; +} +table:not([class]) tr:hover { + background: var(--block); +} +*[ff=title] { + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; +} +blockquote { + display: block; + margin-left: 0; + margin-right: 0; + padding: 0.25rem 0.75rem; + background: var(--block); + border-left: 4px solid var(--text-meta); + border-radius: 4px 6px 6px 4px; + color: var(--text-p2); +} +:root { + --blur-px: 12px; + --blur-bg: rgba(255,255,255,0.5); +} +@media (prefers-color-scheme: dark) { + :root { + --blur-bg: rgba(0,0,0,0.5); + } +} +.blur { + background: var(--blur-bg); +} +@supports ((-webkit-backdrop-filter: blur(var(--blur-px))) or (backdrop-filter: blur(var(--blur-px)))) { + .blur { + background: var(--blur-bg) !important; + backdrop-filter: saturate(200%) blur(var(--blur-px)); + -webkit-backdrop-filter: saturate(200%) blur(var(--blur-px)); + } +} +.blur:hover { + background: var(--card); +} +button { + border: none; + font-weight: 500; + outline: none; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + cursor: pointer; +} +a.button { + font-weight: 500; + line-height: 1; + padding: 0.75rem 2rem; + border-radius: 4px; + font-size: 0.9375rem; + user-select: none; +} +a.button.theme { + background: #1cd0fd; + color: var(--card); +} +a.button.theme:hover { + background: #ff5724; +} +a.button.start { + border-radius: 100px; + background: var(--text-p1); + color: var(--card); +} +a[onclick]:hover { + cursor: pointer; +} +a.button.start.gradient { + transition: 0.38s ease-out; + position: relative; + z-index: 0; + background: linear-gradient(to right, #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; +} +a.button.start.gradient:after { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + border-radius: 100px; + background: inherit; + z-index: -1; + filter: blur(36px); + transition: 0.38s ease-out; + opacity: 0; +} +a.button.start.gradient:hover:after { + opacity: 1; +} +@-moz-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@-webkit-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@-o-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +@keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 1000%; + } +} +.cap { + font-weight: 500; + font-size: 0.75rem; + scrollbar-width: none; + color: var(--text-p3); +} +.cap.blue { + color: #0d87e9; +} +.cap.cyan { + color: #03c3f5; +} +.cap.theme { + color: #03cafc; +} +.dis-select { + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; +} +.mobile-only { + display: none; +} +@media screen and (max-width: 667px) { + .mobile-only { + display: block !important; + } +} +@media screen and (max-width: 667px) { + .mobile-hidden { + display: none !important; + } +} +.float-panel { + position: sticky; + right: 0; + bottom: 2rem; + float: right; + z-index: 10; + display: flex; + border-radius: 2rem; + margin-right: 1rem; + overflow: hidden; + --blur-px: 16px; + --blur-bg: rgba(255,255,255,0.4); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; +} +@media (prefers-color-scheme: dark) { + .float-panel { + --blur-bg: rgba(0,0,0,0.4); + } +} +.sidebar-toggle.mobile { + cursor: pointer; + color: var(--text-p0); + background: none; + padding: 0.5rem; + line-height: 0; + font-size: 20px; + margin: 0; +} +.l_body.mobile.sidebar .float-panel { + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1); + transform: translateY(-2px); +} +.l_body.mobile.sidebar .sidebar-toggle.mobile { + background: var(--card); + color: #ff5724; + border-color: var(--block-border); +} +code { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; +} +p>code:not([class]), +li>code:not([class]) { + font-size: 85%; + background: var(--block); + padding: 0.2em; + border-radius: 4px; + color: var(--text-code); +} +.md-text .highlight, +pre:not([class]):has(>code) { + margin: var(--gap-p) 0; + border-radius: 12px; + overflow: hidden; + background: var(--block); + line-height: 1.5; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + box-sizing: border-box; +} +@media screen and (min-width: 500px) { + .md-text .highlight, + pre:not([class]):has(>code) { + min-width: 180px; + } +} +.md-text .highlight { + position: relative; + overflow: auto; + display: block; +} +.md-text .highlight figcaption { + color: var(--text-p2); + font-size: 0.8125rem; + font-weight: 500; + margin-left: 0.5rem; + display: inline-block; +} +.md-text .highlight figcaption span { + padding: 4px 0.5rem; + display: block; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + background: var(--block-hover); +} +.md-text .highlight >table { + overflow: auto; + display: block; + margin: 0 !important; + background: transparent; + border: none; +} +.md-text .highlight >table td, +.md-text .highlight >table th { + padding: 0; + border: none; + line-height: 1.5; +} +.md-text .highlight >table::-webkit-scrollbar { + height: 4px; + width: 4px; +} +.md-text .highlight >table::-webkit-scrollbar-track-piece { + background: transparent; +} +.md-text .highlight >table::-webkit-scrollbar-thumb { + background: transparent; + cursor: pointer; + border-radius: 6px; +} +.md-text .highlight >table:hover::-webkit-scrollbar-thumb { + background: var(--text-meta); +} +.md-text .highlight >table:hover::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.md-text .highlight >table tr { + background: transparent; +} +.md-text .highlight >table tr:hover { + background: transparent; +} +.md-text .highlight .gutter { + pointer-events: none; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + text-align: right; + padding: 0 1em; + border-width: 0; + margin-left: 0; + left: 0; + z-index: 1; +} +.md-text .highlight .gutter pre .line { + color: var(--text-p4); +} +.md-text .highlight .code pre { + display: block; + padding: 0.5em 1rem; +} +.md-text .highlight .gutter+.code pre { + padding-left: 0.25em; +} +.md-text .gist .gist-file { + border: 1px solid var(--block-border); + border-radius: 12px; +} +.md-text .gist .gist-data { + border-bottom: 1px solid var(--block-border); +} +.md-text .gist .highlight { + display: inherit; + border: none; + border-radius: 0; + background: none; + margin: 0; + padding: 1em 0; +} +.md-text .gist .gist-meta { + background: var(--block-border); +} +table:not([class]) { + border-collapse: collapse; +} +.md-text pre >.caption { + color: var(--text-p3); +} +.md-text pre >.hljs { + padding: 1rem; + border-radius: 12px; + line-height: 1.5; + box-sizing: border-box; +} +.md-text .highlight .code { + vertical-align: top; +} +.md-text .highlight .code:before { + position: absolute; + top: 0; + right: 0; + padding: 4px 0.5rem; + opacity: 0.25; + font-weight: 700; + color: var(--theme); +} +.md-text .highlight.yaml .code:before { + content: "YAML"; +} +.md-text .highlight.json .code:before { + content: "JSON"; +} +.md-text .highlight.diff .code:before { + content: "diff"; +} +.md-text .highlight.html .code:before { + content: "HTML"; +} +.md-text .highlight.js .code:before, +.md-text .highlight.javascript .code:before { + content: "JS"; +} +.md-text .highlight.css .code:before { + content: "CSS"; +} +.md-text .highlight.less .code:before { + content: "Less"; +} +.md-text .highlight.stylus .code:before { + content: "Stylus"; +} +.md-text .highlight.bash .code:before { + content: "bash"; +} +.md-text .highlight.shell .code:before { + content: "shell"; +} +.md-text .highlight.sh .code:before { + content: "sh"; +} +.md-text .highlight.ini .code:before { + content: "ini"; +} +.md-text .highlight.c .code:before { + content: "C"; +} +.md-text .highlight.cpp .code:before { + content: "C++"; +} +.md-text .highlight.objc .code:before, +.md-text .highlight.objectivec .code:before { + content: "Objective-C"; +} +.md-text .highlight.swift .code:before { + content: "Swift"; +} +.md-text .highlight.java .code:before { + content: "Java"; +} +.md-text .highlight.python .code:before { + content: "Python"; +} +.md-text .highlight.php .code:before { + content: "PHP"; +} +.md-text .highlight.rust .code:before, +.md-text .highlight.rs .code:before { + content: "Rust"; +} +.md-text .highlight.sql .code:before { + content: "SQL"; +} +.md-text .highlight.ruby .code:before { + content: "Ruby"; +} +.md-text .highlight.makefile .code:before { + content: "Makefile"; +} +.md-text .highlight.go .code:before { + content: "Go"; +} +.md-text .highlight.typescript .code:before, +.md-text .highlight.ts .code:before { + content: "TS"; +} +.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-behavior: smooth; +} +body { + background: var(--site-bg); + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizelegibility; + -webkit-tap-highlight-color: rgba(0,0,0,0); +} +div.lazy.img { + width: 100%; + height: 100%; + background-position: center; + background-size: cover; +} +input { + background: none; + border: none; +} +input.copy-area { + display: block; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-size: 0.75rem; + font-weight: 700; + color: var(--text-p3); +} +svg.loading { + display: block; + position: absolute; + color: var(--text-p3); + z-index: -1; + width: 100%; + height: 2rem; + margin: auto; + animation: spin infinite 2s; + animation-timing-function: linear; +} +@-moz-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-o-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +.loading-wrap { + margin: 0; + text-align: center; + background: var(--block); + border-radius: 12px; + position: relative; + padding: 2rem; +} +.loading-wrap svg { + margin: 4px; +} +.loading-wrap:after { + content: '正在加载'; + color: var(--text-p1); + display: block; + font-size: 14px; +} +.loading-wrap.error:after { + content: '加载失败,请稍后重试。'; +} +pre:not([class]):has(>code) { + display: block; + padding: 1rem; + overflow: auto; +} +pre:not([class]):has(>code) code { + padding: 0; +} +span.dot, +span.sep { + font-size: 0.9em; + margin: 0 0.25em; +} +span.dot:before { + content: '·'; + font-weight: 900; +} +span.sep:before { + content: '/'; + padding-left: 2px; + padding-right: 2px; +} +svg.icon { + width: 1em; + height: 1em; + vertical-align: middle; + fill: currentColor; + overflow: hidden; +} +h1, +.h1 { + font-size: 2rem; + font-weight: 700; +} +@media screen and (max-width: 500px) { + h1, + .h1 { + font-size: 2rem; + } +} +h2, +.h2 { + font-size: 1.75rem; +} +h3, +.h3 { + font-size: 1.375rem; +} +h4, +.h4 { + font-size: 1.125rem; +} +h5 { + font-size: 0.9375rem; +} +h6 { + font-size: 0.75rem; +} +.fs14 { + font-size: 0.875rem; +} +.fs14 p { + font-size: 0.875rem !important; +} +.fs14 li { + font-size: 0.875rem !important; +} +.fs12 { + font-size: 0.75rem; +} +.widgets .post-title { + margin: 0.75rem 0; + line-height: 1.2; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.widgets .post-title .cap { + margin-bottom: 2px; + opacity: 0.5; +} +.widgets .post-title a { + color: inherit; + font-weight: 500; +} +.widgets .post-title a:hover { + color: #ff5724; +} +div.toast { + max-width: 60%; + padding: 1rem 3rem; + line-height: 1.5; + color: var(--text-p1); + font-weight: 500; + text-align: center; + border-radius: 12px; + background: var(--card); + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 9; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1); +} +:root { + --heo-none: rgba(0,0,0,0); + --heo-main: var(--theme-link); + --heo-snackbar-time: 5s; + --heo-theme-none: rgba(66,89,239,0.004); + --heo-background: var(--site-bg); + --heo-hovertext: var(--text-code); + --heo-secondtext: var(--text-p0); + --heo-scrollbar: rgba(60,60,67,0.4); + --heo-secondbg: var(--block); + --heo-card-bg: var(--block); + --heo-card-bg-none: rgba(255,255,255,0); + --heo-card-border: var(--block-border); + --heo-shadow-border: 0 8px 16px -4px rgba(44,45,48,0.047); + --style-border: 1px solid var(--heo-card-border); + --style-border-always: 1px solid var(--heo-card-border); +} +.post-TianliGPT { + background: var(--block); + border-radius: 12px; + padding: 12px; + line-height: 1.3; + border: var(--style-border-always); + margin: 16px 0; +} +@media screen and (max-width: 768px) { + .post-TianliGPT .post-TianliGPT { + margin-top: 22px; + } +} +.tianliGPT-title { + display: flex; + color: var(--theme-link); + border-radius: 8px; + align-items: center; + padding: 0 12px; + cursor: default; + user-select: none; +} +.tianliGPT-title-text { + font-weight: bold; + margin-left: 8px; + line-height: 1; +} +.tianliGPT-explanation { + margin-top: 12px; + padding: 8px 12px; + background: var(--card); + border-radius: 8px; + border: var(--style-border-always); + font-size: 15px; + line-height: 1.4; + display: flex; +} +.tianliGPT-suggestions { + display: flex; + flex-wrap: wrap; +} +.tianliGPT-suggestions .tianliGPT-suggestions-item { + margin-top: 12px; + padding: 8px 12px; + background: var(--card); + border-radius: 8px 8px 8px 0; + border: var(--style-border-always); + font-size: 15px; + line-height: 1.4; + display: flex; + width: fit-content; + margin-right: 12px; + cursor: pointer; + transition: 0.3s; +} +.tianliGPT-suggestions .tianliGPT-suggestions-item:hover { + background: var(--heo-main); + color: var(--text-p0); +} +.blinking-cursor { + background-color: var(--heo-main); + width: 10px; + height: 16px; + display: inline-block; + vertical-align: middle; + animation: blinking-cursor 0.5s infinite; + -webkit-animation: blinking-cursor 0.5s infinite; + margin-left: 4px; +} +.tianliGPT-tag { + font-size: 12px; + background-color: var(--theme-link); + color: var(--card); + font-weight: bold; + border-radius: 4px; + margin-left: auto; + line-height: 1; + padding: 4px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: 0.3s; +} +.tianliGPT-tag:hover { + background: var(--text-p2); + color: var(--card); +} +ins.adsbygoogle { + margin: 16px 0; + background: var(--card); + border-radius: 12px; + overflow: hidden; + border: var(--style-border-always); +} +#tianliGPT-Toggle { + font-size: 12px; + background: var(--theme-link); + color: var(--card); + padding: 4px; + border-radius: 4px; + margin-left: 6px; + transform: scale(0.8); + cursor: pointer; + transition: 0.3s; + font-weight: bold; +} +#tianliGPT-Toggle:hover { + background: var(--block-hover); + color: var(--card); +} +.tianliGPT-title-icon { + width: 20px; + height: 20px; +} +.tianliGPT-title-icon svg { + width: 20px; + height: 20px; + fill: var(--heo-main); +} +.tianliGPT-title-icon svg path { + fill: var(--heo-main); +} +@-moz-keyframes blinking-cursor { + 0% { + opacity: 1; + } + 40% { + opacity: 1; + } + 50% { + opacity: 0; + } + 90% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-webkit-keyframes blinking-cursor { + 0% { + opacity: 1; + } + 40% { + opacity: 1; + } + 50% { + opacity: 0; + } + 90% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-o-keyframes blinking-cursor { + 0% { + opacity: 1; + } + 40% { + opacity: 1; + } + 50% { + opacity: 0; + } + 90% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes blinking-cursor { + 0% { + opacity: 1; + } + 40% { + opacity: 1; + } + 50% { + opacity: 0; + } + 90% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +.md-text .article-footer { + margin-top: 4rem; + padding: 1rem; + background: var(--block); + border-radius: 12px; + border: 1px solid var(--block-border); +} +.md-text .article-footer:empty { + display: none; +} +.md-text .article-footer .header { + font-weight: 500; + color: var(--text-p2); + font-size: 1.125rem; +} +.md-text .article-footer .body input.copy-area { + margin: 0.75rem 0; + padding: 0; + width: 100%; +} +.md-text .article-footer .body p { + color: var(--text-p2); + margin: 0.5em 0; +} +.md-text .article-footer .body p a { + font-weight: unset; +} +.md-text .article-footer .body ul { + margin: 0; + overflow: hidden; +} +.md-text .article-footer .body .post-title { + margin: 0.5rem 0; + line-height: 1.2; + word-break: break-all; +} +.md-text .article-footer section+section { + margin-top: 1rem; + padding-top: 1rem; + border-top: 1px solid var(--block-border); +} +.md-text .article-footer .social-wrap { + grid-gap: 0.5rem 1rem; + margin: 0; +} +.md-text .article-footer .qrcode { + width: 128px; + padding: 4px; + background: #fff; + border-radius: 4px; + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 0 32px 0px rgba(0,0,0,0.1); + overflow: hidden; + transition: height 0.2s ease-out; + -moz-transition: height 0.2s ease-out; + -webkit-transition: height 0.2s ease-out; + -o-transition: height 0.2s ease-out; +} +.md-text .article-footer .qrcode img { + object-fit: contain; +} +.md-text .article-footer .qrcode.display { + margin: 2rem auto 1rem; + height: 128px !important; + visibility: visible !important; +} +.bread-nav { + padding: 0.25rem 1rem 0; + color: var(--text-p3); + font-weight: 500; + display: flex; + justify-content: space-between; +} +.bread-nav div#breadcrumb { + display: flex; + align-items: center; + flex-direction: row; +} +.bread-nav div#breadcrumb:not([style]) a { + color: var(--theme-link); +} +.bread-nav div#breadcrumb[style] a { + color: inherit; +} +.bread-nav div#breadcrumb span.sep { + color: var(--text-p3); +} +.bread-nav div#breadcrumb a.cap:hover { + color: #ff5724; +} +.bread-nav div#post-meta { + margin-top: 2px; +} +.bread-nav div#post-meta span+span { + margin-left: 8px; + visibility: hidden; +} +.bread-nav:hover div#post-meta span+span { + 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-p2); +} +.bread-nav .ghrepo a svg { + margin-right: 4px; +} +.bread-nav .ghrepo a.bold { + font-weight: 600; + color: var(--text-p1); +} +.bread-nav .ghrepo a span { + margin-left: 4px; +} +.bread-nav .ghrepo a:hover { + color: var(--theme-link); +} +.bread-nav .ghrepo a+a { + margin-top: 8px; +} +.l_cover { + height: 100vh; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: relative; +} +.l_cover.post { + height: inherit; +} +.l_cover .cover-wrap { + margin-bottom: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.l_cover .cover-wrap .cover-title { + font-weight: 700; + font-size: 1.5rem; + margin: 1rem 0; + line-height: 1.2; +} +.l_cover .cover-wrap .description { + margin: 1rem 0; +} +.l_cover .cover-wrap .start-wrap { + margin: 2rem 0; + flex-shrink: 0; +} +.l_cover .cover-wrap .start-wrap a.start { + display: inline-block; +} +.l_cover.post .cover { + z-index: -1; + width: 100%; + height: 30vh; + max-width: 2048px; + min-height: 150px; + max-height: 400px; +} +@media screen and (max-width: 768px) { + .l_cover.post .cover { + height: 25vh; + } +} +@media screen and (max-width: 500px) { + .l_cover.post .cover { + height: 20vh; + } +} +@media screen and (min-width: 2048px) { + .l_cover.post .cover { + margin-top: 4rem; + } + .l_cover.post .cover .img { + border-radius: 2rem; + } +} +.l_cover.post .cover-wrap { + z-index: 1; +} +.l_cover.post .cover-wrap .article-title { + text-align: center; + padding: 1rem; + margin: 1em 0 0 0; +} +@media screen and (min-width: 2048px) { + .l_cover.post .cover-wrap .article-title { + font-size: 3rem; + } +} +.l_cover.wiki .cover-wrap { + max-width: 500px; +} +.l_cover.wiki .cover-wrap .preview { + margin-bottom: 2rem; +} +.l_cover.wiki .cover-wrap .preview img { + object-fit: contain; + max-height: 35vh; + max-width: 100%; +} +@media screen and (max-width: 500px) { + .l_cover.wiki .cover-wrap .preview img { + max-width: 60%; + } +} +.l_cover.wiki .cover-wrap .cover-title:first-child { + font-size: 3rem; +} +.page-footer { + margin: 4rem 1rem 3rem; + color: var(--text-p3); +} +.page-footer a { + color: var(--text-p3); +} +.page-footer a:hover { + color: #ff5724; +} +.page-footer .sitemap { + margin: 0.5rem 0 2rem; + display: grid; + scrollbar-width: none; + grid-gap: 1rem 1rem; + grid-auto-flow: column dense; + overflow: scroll; +} +.page-footer .sitemap::-webkit-scrollbar { + height: 0; + width: 0; +} +.page-footer .sitemap::-webkit-scrollbar-track-piece { + background: transparent; +} +.page-footer .sitemap::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.page-footer .sitemap::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.page-footer .sitemap .sitemap-group { + display: flex; + flex-direction: column; + align-items: flex-start; +} +.page-footer .sitemap .sitemap-group >span, +.page-footer .sitemap .sitemap-group >a { + text-decoration: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.page-footer .sitemap .sitemap-group >span { + margin: 0.5rem 0; + font-weight: 500; + color: var(--text-p1); +} +.page-footer .sitemap .sitemap-group >a { + margin: 0.2rem 0; +} +.page-footer .text p { + margin: 4px 0; + line-height: 1.5; +} +.page-footer .text a:not([class]) { + text-decoration: underline; + font-weight: 500; +} +.nav-wrap { + position: sticky; + position: -webkit-sticky; + margin-top: -0.5rem; + top: -2px; + background: var(--site-bg); + padding: 0 1rem; + z-index: 8; + margin-bottom: 1px; +} +.nav-wrap:after { + content: ''; + width: calc(100% - 2 * 1rem); + height: 2px; + border-radius: 2px; + position: absolute; + bottom: 0; + left: 1rem; + background: var(--block-hover); +} +nav.cap { + display: flex; + overflow: scroll visible; +} +nav.cap::-webkit-scrollbar { + height: 0; + width: 0; +} +nav.cap::-webkit-scrollbar-track-piece { + background: transparent; +} +nav.cap::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +nav.cap::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +nav.cap >p { + margin: 0; +} +nav.cap a { + padding: 0.25rem 1rem; + margin: 10px 0 8px 0; + line-height: 2; + color: var(--text-p3); + border-radius: 4px; + font-weight: 500; + white-space: nowrap; + position: relative; + z-index: 1; +} +nav.cap a:after { + height: 2px; + position: absolute; + bottom: -8px; + left: 1rem; + right: 1rem; + background: #1cd0fd; + border-radius: 2px; + pointer-events: none; +} +nav.cap a:hover { + background: var(--block-hover); +} +nav.cap a.active, +nav.cap a:hover { + color: var(--text-p1); +} +nav.cap a.active { + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +nav.cap a.active:after { + content: ''; +} +nav.cap a+a { + margin-left: 4px; +} +@media screen and (max-width: 667px) { + .nav-wrap { + margin-top: 0; + padding-left: 0; + padding-right: 0; + } + .nav-wrap nav a:first-child { + margin-left: 1rem; + } + .nav-wrap nav a:last-child { + margin-right: 1rem; + } +} +.paginator-wrap { + margin: 1rem; + display: flex; + justify-content: space-between; + align-items: center; + font-size: 1rem; + font-weight: 700; + background: var(--card); + border-radius: 12px; + overflow: hidden; + box-shadow: 0 2px 8px 0px rgba(0,0,0,0.03); + 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.4/arrow/064b95430caf4.svg"); +} +.paginator-wrap .extend.prev { + border-right: 1px dashed var(--block-border); + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/arrow/f049bbd4e88ec.svg"); +} +.paginator-wrap .current { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + 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: 6px; + color: var(--text-p1); +} +article.md-text.content+.related-wrap { + margin-top: 0; +} +.related-posts { + max-width: 100%; + margin: 1rem 0; +} +.related-posts .item { + line-height: 1.2; + display: block; + border-left: 0; + margin-top: 1rem; +} +.related-posts .item .title { + color: var(--text-p1); + font-weight: 500; + font-size: 1rem; + transition: color 0.2s ease-out, border 0.2s ease-out; + -moz-transition: color 0.2s ease-out, border 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, border 0.2s ease-out; + -o-transition: color 0.2s ease-out, border 0.2s ease-out; + position: relative; + padding-bottom: 2px; + border-bottom: 1px dashed var(--text-meta); + line-height: 1.6; +} +.related-posts .item .excerpt { + color: var(--text-p3); + font-size: 0.75rem; + margin-top: 0.5rem; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.related-posts .item:hover .title { + color: #ff5724; + border-bottom: 1px solid #ff5724; +} +.related-wrap#read-next .body { + display: grid; + grid-gap: 16px; + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 16px) / 2)); +} +.related-wrap#read-next .body .item { + border-top: 1px dashed var(--block-border); + border-bottom: 1px dashed var(--block-border); + padding: 1rem 0; +} +.related-wrap#read-next .body .note { + margin-bottom: 0.75rem; + font-size: 0.75rem; + color: var(--text-p4); + font-weight: 500; +} +.related-wrap#read-next .body a { + margin: 0; + line-height: 1.2; + color: var(--text-p1); + font-size: 1.125rem; +} +.related-wrap#read-next .body a:hover { + color: #ff5724 !important; +} +.related-wrap#read-next .body #next { + text-align: right; +} +.wiki+.related-wrap#read-next .item a { + font-size: 1.375rem; +} +.wiki+.related-wrap#read-next .item#prev a { + color: var(--text-p3); +} +.related-wrap#comments { + padding: 0 1rem; +} +.related-wrap#comments .cmt-title p { + margin: 0; + font-size: inherit; +} +.related-wrap#comments .cmt-title p a { + color: inherit; + text-decoration: underline; +} +.related-wrap#comments .cmt-title p a:hover { + color: #ff5724; +} +.related-wrap#comments .cmt-title p a:before { + display: none; +} +.related-wrap#comments .cmt-body { + min-height: 150px; + position: relative; +} +.related-wrap#comments .cmt-body svg.loading { + top: 60px; +} +.tag-plugin.about { + background: var(--block); + border-radius: 12px; + padding: 2rem; + position: relative; +} +.tag-plugin.about .nav-back { + display: none; + position: absolute; + line-height: 1; + overflow: hidden; + left: 0.75rem; + top: 0.75rem; + align-items: center; +} +@media screen and (max-width: 667px) { + .tag-plugin.about .nav-back { + display: flex; + } +} +.tag-plugin.about .nav-back svg { + width: 1rem; + height: 1rem; +} +.tag-plugin.about .about-header { + display: flex; + justify-content: center; + flex-wrap: wrap; + margin: 1.5rem 0; +} +.tag-plugin.about .about-header img { + object-fit: contain; +} +.tag-plugin.about .about-header >img { + margin: auto 0; +} +.tag-plugin.about .about-header >p { + font-size: 0.75rem; + font-weight: 500; + color: var(--text-p3); + padding-top: 0.75rem; +} +.tag-plugin.about .about-header >p strong:first-child { + font-size: 3rem; + font-weight: 700; + color: var(--text-p1); + margin-right: 0.75rem; +} +.tag-plugin.about .about-header .avatar { + display: inline-flex; + margin: 0 1rem; +} +.tag-plugin.about .about-body >p { + line-height: 1.5; +} +.tag-plugin.about .about-body >p:first-child { + margin-top: 2.5rem; +} +.tag-plugin.about .about-body p+.tag-plugin.navbar .cap { + margin-top: 1rem; +} +.tag-plugin.about .about-header+.about-body { + margin-top: 2rem; +} +@media screen and (max-width: 500px) { + .tag-plugin.about { + padding: 2rem 1rem; + } + .tag-plugin.about .about-header p { + width: 100%; + } +} +.md-text .tag-plugin.checkbox { + display: flex; + align-items: center; + font-size: 0.9375rem; + line-height: 1.2; + --gap-p: calc(var(--gap-p-compact) / 2); +/* Checkbox */ +/* Radio */ +/* Colors */ +} +.md-text .tag-plugin.checkbox input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; + position: relative; + height: 16px; + width: 16px; + cursor: pointer; + display: inline-block; + outline: none; + border-radius: 2px; + flex-shrink: 0; + margin-right: 8px; + pointer-events: none; +} +.md-text .tag-plugin.checkbox input[type=checkbox]:before, +.md-text .tag-plugin.checkbox input[type=checkbox]:after { + position: absolute; + content: ""; + background: var(--site-bg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:before { + left: 1px; + top: 5px; + width: 0px; + height: 2px; + transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:after { + right: 7px; + bottom: 3px; + width: 2px; + height: 0px; + transform: rotate(40deg); + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked:before { + left: 0px; + top: 7px; + width: 6px; + height: 2px; +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked:after { + right: 3px; + bottom: 1px; + width: 2px; + height: 10px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:before { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:after { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=minus] input[type=checkbox]:checked:after { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:before { + transform: rotate(0); + left: 1px; + top: 5px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:after { + transform: rotate(0); + left: 5px; + top: 1px; + width: 2px; + height: 0px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=plus] input[type=checkbox]:checked:after { + left: 5px; + top: 1px; + width: 2px; + height: 10px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:before { + transform: rotate(45deg); + left: 3px; + top: 1px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:after { + transform: rotate(135deg); + right: 3px; + top: 1px; + width: 0px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:checked:before { + left: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox[symbol=times] input[type=checkbox]:checked:after { + right: 1px; + top: 5px; + width: 10px; + height: 2px; +} +.md-text .tag-plugin.checkbox input[type=radio] { + border-radius: 50%; + transform: translateY(-1px); +} +.md-text .tag-plugin.checkbox input[type=radio]:before { + content: ""; + display: block; + width: 8px; + height: 8px; + border-radius: 50%; + margin: 2px; + transform: scale(0); +} +.md-text .tag-plugin.checkbox input[type=radio]:checked:before { + transform: scale(1); +} +.md-text .tag-plugin.checkbox input { + border: 2px solid var(--theme); +} +.md-text .tag-plugin.checkbox input[type=checkbox]:checked { + background: var(--theme); +} +.md-text .tag-plugin.checkbox input[type=radio]:checked:before { + background: var(--theme); +} +.tag-plugin.checkbox:not([color]) { + --theme: #2196f3; +} +.tag-plugin { + --theme: var(--text-p1); + --theme-border: var(--block-border); + --theme-block: var(--block); +} +.colorful[color='red'] { + --theme: #f44336; + --theme-block: #fddbd8; + --theme-border: #e6b6b3; + --text-p0: #3f1512; + --text-p1: #4f1b17; + --text-p2: #740e06; +} +.colorful[color='orange'] { + --theme: #fa6400; + --theme-block: #fde7d8; + --theme-border: #e6c7b3; + --text-p0: #3f2412; + --text-p1: #4f2d17; + --text-p2: #743206; +} +.colorful[color='yellow'] { + --theme: #ffbd2b; + --theme-block: #fdf2d8; + --theme-border: #e6d6b3; + --text-p0: #3f3112; + --text-p1: #4f3e17; + --text-p2: #745206; +} +.colorful[color='green'] { + --theme: #3dc550; + --theme-block: #d8fddd; + --theme-border: #b3e6ba; + --text-p0: #123f19; + --text-p1: #174f1f; + --text-p2: #067416; +} +.colorful[color='cyan'] { + --theme: #1bcdfc; + --theme-block: #d8f5fd; + --theme-border: #b3dbe6; + --text-p0: #12363f; + --text-p1: #17434f; + --text-p2: #065d74; +} +.colorful[color='blue'] { + --theme: #2196f3; + --theme-block: #d8edfd; + --theme-border: #b3cfe6; + --text-p0: #122b3f; + --text-p1: #17364f; + --text-p2: #064374; +} +.colorful[color='purple'] { + --theme: #9c27b0; + --theme-block: #f8d8fd; + --theme-border: #deb3e6; + --text-p0: #39123f; + --text-p1: #47174f; + --text-p2: #640674; +} +.colorful[color='light'] { + --theme-block: #fff; + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; +} +.colorful[color='dark'] { + --theme-block: #333; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +.colorful[color='warning'] { + --theme: #ffbd2b; + --theme-border: #ffe659; + --theme-block: #ffe659; + --theme-link: #ff453a; +} +.colorful[color='error'] { + --theme: #ffbd2b; + --theme-border: #ff453a; + --theme-block: #ff453a; + --theme-link: #ffe659; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; +} +@media (prefers-color-scheme: dark) { + .tag-plugin.tag { + --theme: #1cd0fd; + --theme-block: #222d2f; + --theme-border: #1f505c; + --text-p0: #b3f0ff; + --text-p1: #9fd2df; + --text-p2: #7edaf1; + } + .colorful[color='red'] { + --theme: #f44336; + --theme-block: #2f2322; + --theme-border: #5c231f; + --text-p0: #ffb8b3; + --text-p1: #dfa49f; + --text-p2: #f1867e; + } + .colorful[color='orange'] { + --theme: #fa6400; + --theme-block: #2f2722; + --theme-border: #5c371f; + --text-p0: #ffd1b3; + --text-p1: #dfb99f; + --text-p2: #f1ac7e; + } + .colorful[color='yellow'] { + --theme: #ffbd2b; + --theme-block: #2f2b22; + --theme-border: #5c491f; + --text-p0: #ffe7b3; + --text-p1: #dfcb9f; + --text-p2: #f1cd7e; + } + .colorful[color='green'] { + --theme: #3dc550; + --theme-block: #222f24; + --theme-border: #1f5c27; + --text-p0: #b3ffbd; + --text-p1: #9fdfa8; + --text-p2: #7ef18e; + } + .colorful[color='cyan'] { + --theme: #1bcdfc; + --theme-block: #222d2f; + --theme-border: #1f4f5c; + --text-p0: #b3efff; + --text-p1: #9fd2df; + --text-p2: #7ed9f1; + } + .colorful[color='blue'] { + --theme: #2196f3; + --theme-block: #222a2f; + --theme-border: #1f415c; + --text-p0: #b3ddff; + --text-p1: #9fc3df; + --text-p2: #7ebef1; + } + .colorful[color='purple'] { + --theme: #9c27b0; + --theme-block: #2d222f; + --theme-border: #531f5c; + --text-p0: #f4b3ff; + --text-p1: #d69fdf; + --text-p2: #e07ef1; + } + .colorful[color='light'] { + --theme-border: #fff; + --theme-block: #fff; + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; + } + .colorful[color='dark'] { + --theme-border: #000; + --theme-block: #111; + --text-p0: #fff; + --text-p1: #fff; + --text-p2: #e0e0e0; + --text-p3: #ddd; + --text-code: #fff; + } + .colorful[color='warning'], + .colorful[color='light'] { + --text-p0: #000; + --text-p1: #111; + --text-p2: #1f1f1f; + --text-p3: #555; + --text-code: #fff; + } +} +.md-text .tag-plugin.copy { + display: flex; + justify-content: space-between; + box-sizing: border-box; + background: var(--block); + border-radius: 6px; + border: 1px solid var(--block-border); + overflow: hidden; + width: 320px; + max-width: 100%; +} +.md-text .tag-plugin.copy[width='max'] { + width: 100%; +} +@media screen and (max-width: 425px) { + .md-text .tag-plugin.copy { + min-width: 100%; + } +} +.md-text .tag-plugin.copy input.copy-area { + display: inline-block; + padding: 0; + width: 100%; + color: var(--text-p2); + line-height: 3; + text-indent: 1rem; +} +.md-text .tag-plugin.copy button.copy-btn { + margin: 0; + line-height: 3; + border-left: 1px solid var(--block-border); + display: inline-block; + background: var(--block-hover); + line-height: 0; + font-size: 1rem; + padding: 0 0.75rem; + color: var(--text-p2); +} +.md-text .tag-plugin.copy button.copy-btn:hover { + background: var(--card); +} +.md-text .tag-plugin.emoji { + display: inline-block; + margin: -4px 2px 0; + vertical-align: middle; +} +.md-text .tag-plugin.emoji img { + display: block; + object-fit: contain; + height: 1.75em; +} +.tag-plugin.folders { + margin: var(--gap-p) 0; + font-size: 0.875rem; + border-top: 1px solid var(--block-border); + overflow: hidden; +} +.tag-plugin.folders .folder { + border-bottom: 1px solid var(--block-border); + padding: 1rem; +} +.tag-plugin.folders summary { + cursor: pointer; + color: var(--text-p2); + font-weight: 500; + position: relative; + line-height: 1.2; + outline: none; + padding: 1rem; + margin: -1rem; +} +.tag-plugin.folders summary:last-child { + border-bottom: none; +} +.tag-plugin.folders summary > span { + margin-left: 0.25em; +} +.tag-plugin.folders summary > p, +.tag-plugin.folders summary > h1, +.tag-plugin.folders summary > h2, +.tag-plugin.folders summary > h3, +.tag-plugin.folders summary > h4, +.tag-plugin.folders summary > h5, +.tag-plugin.folders summary > h6 { + display: inline; + border-bottom: none !important; +} +.tag-plugin.folders summary:hover { + color: var(--text-p0); +} +.tag-plugin.folders summary:after { + position: absolute; + content: '+'; + text-align: center; + top: 50%; + transform: translateY(-50%); + right: 1rem; +} +.tag-plugin.folders details[open] >summary { + color: var(--text-p1); + font-weight: 700; +} +.tag-plugin.folders details[open] >summary:after { + content: '-'; +} +.tag-plugin.folders details[open] >div.body { + font-size: 0.9375rem; +} +.tag-plugin.folders details[open] >div.body >:first-child { + margin-top: 1rem; +} +.tag-plugin.folders details[open] >div.body >:last-child { + margin-bottom: 0; +} +details.folding { + display: block; + padding: 1rem; + margin: 1rem 0; + border-radius: 12px; + background: var(--theme-block); + border: 1px solid var(--theme-border); +} +details.folding summary { + cursor: pointer; + padding: 1rem; + margin: -1rem; + color: var(--text-p2); + font-weight: 500; + font-size: 0.875rem; + position: relative; + line-height: 1.2; + outline: none; +} +details.folding summary > span { + margin-left: 0.25em; +} +details.folding summary > p, +details.folding summary > h1, +details.folding summary > h2, +details.folding summary > h3, +details.folding summary > h4, +details.folding summary > h5, +details.folding summary > h6 { + display: inline; + border-bottom: none !important; +} +details.folding summary:hover { + color: var(--text-p0); +} +details.folding summary:after { + position: absolute; + content: '+'; + text-align: center; + top: 50%; + transform: translateY(-50%); + right: 1rem; + line-height: 1; +} +details.folding[open] >summary { + color: var(--text-p1); + font-weight: 700; + z-index: 1; +} +details.folding[open] >summary:after { + content: '-'; +} +details.folding[open] >div.body { + padding: 0 1rem 1rem; + margin: 0 -1rem -1rem; + color: var(--text-p1); +} +details.folding[open] >div.body >:first-child { + margin-top: 1rem; +} +details.folding[open] >div.body >:last-child { + margin-bottom: 0; +} +details.folding[child=codeblock]>div.body { + padding: 0; + background: transparent; + overflow: hidden; +} +details.folding[child=codeblock]>div.body .highlight { + border: none; + border-radius: 0; + background: transparent; + margin: 0; +} +details.folding[child=codeblock]>div.body .highlight figcaption { + display: none; +} +details.folding[child=codeblock]>div.body .highlight .code:before { + content: none; +} +details.folding[child=iframe] { + overflow: hidden; + background: none; +} +details.folding[child=iframe] >summary { + background: none; +} +details.folding[child=iframe] >div.body { + padding: 0; + background: none; + overflow: hidden; +} +.md-text .frame-wrap { + position: relative; + overflow: hidden; + margin: 0 auto; + max-width: 100%; + display: flex; + flex-direction: column; + align-items: center; +} +.md-text .frame-wrap img, +.md-text .frame-wrap video { + border-radius: 0; +} +.md-text .frame-wrap .frame { + z-index: 1; + display: block; + position: absolute; + background-size: 100%; + background-repeat: no-repeat; + overflow: hidden; +} +.md-text .tag-plugin.img-wrap .frame-wrap[focus] { + height: auto; +} +.md-text .frame-wrap#iphone11 img, +.md-text .frame-wrap#iphone11 video { + width: 287px; + margin-top: 19px; + margin-bottom: 20px; +} +.md-text .frame-wrap#iphone11 .frame { + background-image: url("https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/frame/iphone11.svg"); + width: 329px; + height: 658px; +} +.md-text .frame-wrap[focus='top'] img, +.md-text .frame-wrap[focus='top'] video { + margin-bottom: 0 !important; +} +.md-text .frame-wrap:not([focus='bottom']) .frame { + top: 0; +} +.md-text .frame-wrap[focus='bottom'] img, +.md-text .frame-wrap[focus='bottom'] video { + bottom: 0; + margin-top: 0 !important; +} +.md-text .frame-wrap[focus='bottom'] .frame { + bottom: 0; +} +@media screen and (max-width: 500px) { + .md-text .frame-wrap#iphone11 img, + .md-text .frame-wrap#iphone11 video { + width: 208px; + margin-top: 13px; + margin-bottom: 14px; + } + .md-text .frame-wrap#iphone11 .frame { + width: 238px; + height: 476px; + } +} +.users-wrap { + overflow: hidden; +} +.users-wrap .group-header { + margin: 0 0 1rem; +} +.users-wrap .group-header p { + margin: 0; + font-size: 0.875rem; +} +.users-wrap .group-header p:first-child { + font-size: 1.25rem; + font-weight: 500; +} +.users-wrap .group-body { + width: 100%; + display: flex; + flex-wrap: wrap; + align-items: stretch; +} +.users-wrap .group-body+.group-header { + margin-top: 2rem; +} +.users-wrap .stellar-friends-api { + display: block; +} +.users-wrap .user-card { + flex-shrink: 1; + display: flex; + align-items: stretch; + width: 12.5%; +} +@media screen and (max-width: 980px) { + .users-wrap .user-card { + width: 14.28%; + } +} +@media screen and (max-width: 900px) { + .users-wrap .user-card { + width: 16.66%; + } +} +@media screen and (max-width: 820px) { + .users-wrap .user-card { + width: 20%; + } +} +@media screen and (max-width: 667px) { + .users-wrap .user-card { + width: 16.66%; + } +} +@media screen and (max-width: 500px) { + .users-wrap .user-card { + width: 25%; + } +} +.users-wrap .user-card .card-link { + margin: 0; + width: 100%; + color: var(--text-p1); + font-size: 10px; + font-weight: 500; + display: flex; + justify-content: flex-start; + flex-direction: column; + align-items: center; + text-align: center; + line-height: 1.2; + border-radius: 4px; + overflow: hidden; + position: relative; + padding: 1rem 0.5rem; +} +.users-wrap .user-card .card-link img { + object-fit: cover; + display: block; + width: 48px; + height: 48px; + background: var(--card); + border-radius: 64px; + margin: 0 0 0.5rem; +} +.users-wrap .user-card .card-link >img { + transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -moz-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -webkit-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; + -o-transition: transform 0.2s ease-out, box-shadow 0.2s ease-out; +} +.users-wrap .user-card .card-link:hover { + background: var(--block-hover); +} +.users-wrap .user-card .card-link:hover img { + transform: scale(1.2) rotate(8deg); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); +} +.tag-plugin.ghcard { + line-height: 0; +} +.tag-plugin.ghcard a.ghcard { + display: inline-block; +} +.tag-plugin.grid { + display: grid; + grid-gap: 16px; + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 16px) / 2)); +} +.tag-plugin.grid >.cell { + margin: 1rem 0; +} +.tag-plugin.grid >.cell p:first-child>strong:only-child { + font-size: 1rem; +} +.tag-plugin.grid >.cell> p { + line-height: 1.5; +} +.tag-plugin.grid >.cell> :first-child { + margin-top: 0; +} +.tag-plugin.grid >.cell> :last-child { + margin-bottom: 0; +} +.tag-plugin.grid >.cell> p:first-child { + margin-top: -0.25em; +} +.tag-plugin.grid >.cell> p:last-child { + margin-bottom: -0.25em; +} +.md-text .tag-plugin.grid { + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} +@media screen and (max-width: 768px) { + .tag-plugin.grid { + display: block; + } +} +.tag-plugin.grid[bg]>.cell { + padding: 1rem; + border-radius: 12px; +} +.tag-plugin.grid[bg='block']>.cell { + background: var(--block); +} +.tag-plugin.grid[bg='card']>.cell { + background: var(--card); + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.tag-plugin.grid[bg='card']>.cell:hover { + transform: translateY(-1px); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); +} +.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; + font-size: 0.8125rem; + 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); +} +.tag-plugin.image { + margin-top: 1rem; + margin-bottom: 1rem; +} +.tag-plugin.image .image-bg { + text-align: center; + border-radius: 6px; + position: relative; + overflow: hidden; +} +.tag-plugin.image .image-bg:hover .image-download { + opacity: 1 !important; +} +.tag-plugin.image .image-bg img { + display: block; + object-fit: cover; +} +.tag-plugin.image .image-bg .image-download { + position: absolute; + bottom: 8px; + right: 8px; + font-size: 1.125rem; + padding: 6px; + line-height: 0; + border-radius: 4px; + transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, opacity 0.2s ease-out, background 0.2s ease-out; + color: var(--text-p1); +} +.tag-plugin.image .image-bg .image-download:hover { + background: var(--card) !important; + color: #ff5724; +} +.tag-plugin.image .image-meta { + display: flex; + justify-content: center; + padding: 0.5rem 0; +} +.tag-plugin.image .image-meta .image-caption { + display: inline-block; + font-size: 0.75rem; + color: var(--text-p2); + line-height: 1.5; + text-align: justify; +} +.tag-plugin.image .image-meta .image-caption:empty { + display: none; +} +.md-text u { + text-decoration: none; + border-bottom: 2px solid #ff5724; +} +.md-text emp { + width: fit-content; + text-decoration: none; + border-bottom: 4px dotted #ff5724; +} +.md-text wavy { + text-decoration: underline wavy #ff5724; +} +.md-text del { + color: var(--text-p3); + text-decoration: line-through var(--text-p3); +} +.md-text kbd { + border-radius: 4px; + border: 1px solid #d2d2d2; + border-bottom-width: 2px; + background: var(--card); + padding: 2px 4px 1px 4px; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-weight: 700; +} +.md-text psw { + color: transparent; + background: #a1a1a1; + border-radius: 2px; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; + margin: auto 2px; +} +.md-text psw:hover { + color: inherit; + background: none; +} +.md-text sup, +.md-text sub { + color: var(--theme); + line-height: 1; + font-weight: 700; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; +} +.md-text h1 sup, +.md-text h2 sup, +.md-text h3 sup, +.md-text h4 sup, +.md-text h1 sub, +.md-text h2 sub, +.md-text h3 sub, +.md-text h4 sub { + font-size: 0.85rem; +} +.md-text .tag-plugin.link { + 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: 320px; + max-width: 100%; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + border-radius: 6px; + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.md-text .link-card:hover { + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-1px); +} +.md-text .link-card.plain { + flex-direction: row; + align-items: center; +} +.md-text .link-card.rich { + flex-direction: column; + align-items: stretch; + width: 460px; + text-align: justify; +} +.md-text .link-card >.left { + overflow: hidden; + margin: 0.75rem 0 0.75rem 0.75rem; +} +.md-text .link-card >.left .title { + font-size: 0.875rem; +} +.md-text .link-card >.left span+span { + margin-top: 0.25rem; +} +.md-text .link-card >.right { + width: 2.75rem; + height: 2.75rem; + margin: 0.75rem; + overflow: hidden; + flex-shrink: 0; +} +.md-text .link-card >.top { + display: flex; + margin: 1rem 1rem 0.75rem; + overflow: hidden; + max-width: calc(100% - 1rem * 2); + align-items: center; +} +.md-text .link-card >.top .img { + line-height: 0; + height: 16px; + width: 16px; + border-radius: 16px; + margin-right: 8px; + background-repeat: no-repeat; + background-size: contain; + background-position: left center; +} +.md-text .link-card >.top span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.md-text .link-card >.bottom { + margin: 0 1rem 1rem; +} +.md-text .link-card >.bottom .title { + font-size: 1rem; + margin-bottom: 0.5rem; +} +.md-text .link-card { + line-height: 1.2; +} +.md-text .link-card .title { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.md-text .link-card .cap { + flex-shrink: 0; + color: var(--text-p3); +} +.md-text .link-card .link { + line-height: 1.5; + opacity: 0.75; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.md-text .link-card .desc { + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 3; +} +.md-text .link-card .img { + border-radius: 4px; +} +.md-text .link-card span { + margin: 0; + display: block; +} +.md-text .link-card .title { + font-weight: 500; + color: var(--text-p1); +} +.md-text .tag-plugin.mark { + padding: 1px 2px; + border-radius: 2px; + background: var(--theme-block); + color: var(--text-p0); +} +.md-text .tag-plugin.navbar { + text-align: center; +} +.md-text .tag-plugin.navbar nav.cap { + margin: 0; + padding: 1px; + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); + border-radius: 6px; + display: inline-flex; + max-width: 100%; +} +.md-text .tag-plugin.navbar nav.cap a { + margin: 1px; + padding: 0.25em 0.75rem; + color: var(--text-p2); +} +.md-text .tag-plugin.navbar nav.cap a:after { + display: none; +} +.md-text .tag-plugin.navbar nav.cap a:hover { + background: var(--block); +} +.md-text .tag-plugin.navbar nav.cap a.active { + background: var(--block); + box-shadow: none; + color: var(--text-p1); +} +.md-text .tag-plugin.note { + position: relative; + padding: 0.25rem 1rem; + border-radius: 12px; + background: var(--theme-block); + overflow: hidden; + border: 1px solid var(--theme-border); + color: var(--text-p1); +} +.md-text .tag-plugin.note >.title { + font-size: 0.9375rem; + line-height: 1.5; + margin-top: var(--gap-p-compact); + font-weight: 500; + color: var(--text-p0); +} +.md-text .tag-plugin.note >.body { + margin-top: var(--gap-p-compact); + margin-bottom: var(--gap-p-compact); +} +.md-text .tag-plugin.note >.body, +.md-text .tag-plugin.note >.body p { + font-size: 0.875rem; + line-height: 1.5; +} +.md-text .tag-plugin.note >.body:only-child { + margin: calc(var(--gap-p) - 0.25rem) 0; +} +.md-text .tag-plugin.note[color] code { + background: none; +} +.md-text .tag-plugin.note:not([color]) .highlight { + background: var(--block-hover); +} +.md-text .tag-plugin.note[child=codeblock] { + padding: 0; +} +.md-text .tag-plugin.note[child=codeblock] >.title, +.md-text .tag-plugin.note[child=codeblock] >.body:only-child { + margin-top: 0; +} +.md-text .tag-plugin.note[child=codeblock] >.body { + margin-bottom: 0; +} +.md-text .tag-plugin.note[child=codeblock] .highlight { + margin: 0; + border: none; + background: none; +} +.md-text .tag-plugin.note[child=tabs] >.body { + margin: 0; +} +.md-text .tag-plugin.note[child=tabs] >.body >.tabs { + margin-top: 0.5rem; +} +.md-text .tag-plugin.note[child=iframe] { + padding: 0; +} +.md-text .tag-plugin.note[child=iframe] >.body { + margin: 0; +} +.md-text .tag-plugin.note[child=iframe] >.body iframe { + margin: 0; +} +.md-text .tag-plugin .tag-plugin.note { + --gap-p: 1rem; +} +.md-text .tag-plugin.okr { + position: relative; + border-radius: 12px; + background: var(--theme-block); + border: 1px solid var(--theme-border); + 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; +} +.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); +} +.tag-plugin.note blockquote, +.tag-plugin.folding blockquote { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + background: none; + padding-top: 0; + padding-bottom: 0; +} +.tag-plugin.note table:not([class]) th, +.tag-plugin.folding table:not([class]) th { + background: var(--block-hover); +} +.tag-plugin.note table:not([class]) td, +.tag-plugin.folding table:not([class]) td, +.tag-plugin.note table:not([class]) th, +.tag-plugin.folding table:not([class]) th { + border-color: var(--block-border); +} +.md-text .tag-plugin.poetry { + display: flex; + flex-direction: column; + align-items: center; +} +.md-text .tag-plugin.poetry .content >.title { + font-weight: 500; + font-size: 1rem; + margin-top: var(--gap-p); +} +.md-text .tag-plugin.poetry .content >.meta { + color: var(--text-p2); + font-size: 0.75rem; + font-weight: 500; +} +.md-text .tag-plugin.poetry .content >.meta span+span { + margin-left: 4px; +} +.md-text .tag-plugin.poetry .content >.body { + margin: var(--gap-p) 0; + border-top: 1px dashed var(--block-border); + border-bottom: 1px dashed var(--block-border); +} +.md-text .tag-plugin.poetry .content >.body p { + font-size: 0.875rem; +} +.md-text .tag-plugin.poetry .content >.footer { + font-style: italic; + color: var(--text-p4); + margin: var(--gap-p) 0; + font-size: 0.75rem; +} +.md-text .tag-plugin.poetry .content { + padding-left: 1rem; + position: relative; +} +.md-text .tag-plugin.poetry .content:before { + content: ''; + position: absolute; + width: 4px; + left: -4px; + top: 4px; + bottom: 4px; + border-radius: 4px; + background: var(--block); +} +.md-text .tag-plugin.poetry .content >.title { + position: relative; +} +.md-text .tag-plugin.poetry .content >.title:before { + content: ''; + position: absolute; + width: 4px; + left: calc(-1rem - 4px); + top: 6px; + bottom: 6px; + border-radius: 4px; + background: #ff5724; +} +.md-text .tag-plugin.quot { + text-align: center; + align-items: center; + display: flex; + flex-direction: column; +} +.md-text .tag-plugin.quot .content { + display: flex; + align-items: center; + border-bottom: none; + font-weight: 700; + padding: 16px 24px; + line-height: 1.2; +} +.md-text .tag-plugin.quot .content a.headerlink:before { + content: ''; +} +@media screen and (max-width: 500px) { + .md-text .tag-plugin.quot .content { + padding: 12px 20px; + } +} +.md-text .tag-plugin.quot .content { + max-width: 500px; + position: relative; +} +.md-text.content .tag-plugin.quot h1 { + font-size: 2rem; + font-weight: 900; + padding: 20px 32px 12px 32px; +} +@media screen and (max-width: 500px) { + .md-text.content .tag-plugin.quot h1 { + padding: 20px 24px 12px; + } +} +.md-text.content .tag-plugin.quot h2, +.md-text.content .tag-plugin.quot h3, +.md-text.content .tag-plugin.quot h4, +.md-text.content .tag-plugin.quot h5, +.md-text.content .tag-plugin.quot h6 { + font-size: 1.375rem; + margin-top: 1em; + margin-bottom: 0; +} +.md-text.content .tag-plugin.quot p { + font-size: 1.125rem; + color: var(--text-p0); +} +.md-text .tag-plugin.quot .content[type=text]:before, +.md-text .tag-plugin.quot .content[type=text]:after { + content: ""; + position: absolute; + width: 8px; + height: 14px; +} +.md-text .tag-plugin.quot .content[type=text]:before { + top: 8px; + left: 0; + border-top: 6px solid #ff5724; + border-left: 6px solid #ff5724; +} +.md-text .tag-plugin.quot .content[type=text]:after { + right: 0; + bottom: 8px; + border-right: 6px solid #ff5724; + border-bottom: 6px solid #ff5724; +} +.md-text .tag-plugin.quot h1.content[type=text]:before, +.md-text .tag-plugin.quot h1.content[type=text]:after { + width: 12px; + height: 20px; + border-width: 8px; +} +.md-text .tag-plugin.quot .content[type=icon] .icon { + height: 1.5em; + display: inline-block; + color: #ff5724; + border-radius: 0; +} +.md-text .tag-plugin.quot .content[type=icon] .icon.prefix { + margin-left: -0.5rem; + margin-right: 0.5rem; +} +.md-text .tag-plugin.quot .content[type=icon] .icon.suffix { + margin-left: 0.5rem; +} +.sites-wrap .group-header { + margin: 1rem 0; +} +.sites-wrap .group-header p { + margin: 0; + font-size: 0.875rem; +} +.sites-wrap .group-header p:first-child { + font-size: 1.25rem; + font-weight: 500; +} +.sites-wrap .group-body { + width: 100%; +} +.sites-wrap .group-body+.group-header { + margin-top: 2rem; +} +.sites-wrap .stellar-sites-api { + display: block; +} +.sites-wrap .group-body { + display: grid; + grid-gap: 1rem 1rem; + grid-template-columns: repeat(auto-fill, calc((100% - 3 * 1rem) / 4)); +} +@media screen and (max-width: 1024px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3)); + } +} +@media screen and (max-width: 900px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2)); + } +} +@media screen and (max-width: 667px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 1rem) / 3)); + } +} +@media screen and (max-width: 500px) { + .sites-wrap .group-body { + grid-template-columns: repeat(auto-fill, calc((100% - 1 * 1rem) / 2)); + } +} +.sites-wrap .group-body .site-card .card-link { + width: 100%; + display: flex; + flex-direction: column; +} +.sites-wrap .group-body .site-card .card-link >img { + width: 100%; + height: 100px; + object-fit: cover; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.2); +} +@media screen and (max-width: 1024px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 120px; + } +} +@media screen and (max-width: 900px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 150px; + } +} +@media screen and (max-width: 768px) { + .sites-wrap .group-body .site-card .card-link >img { + height: 120px; + } +} +.sites-wrap .group-body .site-card .card-link .info { + margin-top: 0.5rem; + line-height: 1.2; +} +.sites-wrap .group-body .site-card .card-link .info >img { + width: 28px; + height: 28px; + border-radius: 28px; + float: left; + margin-right: 8px; + margin-top: 2px; +} +.sites-wrap .group-body .site-card .card-link .info span { + display: block; +} +.sites-wrap .group-body .site-card .card-link .info .title { + font-weight: 500; + color: var(--text-p1); + font-size: 0.875rem; + margin-top: 1px; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 1; +} +.sites-wrap .group-body .site-card .card-link .info .desc { + font-size: 10px; + margin-top: 2px; + word-wrap: break-word; + color: var(--text-p3); + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 2; +} +.sites-wrap .site-card .card-link >img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.sites-wrap .site-card .card-link:hover >img { + box-shadow: 0 4px 8px 0px rgba(0,0,0,0.1), 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-2px); +} +.tag-plugin.tabs { + position: relative; + margin-top: 1rem; + margin-bottom: 1rem; + display: flex; + flex-direction: column; +} +.tag-plugin.tabs[align=left] { + align-items: flex-start; +} +.tag-plugin.tabs[align=left] .nav-tabs { + align-self: flex-start; +} +.tag-plugin.tabs[align=center] { + align-items: center; +} +.tag-plugin.tabs[align=right] { + align-items: flex-end; +} +.tag-plugin.tabs[align=right] .nav-tabs { + align-self: flex-end; +} +.tag-plugin.tabs .nav-tabs { + display: flex; + align-self: center; + overflow: scroll visible; + max-width: 100%; + white-space: nowrap; + margin: 0 !important; + line-height: 1.5; + position: relative; + padding: 8px 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar { + height: 0; + width: 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-track-piece { + background: transparent; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.tag-plugin.tabs .nav-tabs::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.tag-plugin.tabs .nav-tabs:after { + content: ''; + position: absolute; + background: var(--block-hover); + width: 100%; + height: 2px; + bottom: 0; + left: 0; + border-radius: 2px; +} +.tag-plugin.tabs .nav-tabs .tab { + list-style-type: none; +} +.tag-plugin.tabs .nav-tabs .tab a { + display: block; + cursor: pointer; + padding: 0.25rem 0.75rem; + font-size: 0.8125rem; + line-height: inherit; + font-weight: 500; + color: var(--text-p3); + border-radius: 4px; + position: relative; + margin: 0 2px; +} +.tag-plugin.tabs .nav-tabs .tab a:hover { + color: var(--text-p1); + background: var(--block-hover); +} +.tag-plugin.tabs .nav-tabs .tab a i { + pointer-events: none; +} +.tag-plugin.tabs .nav-tabs .tab.active a { + cursor: default; + color: var(--text-p1); + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +.tag-plugin.tabs .nav-tabs .tab.active a:after { + content: ''; + z-index: 1; + position: absolute; + background: #1cd0fd; + height: 2px; + bottom: -8px; + left: 0.75rem; + right: 0.75rem; + border-radius: 2px; +} +.tag-plugin.tabs .tab-content { + max-width: 100%; + text-align: justify; + margin-top: 0.5rem; +} +.tag-plugin.tabs .tab-content .tab-pane:not(.active) { + display: none; +} +.tag-plugin.tabs .tab-content .tab-pane.active { + display: block; +} +.md-text.indent .tag-plugin.tabs .tab-content p:not([class]) { + text-indent: calc(0.9375rem * 2); +} +.md-text.indent .tag-plugin.tabs .tab-content p:not([class]) a { + text-indent: 0; +} +.md-text .tag-plugin.timeline { + position: relative; + margin-top: 0; + padding-left: 16px; +} +.md-text .tag-plugin.timeline:before { + content: ''; + position: absolute; + z-index: 0; + background: var(--block-hover); + width: 4px; + left: 0px; + border-radius: 8px; + top: 0.5rem; + bottom: 0; +} +.md-text .tag-plugin.timeline:has(.loading-wrap) { + padding-left: 0; +} +.md-text .tag-plugin.timeline:has(.loading-wrap):before { + display: none; +} +.md-text .tag-plugin.timeline .timenode { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + box-sizing: border-box; + max-width: 100%; +} +.md-text .tag-plugin.timeline .timenode >.header, +.md-text .tag-plugin.timeline .timenode >.body { + box-sizing: border-box; + max-width: 100%; +} +.md-text .tag-plugin.timeline .timenode[highlight] .header:before { + background: #1cd0fd; +} +.md-text .tag-plugin.timeline .timenode+.timenode { + margin-top: 1rem; +} +.md-text .tag-plugin.timeline .timenode:hover .header p { + color: var(--text-p1); +} +.md-text .tag-plugin.timeline .timenode:hover .header .user-info { + background: #1cd0fd; +} +.md-text .tag-plugin.timeline .timenode:hover .header .user-info span { + color: var(--card); +} +.md-text .tag-plugin.timeline .timenode:hover .header:before { + background: #1cd0fd; + height: 16px; + top: calc(50% - 0.5 * 16px); + transform: scale(1); +} +.tag-plugin.timeline .timenode .header { + display: flex; + align-items: center; + position: relative; + margin: 0.25rem 0; + font-size: 0.75rem; +} +.tag-plugin.timeline .timenode .header .user-info { + display: flex; + align-items: center; + font-size: 0.75rem; + font-weight: 500; + color: var(--text-p1); + margin-right: 4px; + line-height: 1; + border-radius: 16px; + padding-right: 6px; + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; +} +.tag-plugin.timeline .timenode .header .user-info img { + background: #fff; + height: 16px; + border-radius: 16px; + display: inline; + margin: 0 4px 0 0; + object-fit: contain; +} +.tag-plugin.timeline .timenode .header .user-info:hover { + background: #ff5724; +} +.tag-plugin.timeline .timenode .header, +.tag-plugin.timeline .timenode .header p { + font-weight: 500; + color: var(--text-p3); + transition: color 0.2s ease-out; + -moz-transition: color 0.2s ease-out; + -webkit-transition: color 0.2s ease-out; + -o-transition: color 0.2s ease-out; + line-height: 1; +} +.tag-plugin.timeline .timenode .header p { + margin: 0 !important; + font-size: 0.75rem !important; +} +.tag-plugin.timeline .timenode .header p a { + color: inherit; + font-weight: inherit; +} +.tag-plugin.timeline .timenode .header:before { + content: ''; + position: absolute; + left: -16px; + width: 4px; + border-radius: 12px; + height: 4px; + top: calc(50% - 0.5 * 4px); + background: var(--text-meta); + transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + -o-transition: background 0.2s ease-out, height 0.2s ease-out, top 0.2s ease-out, transform 0.2s ease-out; + transform: scale(2); +} +.tag-plugin.timeline .body { + background: var(--card); + border-radius: 12px; + border-top-left-radius: 2px; + padding: 0.5rem 1rem; + margin-top: 4px; + box-shadow: 0 1px 4px 0px rgba(0,0,0,0.02), 0 2px 8px 0px rgba(0,0,0,0.02); +} +.tag-plugin.timeline .body p { + font-size: 0.875rem; +} +.tag-plugin.timeline .body p img { + display: block; +} +.tag-plugin.timeline .body:empty { + display: none; +} +.tag-plugin.timeline .body p, +.tag-plugin.timeline .body .highlight, +.tag-plugin.timeline .body ol, +.tag-plugin.timeline .body ul, +.tag-plugin.timeline .body .tag-plugin { + margin: 0.5rem 0; +} +.tag-plugin.timeline .body .tag-plugin.copy { + width: 240px; +} +.tag-plugin.timeline[api].stellar-fcircle-api .timenode:hover .header .user-info { + background: inherit; +} +.tag-plugin.timeline[api].stellar-fcircle-api .timenode:hover .header .user-info span { + color: inherit; +} +.tag-plugin.timeline[api] a.body { + display: block; + color: var(--text-p1); + line-height: 1.25; + padding: 0.75rem 1rem; +} +.tag-plugin.timeline[api] .body p.title { + font-size: 1rem; + font-weight: 700; + margin: 0.5rem 0 0.75rem; + line-height: 1.25; +} +.tag-plugin.timeline[api] .body p.title:only-child { + margin-bottom: 0.5rem; + font-weight: 500; +} +.tag-plugin.timeline[api] .body p.title a { + color: inherit; +} +.tag-plugin.timeline[api] .body p.title a:hover { + color: #ff5724; +} +.tag-plugin.timeline[api] .body a:has(img):after { + display: none; +} +.tag-plugin.timeline[api] .body a img { + margin: 0 auto; +} +.tag-plugin.timeline[api] .body img { + margin: 0.5rem auto; +} +.tag-plugin.timeline[api] .body pre code { + font-size: 0.75rem; +} +.tag-plugin.timeline[api] .body .footer { + margin: 0 0 -0.5rem; + padding: 0.5rem 0 1rem; + user-select: none; + font-weight: 500; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: stretch; + background: var(--card); +} +.tag-plugin.timeline[api] .body .footer span { + line-height: 1.8; +} +.tag-plugin.timeline[api] .body .footer:empty { + display: none; +} +.tag-plugin.timeline[api] .body .footer .flex { + display: flex; + flex-wrap: wrap; + font-size: 0.75rem; + align-items: stretch; +} +.tag-plugin.timeline[api] .body .footer .item { + border-width: 1px; + border-style: solid; + margin: 2px; + border-radius: 4px; + padding: 0 0.5rem; + display: flex; + align-items: center; +} +.tag-plugin.timeline[api] .body .footer .item:first-child { + margin-left: 0; +} +.tag-plugin.timeline[api] .body .footer .item:last-child { + margin-right: 0; +} +.tag-plugin.timeline[api] .body .footer .reaction { + border-color: var(--block); +} +.tag-plugin.timeline .body blockquote { + background: none; + border-radius: 0; + padding: 0 0.5rem; + margin: 0.75rem 0; +} +.tag-plugin.timeline .body blockquote p { + font-size: 0.8125rem; + margin: 0.25rem; +} +.tag-plugin.timeline .body { + line-height: 1.5; +} +.tag-plugin.timeline .body h1, +.tag-plugin.timeline .body h2 { + font-size: 1.25rem; + margin: 1rem 0; + line-height: 1.2; +} +.tag-plugin.timeline .body h3, +.tag-plugin.timeline .body h4 { + font-size: 1rem; + margin: 0.75rem 0; + line-height: 1.2; +} +.tag-plugin.timeline .body h5, +.tag-plugin.timeline .body h6 { + font-size: 0.9375rem; + margin: 0.5rem 0; + line-height: 1.2; +} +details.toc { + background: var(--block); + border: 1px solid var(--block-border); + border-radius: 6px; + overflow: hidden; + color: var(--text-p2); +} +details.toc summary { + cursor: pointer; + padding: 0 0.5rem; + line-height: 2; + color: var(--text-p2); + font-size: 0.8125rem; + font-weight: 500; +} +details.toc summary:hover { + background: var(--block-hover); +} +details.toc >div.body { + margin: var(--gap-p) 1rem 1rem; +} +details.toc[open] >summary { + border-bottom: 1px solid transparent; +} +details.toc[open] >summary:hover { + border-bottom-color: var(--block-border); +} +details.toc[open] >div.body section+section { + margin-top: 1rem; +} +details.toc[open] >div.body section .header { + line-height: 2; + font-weight: 500; +} +details.toc[open] >div.body section .header+.doc_tree { + margin-top: 0; +} +@media screen and (max-width: 667px) { + .tag-plugin.toc[display=mobile] { + display: block !important; + } +} +.l_left>.footer { + margin: 0.5rem var(--gap-l) 1rem; +} +.social-wrap { + display: grid; + grid-gap: 0.25rem 0.25rem; + grid-template-columns: repeat(auto-fill, 32px); +} +.social-wrap a.social { + line-height: 0; + display: inline-block; + padding: 6px; + border-radius: 4px; + filter: grayscale(100%); + overflow: hidden; + background: transparent; + transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, background 0.2s ease-out, transform 0.2s ease-out; +} +.social-wrap a.social:hover { + color: #ff5724; + z-index: 1; + filter: unset; + transform: translateY(-1px); + background: linear-gradient(145deg, #ddd, #fff); + box-shadow: 2px 4px 8px #ddd, -2px -4px 8px #fff; +} +@media (prefers-color-scheme: dark) { + .social-wrap a.social:hover { + box-shadow: none; + } +} +.proj-wrap { + display: grid; + grid-gap: 0.25rem 0.25rem; +} +.proj-wrap a.item { + border-radius: 4px; + font-size: 0.8125rem; + font-weight: 500; + color: var(--text-p2); + background: var(--block); + border: 1px solid var(--block-border); + overflow: hidden; + padding: 0.75em; + text-align: center; +} +.proj-wrap a.item svg { + margin-right: 0.5em; +} +.proj-wrap a.item:hover { + color: #ff5724; + background: var(--card); +} +.l_left nav.menu { + margin-bottom: 0; +} +nav.menu { + margin: 1rem 0; + background: var(--block); + border: 1px solid var(--block-border); + border-radius: 6px; + display: flex; + flex-wrap: wrap; +} +nav.menu::-webkit-scrollbar { + display: none; +} +nav.menu::-webkit-scrollbar-track-piece { + background: transparent; +} +nav.menu::-webkit-scrollbar-thumb { + display: none; +} +nav.menu a.nav-item { + text-overflow: ellipsis; + word-break: keep-all; + margin: 1px; + border-radius: 4px; + font-size: 0.875rem; + font-weight: 500; + overflow: hidden; + padding: 0.375rem 0.5rem; + color: var(--text-p3); + text-align: center; +} +nav.menu a.nav-item.active, +nav.menu a.nav-item:hover { + color: var(--text-p1); + background: var(--card); + box-shadow: 0 0 2px 0px rgba(0,0,0,0.04), 0 0 8px 0px rgba(0,0,0,0.04); +} +.l_left .menu a.nav-item { + flex-grow: 1; +} +.logo-wrap { + display: flex; + align-items: center; + overflow: hidden; +} +.logo-wrap a { + color: inherit; + display: flex; + align-items: center; +} +.logo-wrap a.avatar { + display: block; + position: relative; + width: 50px; + height: 50px; + flex-shrink: 0; + border-radius: 50px; + overflow: hidden; + margin-right: 1rem; +} +.logo-wrap a.avatar div.bg { + width: 100%; + height: 100%; + background-size: cover; +} +.logo-wrap a.avatar img.avatar { + margin: 2px; + object-fit: cover; + width: calc(100% - 2 * 2px); + height: calc(100% - 2 * 2px); + border-radius: calc(100% - 2 * 2px); +} +.logo-wrap a.avatar div.bg { + transition: opacity 0.2s ease-out; + -moz-transition: opacity 0.2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + -o-transition: opacity 0.2s ease-out; + position: absolute; + opacity: 0 !important; + z-index: -1; +} +@-moz-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@-o-keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +.logo-wrap a.avatar:hover div.bg { + opacity: 1 !important; + animation: spin infinite 4s; + animation-timing-function: linear; +} +.logo-wrap a.title { + font-size: 1.75rem; + font-weight: 900; + color: inherit; + line-height: 1.2; + display: block; + position: relative; +} +.logo-wrap a.title .main { + color: var(--text-p0); +} +.logo-wrap a.title .sub { + color: var(--text-p1); + transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + -o-transition: opacity 0.2s ease-out, transform 0.2s ease-out; + white-space: nowrap; +} +.logo-wrap a.title .hover { + position: absolute; + bottom: 0; + transform: translateY(8px); + overflow: visible; +} +.logo-wrap a.title:hover .normal { + opacity: 0; + transform: translateY(-8px); +} +.logo-wrap a.title:hover .hover { + transform: translateY(0); + opacity: 1 !important; +} +.l_left { + display: flex; + flex-direction: column; + word-break: break-all; + text-align: justify; + height: 100vh; +} +.l_left .header { + margin: var(--gap-l) var(--gap-l) 0; + margin-top: calc(2 * var(--gap-l)); +} +@media screen and (min-width: 667px) { + .l_left >.widgets:first-child>.widget-wrapper:first-child { + margin-top: calc(2 * var(--gap-l)); + } +} +@media screen and (max-width: 667px) { + .l_left { + height: 100vh; + } +} +.l_left[layout=wiki] { + padding-bottom: 0; + height: 100vh; +} +@media screen and (max-width: 667px) { + .l_left[layout=wiki] { + height: 100vh; + } +} +.l_left[layout=wiki] .widgets >:last-child { + margin-bottom: 6rem; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body { + display: flex; + margin-bottom: 1.5rem; + flex-direction: column; + align-items: flex-start; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home { + margin-bottom: 0.5rem; + color: var(--text-p1); +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home svg { + margin-right: 2px; +} +.l_left .widgets .widget-wrapper.logo-wrap.wiki .widget-body a.wiki-home:hover { + color: #ff5724; + filter: unset !important; +} +.widget-wrapper.ghrepo .repo { + display: block; + padding: 0.75rem 0.5rem; + color: var(--text-p2); + background: var(--card); + border-radius: 12px; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.widget-wrapper.ghrepo .repo >div+div { + margin-top: 0.5rem; +} +.widget-wrapper.ghrepo .repo span { + color: var(--text-p2); +} +.widget-wrapper.ghrepo .repo:hover { + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + transform: translateY(-1px); +} +.widget-wrapper.ghrepo .repo svg { + margin-right: 4px; +} +.widget-wrapper.ghrepo .repo .flex-row { + display: flex; + align-items: center; +} +.widget-wrapper.ghrepo .repo .repo-name { + font-size: 0.875rem; + font-weight: 700; + color: var(--text-p1); +} +.widget-wrapper.ghrepo .repo .repo-desc { + font-size: 0.8125rem; + margin-left: 2px; + margin-right: 2px; +} +.widget-wrapper.ghrepo .repo .grid { + font-size: 0.8125rem; + display: grid; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 2px) / 3)); +} +.widget-wrapper.ghuser .widget-header+.widget-body { + margin: 0.75rem 0; +} +.widget-wrapper.ghuser .widget-body { + text-align: center; + background: var(--card); + border-radius: 12px; + padding: 1rem; + box-shadow: 0 1px 2px 0px rgba(0,0,0,0.1); +} +.widget-wrapper.ghuser .avatar { + display: block; + border-radius: 100%; + margin: 1rem auto 1.25rem auto; + max-width: 75%; + overflow: hidden; +} +.widget-wrapper.ghuser .avatar img { + display: block; +} +@media screen and (max-width: 768px) { + .widget-wrapper.ghuser .avatar { + max-width: 50%; + } +} +.widget-wrapper.ghuser .username { + font-weight: 900; + font-size: 1.75rem; + color: var(--text-p0); + margin: 0.5rem 0; +} +.widget-wrapper.ghuser .bio { + font-size: 0.8125rem; + margin: 0.5rem 0; +} +.widget-wrapper.ghuser .follow { + font-weight: 500; + border-radius: 64px; + padding: 0.5rem 1rem; + background: #1cd0fd; + color: var(--card); + font-size: 1rem; + align-self: stretch; + text-align: center; + line-height: 1.5; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; +} +.widget-wrapper.ghuser .follow svg { + margin-right: 6px; +} +.widget-wrapper.ghuser .follow:hover { + background: #ff5724; +} +.widget-wrapper.ghuser .menu { + margin-bottom: 0; + background: none; + border: 0; +} +.widget-wrapper.ghuser .menu a { + margin: 0; +} +.widget-wrapper.ghuser .menu a.active { + box-shadow: none; + position: relative; + background: none; +} +.widget-wrapper.ghuser .menu a.active:after { + content: ''; + position: absolute; + height: 3px; + bottom: 0; + width: 32px; + left: calc(50% - 0.5 * 32px); + border-radius: 4px; + background: #1cd0fd; +} +.widget-wrapper.ghuser .menu a:hover { + box-shadow: none; + background: var(--block); +} +.widget-wrapper.ghuser .buttons { + margin: 1rem 0; + align-self: stretch; + display: grid; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, calc((100% - 2 * 2px) / 3)); +} +.widget-wrapper.ghuser .btn { + display: flex; + flex-direction: column; + align-items: center; + color: inherit; + border: 1px solid transparent; + border-radius: 4px; + padding: 0.25rem 0; + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; +} +.widget-wrapper.ghuser .btn:hover { + background: var(--block); +} +.widget-wrapper.ghuser .btn .title { + font-size: 1rem; + font-weight: 700; +} +.widget-wrapper.ghuser .btn .desc { + font-size: 0.75rem; + color: var(--text-p3); + font-weight: 500; +} +.widget-wrapper.recent .widget-body { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: 0.25rem; +} +.widget-wrapper.recent .widget-body a { + line-height: 1.2; + font-size: 0.8125rem; + margin: 0.25rem 0; +} +.widget-wrapper.recent .widget-body a .title { + font-size: 0.8125rem; + color: var(--text-p2); +} +.widget-wrapper.recent .widget-body a:hover { + color: #ff5724; +} +.widget-wrapper.related .widget-body a { + margin-top: 0.5rem; + margin-bottom: 1rem; +} +.widget-wrapper.related .widget-body a .title { + font-weight: 700; + font-size: 0.875rem; +} +.widget-wrapper.related .widget-body a .excerpt { + -webkit-line-clamp: 3; +} +.widgets .widget-wrapper.search { + margin-top: 1rem; + margin-bottom: 0; +} +.search-wrapper { + width: 100%; +} +.search-wrapper >.search-form { + position: sticky; + top: 1rem; + display: flex; + flex-direction: row; + align-items: center; + transition: 0.38s ease-out; + z-index: 0; +} +.search-wrapper >.search-form:after { + content: ''; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 2px; + border-radius: 4px; + background: linear-gradient(to right, #04f3ff, #08ffc6, #ddf730, #ffbd19, #ff1fe0, #c418ff, #04f3ff); + background-size: 200%; + animation: glow 10s linear infinite; +} +@-moz-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@-webkit-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@-o-keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +@keyframes glow { + from { + background-position: 0%; + } + to { + background-position: 200%; + } +} +.search-wrapper .search-input { + width: 100%; + padding: 0.5rem 0; + line-height: 1; + box-sizing: border-box; + font-family: system-ui, "Microsoft Yahei", "Segoe UI", -apple-system, Roboto, Ubuntu, "Helvetica Neue", Arial, "WenQuanYi Micro Hei", sans-serif; + color: var(--text-p0); +} +.search-wrapper.noresult .search-icon { + color: #f44336; +} +.search-wrapper .search-no-result { + display: none; + margin: 1em auto; + color: var(--text-p1); + text-align: center; + font-size: 0.875rem; + padding: 2rem; + background: var(--block); + border-radius: 6px; +} +.search-wrapper #search-result ul.search-result-list { + padding: 0; + margin: 0; + list-style-type: none; +} +.search-wrapper #search-result li { + margin: 1em auto; +} +.search-wrapper #search-result li:hover .search-result-title { + color: #ff5724; +} +.search-wrapper #search-result .search-result-title { + color: var(--text-p1); + font-weight: 700; + line-height: 1.2; +} +.search-wrapper #search-result .search-result-content { + overflow: hidden; + color: var(--text-p3); + margin: 0.4em auto; + max-height: 13em; + text-align: justify; + font-size: 0.75rem; + line-height: 1.2; + display: -webkit-box; + -webkit-box-orient: vertical; + overflow: hidden; + -webkit-line-clamp: 3; +} +.search-wrapper #search-result .search-keyword { + border-bottom: 1px dashed #ff5724; + color: #ff5724; + font-weight: bold; +} +.search-wrapper.noresult .search-no-result { + display: block; +} +.widget-wrapper .search-form { + top: 0; + background: var(--site-bg); +} +.widget-wrapper .search-input { + padding-left: 1.5rem; +} +.widget-wrapper .search-icon { + position: absolute; + margin-left: 0.25rem; + left: 0; + pointer-events: none; + color: var(--text-p2); +} +.widget-wrapper #search-result, +.widget-wrapper .search-no-result { + margin-top: 1rem; +} +.widget-wrapper:not(:first-child) .search-wrapper { + margin-top: -1rem; +} +.widget-wrapper.tagcloud .widget-body { + margin-top: 0.25rem; +} +.widget-wrapper.tagcloud .widget-body a { + word-break: break-word; + color: var(--text-p2); + line-height: 1.5; +} +.widget-wrapper.tagcloud .widget-body a:hover { + color: #ff5724; +} +.widget-wrapper.timeline .widget-body { + margin-top: 0.5rem; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header { + margin-bottom: 0.5rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header .user-info { + background: var(--block); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header .user-info:hover { + background: #ff5724; + color: var(--card); +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode .header:before { + display: none; +} +.widget-wrapper.timeline .tag-plugin.timeline .timenode+.timenode { + margin-top: 0.75rem; +} +.widget-wrapper.toc.single .doc-tree.active>.toc { + border-left: 2px solid var(--block-hover); +} +.widget-wrapper.toc .widget-header { + margin-top: 1rem; +} +.widget-wrapper.toc.single .widget-header { + font-weight: 500; + font-size: 0.75rem; +} +.widget-wrapper.toc.single .widget-header >span { + margin: 0.5rem 0; +} +.widget-wrapper.toc .widget-body { + margin-top: 0; +} +.widget-wrapper.toc .widget-body ul ul, +.widget-wrapper.toc .widget-body ul ol { + padding-left: 0; +} +.widget-wrapper.toc .widget-body ol ul, +.widget-wrapper.toc .widget-body ol ol { + padding-left: 0; +} +.widget-wrapper.toc .widget-body .doc-tree { + margin: 4px 0; +} +.widget-wrapper.toc .widget-body .toc { + padding: 0; + margin: 0; + padding-left: 0.25rem; +} +.widget-wrapper.toc .widget-body .toc .toc-item .toc-link { + padding: 0.5rem; + font-weight: 500; + font-size: 0.8125rem; + color: var(--text-p2); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-item .toc-link { + padding: 0.25rem 0.5rem 0.25rem 1.3rem; + font-weight: 400; + color: var(--text-p2); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-child .toc-item .toc-link { + padding-left: 2.1rem; + font-size: 0.75rem; + color: var(--text-p3); +} +.widget-wrapper.toc .widget-body .toc .toc-child .toc-child .toc-child .toc-item .toc-link { + padding-left: 2.9rem; +} +.widget-wrapper.toc .toc-item { + color: var(--text-p2); + font-size: 0.75rem; + padding: 0; + list-style: none; +} +.widget-wrapper.toc .toc-item.active { + color: #1cd0fd; + border-left-color: #1cd0fd; +} +.widget-wrapper.toc .toc-item .toc-child .toc-item { + padding: 0; +} +.widget-wrapper.toc a.toc-link { + color: inherit; + display: block; + line-height: 1.2; + border-radius: 4px; + position: relative; +} +.widget-wrapper.toc a.toc-link:before { + content: ''; + position: absolute; + left: -6px; + top: calc(50% - 6px); + bottom: calc(50% - 6px); + width: 2px; + border-radius: 2px; + background: #1cd0fd; + visibility: hidden; +} +.widget-wrapper.toc a.toc-link:hover { + background: var(--block-hover); +} +.widget-wrapper.toc a.toc-link.active { + color: #1cd0fd !important; +} +.widget-wrapper.toc a.toc-link.active:before { + visibility: visible; +} +.widget-wrapper.toc.multi .widget-header { + color: var(--text-p1); + font-size: 0.875rem; +} +.widget-wrapper.toc.multi .doc-tree { + border-radius: 6px; + background: var(--block); + overflow: hidden; + border: 1px solid var(--block-border); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link { + color: var(--text-p2); + padding: 0.5rem; + display: block; + font-size: 0.75rem; + font-weight: 500; + position: relative; +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:after { + position: absolute; + right: 0.5rem; +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link.active { + color: var(--text-p1); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link.active:only-child { + background: var(--card); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:hover { + background: var(--block-hover); +} +.widget-wrapper.toc.multi .doc-tree a.doc-tree-link:hover:after { + content: '+'; +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link { + background: var(--block); + font-weight: 700; +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link:not(:only-child) { + border-bottom: 1px solid var(--block-border); +} +.widget-wrapper.toc.multi .doc-tree.active a.doc-tree-link:hover:after { + content: none; +} +.widget-wrapper.toc.multi .doc-tree.active >.toc { + padding: 4px; + background: var(--card); +} +.widget-wrapper.toc.multi .doc-tree.active >.toc a.toc-link:before { + left: -2px; + width: 4px; +} +.widget-wrapper.toc.multi .doc-tree.active >.toc a.toc-link:hover { + background: var(--block); +} +.widgets .loading-wrap { + margin: 0.5rem 0; +} +.widgets { + overflow: scroll; + flex-grow: 1; + scrollbar-width: none; + z-index: 1; + line-height: 1.2; +} +.widgets::-webkit-scrollbar { + height: 0; + width: 0; +} +.widgets::-webkit-scrollbar-track-piece { + background: transparent; +} +.widgets::-webkit-scrollbar-thumb { + background: var(--text-meta); + cursor: pointer; + border-radius: 0; +} +.widgets::-webkit-scrollbar-thumb:hover { + background: var(--text-p3); +} +.widgets .widget-wrapper .widget-header { + padding-left: var(--gap-l); + padding-right: var(--gap-l); + display: flex; + justify-content: space-between; + align-items: center; + font-weight: 500; + position: sticky; + top: -2px; + background: var(--site-bg); + padding-top: 2px; + z-index: 1; +} +.widgets .widget-wrapper .widget-header .item { + display: block; +} +.widgets .widget-wrapper .widget-header >span { + margin: 0.25rem 0; + text-align: left; +} +.widgets .widget-wrapper .widget-header:empty { + display: none; +} +.widgets .widget-wrapper .widget-header .cap-action { + border-radius: 4px; + padding: 4px 4px; + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; + line-height: 0; + color: var(--text-meta); + transition: color 0.2s ease-out, background 0.2s ease-out; + -moz-transition: color 0.2s ease-out, background 0.2s ease-out; + -webkit-transition: color 0.2s ease-out, background 0.2s ease-out; + -o-transition: color 0.2s ease-out, background 0.2s ease-out; +} +.widgets .widget-wrapper .widget-header .cap-action:hover { + background: var(--block-hover); +} +.widgets .widget-wrapper .widget-header .cap-action .icon { + fill: var(--text-meta); +} +.widgets .widget-wrapper .widget-header .cap-action:hover { + color: #ff5724; +} +.widgets .widget-wrapper .widget-header .cap-action:hover .icon { + fill: #ff5724; +} +.widgets .widget-wrapper .widget-body { + margin: 0.5rem var(--gap-l); + color: var(--text-p1); +} +.widgets .widget-wrapper .widget-body p { + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.5; +} +.widgets .widget-wrapper .widget-header+.widget-body { + margin-top: 0; +} +.widgets .widget-wrapper+.widget-wrapper .widget-header { + margin-top: 3rem; +} +.widgets .widget-wrapper+.widget-wrapper.toc .widget-header { + margin-top: 1rem; +} +.widget-wrapper { + display: block; + margin: 2rem 0; +} +.post-list #archive { + padding: 1rem; +} +.post-list #archive .archive-header { + display: inline-block; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + font-weight: 700; + line-height: 1.2; + margin-bottom: 0.5em; + position: relative; + padding: 4px 0; + color: var(--text-p3); +} +.post-list #archive .archive-header:after { + content: ""; + position: absolute; + height: 4px; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + border-radius: 4px; + background: var(--block-border); +} +.post-list #archive a.post { + display: inline-flex; + align-items: baseline; + margin: 0.25rem 0; + color: var(--text-p1); +} +.post-list #archive a.post:hover { + color: #ff5724; +} +.post-list #archive a.post time { + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + margin-right: 1em; + font-weight: 700; + flex-shrink: 0; + opacity: 0.5; +} +.post-list #archive:hover .archive-header { + color: var(--text-p1); +} +.post-list #archive:hover .archive-header:after { + background: #1cd0fd; +} +.post-list #cats { + padding: 0; +} +.post-list #cats a.cat { + display: flex; + padding: 0.5em 1rem; + border-radius: 6px; + color: var(--text-p2); + align-items: center; + justify-content: space-between; + font-weight: 500; + font-size: 0.875rem; +} +.post-list #cats a.cat.child { + padding-left: 2rem; +} +.post-list #cats a.cat .badge { + font-weight: 700; + font-family: Menlo, Monaco, Consolas, system-ui, "Courier New", monospace, sans-serif; + opacity: 0.5; + font-size: 0.75rem; +} +.post-list #cats a.cat:hover { + background: var(--block-hover); + color: var(--text-p0); +} +.post-list #cats a.cat:hover .badge { + opacity: 1; + color: #1cd0fd; +} +.post-list #tags { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 -4px; +} +.post-list #tags a.tag { + display: inline-flex; + align-items: center; + position: relative; + color: var(--text-p2); + margin: 4px; + padding: 0.5em 0.75rem; + border-radius: 4px; + background: var(--block); + font-size: 0.8125rem; + font-weight: 500; +} +.post-list #tags a.tag:before { + content: "#"; + margin-left: -2px; + margin-right: 2px; + opacity: 0.4; +} +.post-list #tags a.tag:hover { + color: var(--text-p0); + background: var(--block-hover); +} +.post-list #tags a.tag:hover:before { + color: #1cd0fd; + opacity: 1; +} +.md-text.error-page { + text-align: center; + margin-top: 2rem; +} +.md-text.error-page img#error { + width: 30vw; + max-height: 150px; + margin-bottom: 2rem; +} +.md-text.error-page h1 { + font-size: 4rem; + margin-bottom: 0; +} +.md-text.error-page p.what, +.md-text.error-page p.why { + margin: 0.5em; +} +.md-text.error-page p.why { + font-size: 0.8125rem; +} +.md-text.error-page a#back { + margin: 2rem 0; + display: inline-block; + background: #fdb62f; + color: #000; + border: 2px solid #000; +} +@media screen and (max-width: 768px) { + .md-text.error-page { + margin-top: 4rem; + } +} +.l_body { + display: flex; + margin: auto; + padding: 0 var(--gap-l); + justify-content: center; +} +.l_body .l_left { + z-index: 8; + width: var(--width-left); + flex-shrink: 0; + position: sticky; + position: -webkit-sticky; + top: 0; +} +.l_body .l_main { + flex-shrink: 1; + flex-grow: 1; + width: 320px; + max-width: var(--width-main); +} +@media screen and (max-width: 667px) { + .mobile-only { + display: block !important; + } + .l_body { + padding: 0; + } + .l_body .l_left { + position: fixed; + transform: translateX(-320px); + margin: 0; + left: 0; + background: var(--site-bg); + box-shadow: 0 2px 4px 0px rgba(0,0,0,0.1), 0 4px 8px 0px rgba(0,0,0,0.1), 0 8px 16px 0px rgba(0,0,0,0.1); + z-index: 9; + } + .l_body .l_main { + max-width: 100%; + } + .l_body.mobile .l_left { + transition: transform 0.3s ease-out; + } + .l_body.mobile.sidebar .l_left { + transform: translateX(0px); + } +} +.post-list { + margin: 1rem; +} +.post-list .post-title:first-child { + margin-top: 0.5rem; +} +.post-list .post-title { + font-weight: 500; + margin: 1.25rem 0 0.75rem 0; + line-height: 1.2; + font-size: 1.375rem; + border-bottom: none; + color: var(--text-p0); + transition: color 0.2s ease-out; + -moz-transition: color 0.2s ease-out; + -webkit-transition: color 0.2s ease-out; + -o-transition: color 0.2s ease-out; +} +@media screen and (max-width: 500px) { + .post-list .post-title { + font-size: 1.125rem; + margin: 0.5rem 0; + } +} +.post-list .wiki .post-title { + margin-top: 0.5rem; +} +.post-list .post-card { + display: block; + margin: 1rem 0; + border-radius: 12px; + box-shadow: 0 2px 8px 0px rgba(0,0,0,0.02); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + overflow: hidden; + z-index: 0; + background: var(--card); + position: relative; +} +.post-list .post-card .excerpt { + margin: 1rem 0; +} +@media screen and (max-width: 500px) { + .post-list .post-card .excerpt { + margin: 0.5rem 0; + } +} +.post-list .post-card .excerpt >p { + margin: 1rem 0; + line-height: 1.5; +} +@media screen and (max-width: 500px) { + .post-list .post-card .excerpt >p { + margin: 0.5rem 0; + } +} +.post-list .post-card .meta.cap { + display: flex; + flex-wrap: wrap; + align-items: center; + margin: 0.25rem 0; + line-height: 1.5; +} +.post-list .post-card .meta.cap span+span { + margin-left: 0.5rem; +} +.post-list .post-card .meta.cap span.pin { + line-height: 0; +} +.post-list .post-card .meta.cap span.pin img { + object-fit: contain; + height: 1.5em; +} +.post-list .post-card:hover { + box-shadow: 0 1px 4px 0px rgba(0,0,0,0.1), 0 4px 16px 0px rgba(0,0,0,0.1); +} +.post-list .post-card:hover img { + transform: scale(1.02); + filter: brightness(80%); +} +.post-list .md-text { + padding: 1rem; +} +@media screen and (max-width: 500px) { + .post-list .md-text { + padding: 0.5rem 1rem; + } +} +.post-list .md-text p { + color: var(--text-p2); + font-size: 0.875rem; +} +.post-list .post-card .post-cover { + overflow: hidden; + width: calc(100% + 2 * 1rem); + border-radius: 0; + margin-left: -1rem; + margin-top: -1rem; + margin-right: -1rem; + background: var(--block); +} +.post-list .post-card .post-cover:not(.lazy) { + transition: transform 1s ease-out; + -moz-transition: transform 1s ease-out; + -webkit-transition: transform 1s ease-out; + -o-transition: transform 1s ease-out; +} +.post-list .post-card .post-cover img { + object-fit: cover; + width: 100%; + border-radius: 0; + height: 280px; +} +@media screen and (max-width: 900px) { + .post-list .post-card .post-cover img { + height: 240px; + } +} +@media screen and (max-width: 768px) { + .post-list .post-card .post-cover img { + height: 220px; + } +} +@media screen and (max-width: 425px) { + .post-list .post-card .post-cover img { + height: 200px; + } +} +@media screen and (max-width: 375px) { + .post-list .post-card .post-cover img { + height: 180px; + } +} +.post-list .post-card.post.photo .cover { + position: relative; + line-height: 0; +} +.post-list .post-card.post.photo .cover img { + width: 100%; +} +.post-list .post-card.post.photo .cover .cover-info { + padding: 1.5rem 1rem; + position: absolute; + line-height: 1.2; + width: calc(100% - 1rem * 2); + color: var(--text-p0); +} +.post-list .post-card.post.photo .cover .cover-info[position=top] { + top: 0; + background-image: linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0)); +} +.post-list .post-card.post.photo .cover .cover-info[position=bottom] { + bottom: 0; + background-image: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.2)); +} +.post-list .post-card.post.photo .cover .cover-info div+div { + margin-top: 4px; +} +.post-list .post-card.post.photo .cover .cover-info .cap { + font-size: 0.8125rem; + color: unset; +} +.post-list .post-card.post.photo .cover .cover-info .title { + font-weight: 500; + font-size: 1.375rem; +} +@media screen and (max-width: 500px) { + .post-list .post-card.post.photo .cover .cover-info { + padding: 1rem; + } + .post-list .post-card.post.photo .cover .cover-info div+div { + margin-top: 2px; + } + .post-list .post-card.post.photo .cover .cover-info .title { + font-size: 1.125rem; + } + .post-list .post-card.post.photo .cover .cover-info .cap { + font-size: 0.75rem; + } +} +.post-list .post-card.post.photo h2 { + margin: 0.25rem 0; + font-size: 1.125rem; +} +.post-list .post-card.wiki article { + display: flex; + flex-wrap: wrap; + transition: box-shadow 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out; + justify-content: center; + padding: 1rem 0.5rem; +} +.post-list .post-card.wiki article .preview { + display: flex; + width: 200px; + margin: 1rem 0.5rem; + align-items: center; +} +@media screen and (min-width: 950px) { + .post-list .post-card.wiki article .preview { + margin: 1rem; + } +} +.post-list .post-card.wiki article .preview img { + object-fit: contain; +} +.post-list .post-card.wiki article .preview img:not(.lazy) { + transition: transform 0.75s ease-out; + -moz-transition: transform 0.75s ease-out; + -webkit-transition: transform 0.75s ease-out; + -o-transition: transform 0.75s ease-out; +} +.post-list .post-card.wiki article .excerpt { + margin: 1rem 0.5rem; + min-width: 280px; + flex: 1; + overflow: hidden; + word-wrap: break-word; +} +@media screen and (min-width: 950px) { + .post-list .post-card.wiki article .excerpt { + margin-right: 2rem; + } +} +.post-list .post-card.wiki article .excerpt p:last-child { + margin-bottom: 0; +} +.l_main { + position: relative; + padding-bottom: calc(1 * var(--gap-l)); +} +@media screen and (min-width: 1400px) { + .l_main { + margin-left: calc(2 * var(--gap-l)); + margin-right: calc(2 * var(--gap-l) + var(--width-left) / 2); + } +} +@media screen and (min-width: 667px) { + .l_main { + padding-top: calc(2 * var(--gap-l)); + } +} +@media screen and (max-width: 667px) { + .l_main { + padding-top: 1rem; + } +} +.l_main header { + margin: 2rem 1rem 1rem; +} +.l_main header .logo-wrap { + margin: 0; +} +.md-text { + max-width: 100%; + padding: 1rem; + color: var(--text-p1); + line-height: 1.7; + word-break: break-word; +} +.md-text:first-child { + margin-top: 0; +} +.md-text.excerpt p { + font-size: 0.875rem; + margin: 1em 0; +} +h1.article-title { + margin-top: 0.5em; + margin-bottom: 1em; + line-height: 1.2; + color: var(--text-p0); +} +.md-text.content { + position: relative; + padding-bottom: 2rem; + overflow: hidden; +} +.md-text.content.indent >p:not([class]) { + text-indent: calc(0.9375rem * 2); + text-align: left; +} +.md-text.content.indent >p:not([class]) a { + text-indent: 0; +} +.md-text.content.indent h1, +.md-text.content.indent h2, +.md-text.content.indent h3, +.md-text.content.indent h4, +.md-text.content.indent h5, +.md-text.content.indent h6 { + text-align: center; +} +.md-text.content.indent >h2:not([class]) { + border-bottom: none; +} +.md-text.content >:first-child:not(h1) { + margin-top: 0; +} +.md-text.content h1:not(:first-child) { + margin-top: 2em; +} +.md-text.content h2 { + margin-bottom: 1rem; +} +.md-text.content h3, +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + margin-bottom: 0.5rem; +} +.md-text.content h2, +.md-text.content h3, +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + color: var(--text-p0); + padding-top: 1rem; + line-height: 1.8; +} +.md-text.content h2:hover a.headerlink:before, +.md-text.content h3:hover a.headerlink:before, +.md-text.content h4:hover a.headerlink:before, +.md-text.content h5:hover a.headerlink:before, +.md-text.content h6:hover a.headerlink:before { + opacity: 1; +} +.md-text.content 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; + padding-top: 0; +} +.md-text.content:first-child { + padding-top: 0; +} +.md-text ul:not(:last-child), +.md-text ol:not(:last-child) { + padding-bottom: 0.5rem; + margin: 0; +} +.md-text blockquote p, +.md-text ul p, +.md-text ol p, +.md-text blockquote ul, +.md-text ul ul, +.md-text ol ul, +.md-text blockquote ol, +.md-text ul ol, +.md-text ol ol { + font-size: 0.875rem; + line-height: 1.5; +} +.md-text blockquote p code, +.md-text ul p code, +.md-text ol p code, +.md-text blockquote ul code, +.md-text ul ul code, +.md-text ol ul code, +.md-text blockquote ol code, +.md-text ul ol code, +.md-text ol ol code { + font-size: inherit; + padding: 0; + background: none; +} +.md-text p *, +.md-text blockquote *, +.md-text .tag-plugin *, +.md-text ul *, +.md-text ol *, +.md-text .highlight *, +.md-text table * { + --gap-p: var(--gap-p-compact); +} +.md-text p, +.md-text ul, +.md-text ol { + margin-top: calc(var(--gap-p) - 4px); + margin-bottom: calc(var(--gap-p) - 4px); +} +.md-text .tag-plugin, +.md-text iframe { + margin-top: var(--gap-p); + margin-bottom: var(--gap-p); +} +.md-text iframe { + display: block; +} +.md-text.content a.headerlink:before { + opacity: 0; + content: '#'; + position: absolute; + margin-left: -0.6em; +} +.md-text.content h2 { + margin-top: 2rem; + border-bottom: 1px solid var(--block-border); + font-weight: 400; +} +.md-text.content h3 { + margin-top: 1.5rem; + font-weight: 400; +} +.md-text.content h4, +.md-text.content h5, +.md-text.content h6 { + font-weight: 500; +} +.md-text.content h1+h2 { + margin-top: -0.5rem; +} +.md-text.content h2+h3 { + margin-top: -0.5rem; +} +.md-text.content h3+h4 { + margin-top: -0.5rem; +} +.md-text.content h4+h5 { + margin-top: -0.5rem; +} +.md-text.content h5+h6 { + margin-top: -0.5rem; +} +.md-text p { + font-size: 0.9375rem; +} +.md-text pre { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} +.md-text .center { + align-self: center; +} +.md-text>div { + margin: var(--gap-p) 0; +} +.md-text img { + border-radius: 6px; + margin: auto; + display: block; +} +.md-text p:not([class]) a:not([class]), +.md-text li:not([class]) a:not([class]) { + position: relative; + padding: 2px 0; + text-decoration: none; + line-height: 1.2; +} +.md-text p:not([class]) a:not([class]):before, +.md-text li:not([class]) a:not([class]):before { + content: ''; + position: absolute; + border-radius: 2px; + bottom: 0; + left: 0; + right: 0; + height: 1px; + opacity: 0.8; + background: var(--theme-link); + transition: all 0.2s ease-out; + -moz-transition: all 0.2s ease-out; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; +} +.md-text p:not([class]) a:not([class]):hover, +.md-text li:not([class]) a:not([class]):hover { + border-bottom: none; + color: var(--theme-link); + z-index: 0; +} +.md-text p:not([class]) a:not([class]):hover:before, +.md-text li:not([class]) a:not([class]):hover:before { + height: 100%; + opacity: 0.2; + z-index: -1; + bottom: 0; + left: -2px; + right: -2px; +} +.md-text .aplayer { + border-radius: 12px; +} +img.lazy { + transition: transform 0.5s ease-out, filter 0.28s ease-out; + -moz-transition: transform 0.5s ease-out, filter 0.28s ease-out; + -webkit-transition: transform 0.5s ease-out, filter 0.28s ease-out; + -o-transition: transform 0.5s ease-out, filter 0.28s ease-out; +} +img.lazy:not(.loaded) { + filter: blur(8px); + -webkit-filter: blur(8px); +} +img.lazy.loaded, +img.lazy.error { + filter: none; + -webkit-filter: none; +} +.group-body .site-card .card-link>img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out; +} +.group-body .user-card .card-link>img { + transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -moz-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -webkit-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; + -o-transition: box-shadow 0.2s ease-out, transform 0.2s ease-out, filter 0.2s ease-out; +} +:root { + --swiper-theme-color: #1cd0fd !important; +} +.swiper { + width: 100%; + border-radius: 4px; + --gap-p: 2rem; +} +.swiper:not(.swiper-initialized) { + display: none; +} +div.swiper-slide { + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + align-self: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + width: 50%; +} +div.swiper-slide img { + border-radius: 4px; +} +.swiper[width='max'] .swiper-slide { + width: 100%; +} +.swiper[width='min'] .swiper-slide { + width: 25%; +} +.swiper[effect='cards'] .swiper-slide { + max-width: 75%; +} +.swiper-button-prev, +.swiper-button-next { + padding: 1rem 0.25rem; + margin-top: -2rem !important; + border-radius: 40px; + background: rgba(255,255,255,0.25); + transition: background 0.2s ease-out; + -moz-transition: background 0.2s ease-out; + -webkit-transition: background 0.2s ease-out; + -o-transition: background 0.2s ease-out; + --swiper-theme-color: var(--text-p0) !important; +} +.swiper-button-prev:after, +.swiper-button-next:after { + font-size: 1.2rem !important; + font-weight: 700 !important; + color: var(--swiper-theme-color); +} +.swiper-button-prev:hover, +.swiper-button-next:hover { + background: #fff !important; + --swiper-theme-color: #ff5724 !important; +} +.swiper-button-prev:after { + transform: translateX(-1px); +} +.swiper-button-next:after { + transform: translateX(1px); +} +img[fancybox='true'] { + cursor: zoom-in; +} +.swiper-slide { + cursor: zoom-in; +} +.highlight { + position: relative; +} +.highlight .code .copy-btn { + position: absolute; + top: 0; + right: 0; + padding: 4px 0.5rem; + opacity: 0; + font-weight: 700; + color: var(--theme); + cursor: pointer; +} +.highlight:hover .copy-btn { + opacity: 0.25; +} +.highlight .code .copy-btn:hover { + color: var(--theme); + opacity: 0.75; +} +.highlight .code .copy-btn.success { + color: #3dc550; + opacity: 0.75; +} +.highlight .code .copy-btn.warning { + color: #fa6400; + opacity: 0.75; +} diff --git a/img/math_01/01.jpg b/img/math_01/01.jpg new file mode 100644 index 0000000..105aedc Binary files /dev/null and b/img/math_01/01.jpg differ diff --git a/img/math_01/02.jpg b/img/math_01/02.jpg new file mode 100644 index 0000000..c5481d8 Binary files /dev/null and b/img/math_01/02.jpg differ diff --git a/img/math_01/03.jpg b/img/math_01/03.jpg new file mode 100644 index 0000000..0c2cc22 Binary files /dev/null and b/img/math_01/03.jpg differ diff --git a/img/math_01/cover.jpg b/img/math_01/cover.jpg new file mode 100644 index 0000000..54fc7ad Binary files /dev/null and b/img/math_01/cover.jpg differ diff --git a/img/math_02/cover.png b/img/math_02/cover.png new file mode 100644 index 0000000..6c71c3c Binary files /dev/null and b/img/math_02/cover.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..51ed751 --- /dev/null +++ b/index.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + + + + +
+
计算机数学故事
常见积分方法
作者:YY同学Serendipity
+
+
计算机数学故事
三大微分中值定理
作者:YY同学Serendipity
+
+ + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + +
+ + diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..540cf61 --- /dev/null +++ b/js/main.js @@ -0,0 +1,391 @@ +console.log('\n' + '%c Stellar v' + stellar.version + ' %c\n' + stellar.github + '\n', 'color:#e8fafe;background:#03c7fa;padding:8px;border-radius:4px', 'margin-top:8px'); +// utils +const util = { + + // https://github.com/jerryc127/hexo-theme-butterfly + diffDate: (d, more = false) => { + const dateNow = new Date() + const datePost = new Date(d) + const dateDiff = dateNow.getTime() - datePost.getTime() + const minute = 1000 * 60 + const hour = minute * 60 + const day = hour * 24 + const month = day * 30 + + let result + if (more) { + const monthCount = dateDiff / month + const dayCount = dateDiff / day + const hourCount = dateDiff / hour + const minuteCount = dateDiff / minute + + if (monthCount > 12) { + result = null + } else if (monthCount >= 1) { + result = parseInt(monthCount) + ' ' + stellar.config.date_suffix.month + } else if (dayCount >= 1) { + result = parseInt(dayCount) + ' ' + stellar.config.date_suffix.day + } else if (hourCount >= 1) { + result = parseInt(hourCount) + ' ' + stellar.config.date_suffix.hour + } else if (minuteCount >= 1) { + result = parseInt(minuteCount) + ' ' + stellar.config.date_suffix.min + } else { + result = stellar.config.date_suffix.just + } + } else { + result = parseInt(dateDiff / day) + } + return result + }, + + copy: (id, msg) => { + const el = document.getElementById(id); + if (el) { + el.select(); + document.execCommand("Copy"); + if (msg && msg.length > 0) { + hud.toast(msg); + } + } + }, + + toggle: (id) => { + const el = document.getElementById(id); + if (el) { + el.classList.toggle("display"); + } + }, +} + +const hud = { + toast: (msg, duration) => { + duration = isNaN(duration) ? 2000 : duration; + var el = document.createElement('div'); + el.classList.add('toast'); + el.innerHTML = msg; + document.body.appendChild(el); + setTimeout(function () { + var d = 0.5; + el.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; + el.style.opacity = '0'; + setTimeout(function () { document.body.removeChild(el) }, d * 1000); + }, duration); + }, + +} + +// defines + +const l_body = document.querySelector('.l_body'); + +const sidebar = { + toggle: () => { + if (l_body) { + l_body.classList.add('mobile'); + l_body.classList.toggle("sidebar"); + } + } +} + +const init = { + toc: () => { + stellar.jQuery(() => { + const scrollOffset = 32; + var segs = []; + $("article.md-text :header").each(function (idx, node) { + segs.push(node) + }); + // 定位到激活的目录树(不如pjax体验好) + // const widgets = document.querySelector('.widgets') + // const e1 = document.querySelector('.doc-tree-link.active') + // const offsetTop = e1.getBoundingClientRect().top - widgets.getBoundingClientRect().top - 100 + // if (offsetTop > 0) { + // widgets.scrollBy({top: offsetTop, behavior: 'smooth'}) + // } + // 滚动 + $(document, window).scroll(function (e) { + var scrollTop = $(this).scrollTop(); + var topSeg = null + for (var idx in segs) { + var seg = $(segs[idx]) + if (seg.offset().top > scrollTop + scrollOffset) { + continue + } + if (!topSeg) { + topSeg = seg + } else if (seg.offset().top >= topSeg.offset().top) { + topSeg = seg + } + } + if (topSeg) { + $("#data-toc a.toc-link").removeClass("active") + var link = "#" + topSeg.attr("id") + if (link != '#undefined') { + const highlightItem = $('#data-toc a.toc-link[href="' + encodeURI(link) + '"]') + if (highlightItem.length > 0) { + highlightItem.addClass("active") + const e0 = document.querySelector('.widgets') + const e1 = document.querySelector('#data-toc a.toc-link[href="' + encodeURI(link) + '"]') + const offsetBottom = e1.getBoundingClientRect().bottom - e0.getBoundingClientRect().bottom + 200 + const offsetTop = e1.getBoundingClientRect().top - e0.getBoundingClientRect().top - 64 + if (offsetTop < 0) { + e0.scrollBy(0, offsetTop) + } else if (offsetBottom > 0) { + e0.scrollBy(0, offsetBottom) + } + } + } else { + $('#data-toc a.toc-link:first').addClass("active") + } + } + }) + }) + }, + sidebar: () => { + stellar.jQuery(() => { + $("#data-toc a.toc-link").click(function (e) { + l_body.classList.remove("sidebar"); + }); + }) + }, + relativeDate: (selector) => { + selector.forEach(item => { + const $this = item + const timeVal = $this.getAttribute('datetime') + let relativeValue = util.diffDate(timeVal, true) + if (relativeValue) { + $this.innerText = relativeValue + } + }) + }, + /** + * Tabs tag listener (without twitter bootstrap). + */ + registerTabsTag: function () { + // Binding `nav-tabs` & `tab-content` by real time permalink changing. + document.querySelectorAll('.tabs .nav-tabs .tab').forEach(element => { + element.addEventListener('click', event => { + event.preventDefault(); + // Prevent selected tab to select again. + if (element.classList.contains('active')) return; + // Add & Remove active class on `nav-tabs` & `tab-content`. + [...element.parentNode.children].forEach(target => { + target.classList.toggle('active', target === element); + }); + // https://stackoverflow.com/questions/20306204/using-queryselector-with-ids-that-are-numbers + const tActive = document.getElementById(element.querySelector('a').getAttribute('href').replace('#', '')); + [...tActive.parentNode.children].forEach(target => { + target.classList.toggle('active', target === tActive); + }); + // Trigger event + tActive.dispatchEvent(new Event('tabs:click', { + bubbles: true + })); + }); + }); + + window.dispatchEvent(new Event('tabs:register')); + }, + +} + + +// init +init.toc() +init.sidebar() +init.relativeDate(document.querySelectorAll('#post-meta time')) +init.registerTabsTag() + +// scrollreveal +if (stellar.plugins.scrollreveal) { + stellar.loadScript(stellar.plugins.scrollreveal.js).then(function () { + ScrollReveal().reveal("body .reveal", { + distance: stellar.plugins.scrollreveal.distance, + duration: stellar.plugins.scrollreveal.duration, + interval: stellar.plugins.scrollreveal.interval, + scale: stellar.plugins.scrollreveal.scale, + easing: "ease-out" + }); + }) +} + +// lazyload +if (stellar.plugins.lazyload) { + stellar.loadScript(stellar.plugins.lazyload.js, { defer: true }) + // https://www.npmjs.com/package/vanilla-lazyload + // Set the options globally + // to make LazyLoad self-initialize + window.lazyLoadOptions = { + elements_selector: ".lazy", + }; + // Listen to the initialization event + // and get the instance of LazyLoad + window.addEventListener( + "LazyLoad::Initialized", + function (event) { + window.lazyLoadInstance = event.detail.instance; + }, + false + ); + document.addEventListener('DOMContentLoaded', function () { + window.lazyLoadInstance?.update(); + }); +} + +// stellar js +if (stellar.plugins.stellar) { + for (let key of Object.keys(stellar.plugins.stellar)) { + let js = stellar.plugins.stellar[key]; + if (key == 'linkcard') { + stellar.loadScript(js, { defer: true }).then(function () { + setCardLink(document.querySelectorAll('a.link-card[cardlink]')); + }); + } else { + const els = document.getElementsByClassName('stellar-' + key + '-api'); + if (els != undefined && els.length > 0) { + stellar.jQuery(() => { + stellar.loadScript(js, { defer: true }); + if (key == 'timeline') { + stellar.loadScript(stellar.plugins.marked); + } + }) + } + } + } +} + +// swiper +if (stellar.plugins.swiper) { + const swiper_api = document.getElementById('swiper-api'); + if (swiper_api != undefined) { + stellar.loadCSS(stellar.plugins.swiper.css); + stellar.loadScript(stellar.plugins.swiper.js, { defer: true }).then(function () { + const effect = swiper_api.getAttribute('effect') || ''; + var swiper = new Swiper('.swiper#swiper-api', { + slidesPerView: 'auto', + spaceBetween: 8, + centeredSlides: true, + effect: effect, + loop: true, + pagination: { + el: '.swiper-pagination', + clickable: true, + }, + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + }); + }) + } +} + +// preload +if (stellar.plugins.preload) { + if (stellar.plugins.preload.service == 'instant_page') { + stellar.loadScript(stellar.plugins.preload.instant_page, { + defer: true, + type: 'module', + integrity: 'sha384-OeDn4XE77tdHo8pGtE1apMPmAipjoxUQ++eeJa6EtJCfHlvijigWiJpD7VDPWXV1' + }) + } else if (stellar.plugins.preload.service == 'flying_pages') { + window.FPConfig = { + delay: 0, + ignoreKeywords: [], + maxRPS: 5, + hoverDelay: 25 + }; + stellar.loadScript(stellar.plugins.preload.flying_pages, { defer: true }) + } +} + +// fancybox +if (stellar.plugins.fancybox) { + let selector = 'img[fancybox]:not(.error)'; + if (stellar.plugins.fancybox.selector) { + selector += `, ${stellar.plugins.fancybox.selector}` + } + if (document.querySelectorAll(selector).length !== 0) { + stellar.loadCSS(stellar.plugins.fancybox.css); + stellar.loadScript(stellar.plugins.fancybox.js, { defer: true }).then(function () { + Fancybox.bind(selector, { + groupAll: true, + hideScrollbar: false, + Thumbs: { + autoStart: false, + }, + caption: function (fancybox, carousel, slide) { + return slide.$trigger.alt || null + } + }); + }) + } +} + + +if (stellar.search.service) { + if (stellar.search.service == 'local_search') { + stellar.jQuery(() => { + stellar.loadScript('/js/search/local-search.js', { defer: true }).then(function () { + var $inputArea = $("input#search-input"); + if ($inputArea.length == 0) { + return; + } + var $resultArea = document.querySelector("div#search-result"); + $inputArea.focus(function() { + var path = stellar.search[stellar.search.service]?.path || '/search.json'; + if (path.startsWith('/')) { + path = path.substring(1); + } + path = stellar.config.root + path; + const filter = $inputArea.attr('data-filter') || ''; + searchFunc(path, filter, 'search-input', 'search-result'); + }); + $inputArea.keydown(function(e) { + if (e.which == 13) { + e.preventDefault(); + } + }); + var observer = new MutationObserver(function(mutationsList, observer) { + if (mutationsList.length == 1) { + if (mutationsList[0].addedNodes.length) { + $('.search-wrapper').removeClass('noresult'); + } else if (mutationsList[0].removedNodes.length) { + $('.search-wrapper').addClass('noresult'); + } + } + }); + observer.observe($resultArea, { childList: true }); + }); + }) + } +} + + +// heti +if (stellar.plugins.heti) { + stellar.loadCSS(stellar.plugins.heti.css); + stellar.loadScript(stellar.plugins.heti.js, { defer: true }).then(function () { + const heti = new Heti('.heti'); + + // Copied from heti.autoSpacing() without DOMContentLoaded. + // https://github.com/sivan/heti/blob/eadee6a3b748b3b7924a9e7d5b395d4bce479c9a/js/heti-addon.js + // + // We managed to minimize the code modification to ensure .autoSpacing() + // is synced with upstream; therefore, we use `.bind()` to emulate the + // behavior of .autoSpacing() so we can even modify almost no code. + void (function () { + const $$rootList = document.querySelectorAll(this.rootSelector) + + for (let $$root of $$rootList) { + this.spacingElement($$root) + } + }).bind(heti)(); + + stellar.plugins.heti.enable = false; + }); +} + +if (stellar.plugins.copycode) { + stellar.loadScript(stellar.plugins.copycode.js, { defer: true }) +} \ No newline at end of file diff --git a/js/plugins/copycode.js b/js/plugins/copycode.js new file mode 100644 index 0000000..d0c8be8 --- /dev/null +++ b/js/plugins/copycode.js @@ -0,0 +1,49 @@ +const codeElementArr = document.querySelectorAll('.code') +codeElementArr.forEach(code => { + const codeBeforeWidth = window.getComputedStyle(code, '::before').width.split('px')[0] + const codeBeforePadding = window.getComputedStyle(code, '::before').padding.split(' ').pop().split('px')[0] + + // copy btn + const codeCopyBtn = document.createElement('div') + codeCopyBtn.classList.add('copy-btn') + codeCopyBtn.style.right = Number(codeBeforeWidth) + Number(codeBeforePadding) * 2 + 'px' + codeCopyBtn.innerText = stellar.plugins.copycode.default_text + + code.appendChild(codeCopyBtn) + + codeCopyBtn.addEventListener('click', async () => { + const currentCodeElement = code.children[0]?.innerText + await copyCode(currentCodeElement) + + codeCopyBtn.innerText = stellar.plugins.copycode.success_text + codeCopyBtn.classList.add('success') + + setTimeout(() => { + codeCopyBtn.innerText = stellar.plugins.copycode.default_text + codeCopyBtn.classList.remove('success') + },3000) + }) +}) + +async function copyCode(currentCode) { + if (navigator.clipboard) { + try { + await navigator.clipboard.writeText(currentCode) + } catch (error) { + // 未获得用户许可 + codeCopyBtn.innerText = '未获得用户许可' + codeCopyBtn.classList.add('warning') + setTimeout(() => { + codeCopyBtn.innerText = stellar.plugins.copycode.default_text + codeCopyBtn.classList.remove('warning') + },3000) + } + } else { + codeCopyBtn.innerText = '当前浏览器不支持此api' + codeCopyBtn.classList.add('warning') + setTimeout(() => { + codeCopyBtn.innerText = stellar.plugins.copycode.default_text + codeCopyBtn.classList.remove('warning') + },3000) + } +} \ No newline at end of file diff --git a/js/plugins/fcircle.js b/js/plugins/fcircle.js new file mode 100644 index 0000000..9c3052a --- /dev/null +++ b/js/plugins/fcircle.js @@ -0,0 +1,92 @@ +const FCircle = { + requestAPI: (url, callback, timeout) => { + let retryTimes = 5; + function request() { + return new Promise((resolve, reject) => { + let status = 0; // 0 等待 1 完成 2 超时 + let timer = setTimeout(() => { + if (status === 0) { + status = 2; + timer = null; + reject('请求超时'); + if (retryTimes == 0) { + timeout(); + } + } + }, 5000); + fetch(url).then(function(response) { + if (status !== 2) { + clearTimeout(timer); + resolve(response); + timer = null; + status = 1; + } + if (response.ok) { + return response.json(); + } + throw new Error('Network response was not ok.'); + }).then(function(data) { + retryTimes = 0; + callback(data); + }).catch(function(error) { + if (retryTimes > 0) { + retryTimes -= 1; + setTimeout(() => { + request(); + }, 5000); + } else { + timeout(); + } + }); + }); + } + request(); + }, + layoutDiv: (cfg) => { + const el = $(cfg.el)[0]; + $(el).append('
'); + FCircle.requestAPI(cfg.api, function(data) { + $(el).find('.loading-wrap').remove(); + const arr = data.article_data || []; + const limit = el.getAttribute('limit'); + arr.forEach((item, i) => { + if (limit && i >= limit) { + return; + } + var cell = '
'; + cell += '
'; + cell += ''; + cell += '

' + item.created + '

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

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

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

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

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

' + item.created_at + '

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

    " + matchContent +"...

    "; + } + searchResult.str += "
  • "; + resultList.push(searchResult); + } + }); + if (resultList.length) { + resultList.sort(function(a, b) { + return b.rank - a.rank; + }); + var result ="
      "; + for (var i = 0; i < resultList.length; i++) { + result += resultList[i].str; + } + result += "
    "; + $resultContent.innerHTML = result; + } + }); + } + }); +}; diff --git a/placeholder b/placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/search.json b/search.json new file mode 100644 index 0000000..6cb01e3 --- /dev/null +++ b/search.json @@ -0,0 +1 @@ +[{"title":"常见积分方法","path":"/2023/12/04/math_02/","content":"收录:计算机数学故事 作者:YY同学Serendipity 一、积分表法(常用) 二、换元法 1. 第一换元积分法(右合法) 将积分左边的子式凑成积分变量右侧所需的变元,从而改变积分变量,例如 2. 第二换元积分法(左拆法) 将积分变量直接换元,然后将新变元拆到左侧,例如 3. 三角换元法 将积分变量变换为三角函数形式,例如 用 替换,,得 三、分部积分法 为的原函数,则有 该公式可由乘法求导的链式法则推导出 两边积分 移项后有 四、有理函数积分法(多项式分式积分法) 将分式拆成分式多项式和的形式,例如: 然后就可以分别积分求解啦~ 但是请注意:使用这种方法的前提条件是函数是有理分式,即分子分母部分必须是含 的多次多项式。并且最后分母多项式需要能够进行因式分解,例如例子中 。","tags":["数学"],"categories":["计算机数学故事"]},{"title":"三大微分中值定理","path":"/2023/12/02/math_01/","content":"收录:计算机数学故事 作者:YY同学Serendipity 绘图:勤奋的三塔同学🍊 简述 微分中值定理包括罗尔中值定理、拉格朗日中值定理和柯西中值定理,较多出现在证明题中,该知识点往往考察联想记忆以及灵活运用定理的能力,整体难度中。 一、罗尔(Rolle)中值定理 1. 定义 如果函数满足以下三个条件: 1. 在闭区间 上连续 2. 在开区间 上可导 3. 则在 内有一点 ,满足 2. 证明 如果 是常函数,则显然恒存在 如果 不是常函数,假设在 处取到 ,则 因为 可导,即 所以得证 3. 几何意义 一定存在一条绿线(函数的切线)与 轴平行,如图: 二、拉格朗日(Lagrange)中值定理 1. 定义 如果函数满足以下两个条件: 1. 在闭区间 上连续 2. 在开区间 上可导 则在 内有一点 ,满足 2. 证明(采用函数构造法+罗尔定理) 我们先不急着证明,先观察定理的结论。我们会发现,如果将结论进行一下变形: 其结果是不是很像罗尔定理最后 的结论,因此我们需要构造函数 使 尽量与上式左边相同。我们将含有 的项当作自变量 然后积分找到 这样 然后考虑罗尔定理应用的条件是需要找到 因此当 时有 根据罗尔定理,则在 内有一点 ,满足 因此 变形之后即为拉格朗日中值定理的结论 3. 几何意义 一定存在一条切线,它的斜率等于线 的斜率(即两线平行),如图: 三、柯西(Cauchy)中值定理 1. 定义 如果函数满足以下两个条件: 1. 在闭区间 上连续 2. 在开区间 上可导且 则在 内有一点 ,满足 2. 证明(采用函数构造法+罗尔定理) 同理,受拉格朗日中值定理证明的启发,我们先给原式做变形: 然后积分找到 当 时恰好有 所以根据罗尔定理有 变形之后即为柯西中值定理的结论,定理得证 3. 几何意义 一定存在一条绿线(函数的切线)与红线平行,如图: 小结 可能细心的同学已经发现了,对于微分中值定理其实有: 即拉格朗日中值定理是柯西中值定理 时的特例,而罗尔中值定理也是拉格朗日中值定理 时的特例。从几何意义上讲,一定能找到与两个端点连线相平行的函数切线。这三个定理是从特殊情况推广到一般情况,如果理解了这些,相信大家也能很快地记住这三个非常重要的定理。","tags":["数学"],"categories":["计算机数学故事"]}] \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..ff638f0 --- /dev/null +++ b/tags/index.html @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + 标签 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + + + + + + + + +
    + +
    + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + +
    + + diff --git "a/tags/\346\225\260\345\255\246/index.html" "b/tags/\346\225\260\345\255\246/index.html" new file mode 100644 index 0000000..6cc4c48 --- /dev/null +++ "b/tags/\346\225\260\345\255\246/index.html" @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + 标签:数学 - CS妙妙屋 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + + + + + + + + + + + +
    +
    计算机数学故事
    常见积分方法
    作者:YY同学Serendipity
    +
    +
    计算机数学故事
    三大微分中值定理
    作者:YY同学Serendipity
    +
    + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + +
    + +