diff --git a/README.md b/README.md index 7092236..5818eb4 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,63 @@ -## SmileTheme +

+ Haku +

-一个为typecho移植的主题,源自于[hugo-tania](https://github.com/WingLim/hugo-tania)主题,原本是Hugo的主题,被移植到Typecho上在其基础上进行了深度修改的Smiletheme或许是你在Typecho上最好的选择 +
-[![AdminMD](https://img.shields.io/badge/Magneto-SmileTheme-brightgreen?style=for-the-badge)](https://fmcf.cc/technology/523/) -![Version](https://img.shields.io/badge/Version-1.2.8-critical?style=for-the-badge) -![Repo-size](https://img.shields.io/github/languages/code-size/ouyangyanhuo/SmileTheme?style=for-the-badge) -![License](https://img.shields.io/github/license/ouyangyanhuo/SmileTheme?style=for-the-badge) -![Stars](https://img.shields.io/github/stars/ouyangyanhuo/SmileTheme?style=for-the-badge) -![Forks](https://img.shields.io/github/forks/ouyangyanhuo/SmileTheme?style=for-the-badge&k) +# Tina -原主题:[https://github.com/WingLim/hugo-tania](https://github.com/WingLim/hugo-tania) +_Haku,是 Tina 小姐最爱的喵喵,它在这里守卫着 Tina 小姐_ -## 最近版本更新日志 +
+ +## 年少之梦 + +
+ +本项目及开发者已加入 [「年少之梦」](https://www.teendreams.cn) 组织 + + +
+ +## 更新前注意 + +此更新注意事项仅存在于 2.0.0 正式版本中,请务必认真! +- 在 2.0.0 版本,由于主题更名,因此主题文件夹名称会变更,与旧版本能够共存,但一定要删除旧版本的文件!!否则会导致更新检测冲突。 +- 在 2.0.0 版本,由于主题更名,启用新主题时,会导致原主题的相关设置内容丢失,请启用前做好设置内容的备份! -- 修复主题应用时存在的Bug -- 重构部分页面 -- 本版本属于修复更新,无重大功能更新 +## TinaTheme -## 使用提示 +一个为typecho移植的主题,源自于[hugo-tania](https://github.com/WingLim/hugo-tania)主题,原本是Hugo的主题,被移植到Typecho上在其基础上进行了深度修改的 TinaTheme 或许是你在Typecho上最好的选择 -- 在1.2.7版本更新时,添加了评论区头像优化,使得评论区头像可以通过QQ邮箱解析,并且更改了默认头像源,评论区头像优化是一项无法关闭的内容,如果需要关闭或修改 Gravatar 的代理地址,请前往 `/主题所在目录/core/functions.php` 第 190-211 行 进行修改。 +[![AdminMD](https://img.shields.io/badge/Magneto-TinaTheme-brightgreen?style=for-the-badge)](https://fmcf.cc/technology/523/) +![Version](https://img.shields.io/badge/Version-2.0.0-critical?style=for-the-badge) +![Repo-size](https://img.shields.io/github/languages/code-size/ouyangyanhuo/TinaTheme?style=for-the-badge) +![License](https://img.shields.io/github/license/ouyangyanhuo/TinaTheme?style=for-the-badge) +![Stars](https://img.shields.io/github/stars/ouyangyanhuo/TinaTheme?style=for-the-badge) +![Forks](https://img.shields.io/github/forks/ouyangyanhuo/TinaTheme?style=for-the-badge&k) + +原主题:[https://github.com/WingLim/hugo-tania](https://github.com/WingLim/hugo-tania) + +## 最近版本更新日志 + +- 此版本为开发版(Build22725-Dev) +- 🚀由 SmileTheme 更名为 TinaTheme +- ✨新增了 代码块 +- ✨新增了滚动条样式 +- ✨新增了针对上一篇、下一篇按钮的核心内容 +- ✨新增了加密文章的输入框、提交按钮的样式 +- ✨新增了对 MathJax 和 KaTeX 数学公式的渲染支持 +- ✨重写了 代码高亮 +- ✨重写了上一篇、下一篇按钮 +- 🔪删除了在文章没有设置 标签 时显示的"No Tag" +- 🔪删除了评论头像(负)优化 +- 修复了关闭后台夜间模式后存在的问题 +- 修复评论过长,导致文本溢出的问题 +- 优化更新检测请求的UI +- 完成所有所需页面的重构 +- 调整评论区 取消回复 按钮位置 +- 优化夜间模式评论区输入内容的显示效果 +- 将更新检测请求由 GitHub 移至 Assets-FMCF ## 功能与特性 @@ -35,28 +73,32 @@ - 完善的后台设置系统 +- HighLight.js + +- Pjax + 欢迎提 Issues 和 PRs,欢迎提出建议 ## 使用 -下载主题包并解压 ( 若是从 GitHub 或 Gitee 下载,请把解压出来的文件夹改名为 `SmileTheme` ) ,将文件夹上传至网站文件主题目录 ( `/usr/theme` ) 下,进入网站后台 - 控制台 - 外观 - 启用主题即可。 +下载主题包并解压 ( 若是从 GitHub 或 Gitee 下载,请把解压出来的文件夹改名为 `TinaTheme` ) ,将文件夹上传至网站文件主题目录 ( `/usr/theme` ) 下,进入网站后台 - 控制台 - 外观 - 启用主题即可。 ## 文档 -SmileTheme 文档 : [https://smiletheme.docs.fmcf.cc](https://smiletheme.docs.fmcf.cc) +TinaTheme 文档 : [https://tinatheme.docs.fmcf.cc](https://tinatheme.docs.fmcf.cc) ## Demo 主题效果预览 -SmileTheme主题演示站:[https://smiletheme.fmcf.cc](https://smiletheme.fmcf.cc) +TinaTheme主题演示站:[https://tinatheme.fmcf.cc](https://tinatheme.fmcf.cc) ## 注意 -SmileTheme 使用 [GPL V3.0](https://github.com/ouyangyanhuo/SmileTheme/blob/main/LICENSE) 协议开源,请遵守此协议进行二次开发等。 +TinaTheme 使用 [GPL V3.0](https://github.com/ouyangyanhuo/TinaTheme/blob/main/LICENSE) 协议开源,请遵守此协议进行二次开发等。 -您必须在页脚保留 SmileTheme 主题的名称及其指向链接,否则请不要使用 SmileTheme 主题。 +您必须在页脚保留 TinaTheme 主题的名称及其指向链接,否则请不要使用 TinaTheme 主题。 -您可以删除页脚的作者版权信息,但是不能删除 SmileTheme 主题的名称及其指向链接。 +您可以删除页脚的作者版权信息,但是不能删除 TinaTheme 主题的名称及其指向链接。 ## 捐赠 @@ -64,13 +106,14 @@ SmileTheme 使用 [GPL V3.0](https://github.com/ouyangyanhuo/SmileTheme/blob/mai ## 下载渠道 -1.GitHub [https://github.com/ouyangyanhuo/SmileTheme](https://github.com/ouyangyanhuo/SmileTheme) 适合国外(主仓库) +1.GitHub [https://github.com/ouyangyanhuo/TinaTheme](https://github.com/ouyangyanhuo/TinaTheme) 适合国外(主仓库) 2.取消 Gitee 下载 因为它真的比 Shit 还烂,Gitee仓库会保留,但不会同步、更新。 ## 预览图 -![](https://i.loli.net/2021/08/16/nmvW5uVKHChafsd.png) -![](https://i.loli.net/2021/08/16/sARYjilgO9MF2H1.png) -![](https://i.loli.net/2021/08/16/rcXL5KjbueZ6zQp.png) -![](https://i.loli.net/2021/08/16/wLxGjiPm6pZoyBt.png) -![](https://i.loli.net/2021/08/16/Cq1Dymtsur4eTAV.png) +![](https://tva4.sinaimg.cn/large/008aATBzly1h4lu8mys6rj340e256kjl.jpg) +![](https://tva4.sinaimg.cn/large/008aATBzly1h4lu8ls0w1j340e2561ky.jpg) +![](https://tva4.sinaimg.cn/large/008aATBzly1h4lu8ktiopj31x20ysgys.jpg) +![](https://tva4.sinaimg.cn/large/008aATBzly1h4lu8k558gj31x20ysqgq.jpg) +![](https://tva4.sinaimg.cn/large/008aATBzly1h4lu8l3r4mj31x20ys4ec.jpg) +![](https://i.loli.net/2021/08/16/Cq1Dymtsur4eTAV.png) \ No newline at end of file diff --git a/assets/css/cursor.css b/assets/css/cursor.css index d075ceb..2ad139a 100644 --- a/assets/css/cursor.css +++ b/assets/css/cursor.css @@ -1 +1,2 @@ +/*! CursorCSS for v2.0.0 | Created by Magneto for TinaTheme */ #cursor{position:fixed;width:16px;height:16px;background:#fd3b27;border-radius:8px;opacity:0.25;z-index:10086;pointer-events:none;transition:0.2s ease-in-out;transition-property:background,opacity,transform}#cursor.hidden{opacity:0}#cursor.hover{opacity:0.1;transform:scale(2.5)}#cursor.active{opacity:0.5;transform:scale(0.5)}#clickME{cursor:pointer;display:inline-block;border:1px solid #fd3b27} \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css index ba5457b..38fd3d3 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,2 +1,2 @@ -/*! SmileCSS for v1.2.8 | Created by Magneto for Smiletheme| Size about 28KB */ -html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}:root{--color-mode:light;--h1-color:#343a40;--font-color:#495057;--heading-color:#343a40;--background:white;--dark-font-color:#1b1d25;--medium-font-color:#60656c;--light-font-color:#858b93;--light-background:#f1f4f8;--light-background-hover:#e1e6ed;--border:#d6d9de;--link-color:#5183f5;--link-color-darker:#364fc7;--navbar-color:#1b1d25;--blockquote:#f9f9f9;--blockquote-left:#e3e6eb;--transparent-text:rgba(0,0,0,0.7);--transparent-bg:rgba(0,0,0,0.05);--light-transparent-bg:rgba(255,255,255,0.1);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#fff;--submit-color:#fff;--comment-body-color:#343a40;--comment-meta:rgba(0 0 0 / 44%);--inkpage-li-a-h4-color:#333333}.flex{display:flex;align-items:center}.flex-row{display:flex;flex-direction:column}@media screen and (min-width:800px){.flex-row{flex-direction:row}}.flex-col{flex:1}.flex-two-thirds{flex:2}.justify-center{justify-content:center}html{font-family:-apple-system,BlinkMacSystemFont,helvetica neue,roboto,Roboto,Arial,noto sans,sans-serif,apple color emoji,segoe ui,segoe ui emoji,segoe ui symbol,noto color emoji;color:var(--font-color);font-weight:400;font-size:1rem;line-height:1.75}body{background:var(--background);margin:0;padding:0}section{margin:2rem 0}section:first-of-type{margin-top:0}section>h2{display:flex;align-items:center;font-size:1.6rem;margin-top:0;margin-bottom:.5rem}@media screen and (min-width:800px){section>h2{margin-bottom:2rem}}.index h2,section>h2{border-bottom-width:0}@media screen and (min-width:800px){.index h2,section>h2{border-bottom-width:4px}}a.section-button{font-weight:500;background:var(--light-background);color:var(--dark-font-color);padding:.4rem .6rem;font-size:.8rem;border-radius:.3rem;border-width:0!important;white-space:nowrap;line-height:1;margin-left:2rem;margin-top:.5rem}a.section-button:hover{background:var(--light-background-hover);color:var(--heading-color)}@media screen and (min-width:800px){section{margin:3.5rem 0}section>h2{font-size:2rem;margin:0 0 1rem}}.container{max-width:825px;padding:0 1.5rem;margin-left:auto;margin-right:auto}.container.page p{max-width:600px}@media screen and (min-width:800px){.container{padding:0 2rem}}img{display:inline-block;max-width:100%;height:auto}blockquote,dl,ol,p,table,ul{font-size:1.05rem;margin:0 0 1.5rem}ul{padding:0 1rem}@media screen and (min-width:800px){blockquote,dl,ol,p,table,ul{font-size:1.125rem}ul{padding:0 2rem}}ul li p{margin:0}ul li ul{padding-left:1rem;margin:0}ul li ul li{margin:0}ol li ol{margin-bottom:0}.task-list-item [type=checkbox]{margin-right:.5rem}blockquote{margin:2rem 0;padding:1rem;background:var(--blockquote);font-weight:400;border-left:5px solid var(--blockquote-left)}blockquote:not(pre)>code[class*=language-]{background:rgba(0,0,0,.1)!important}@media screen and (min-width:800px){blockquote{padding:2rem 0 2rem 2rem}}::selection{background:#3b5bdb;color:#fff}h1{color:var(--h1-color)}h3,h4{color:var(--medium-font-color)}h2,h5{color:var(--heading-color)}h1,h2,h3,h4,h5{margin:0 0 1.5rem;font-weight:700;line-height:1.2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3rem}h1{font-size:2.5rem;line-height:1.1}h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:4px solid var(--light-background)}h2 code{font-size:1.75rem!important}h3{font-size:1.5rem;color:var(--font-color);font-weight:600;margin-bottom:1rem}h3 code{font-size:1.4rem!important}h4{font-size:1.3rem;color:var(--font-color);font-weight:500;margin-bottom:1rem;border-bottom:2px solid var(--light-background);padding-bottom:.25rem}h5{font-size:1.2rem;margin-bottom:1rem}@media screen and (min-width:800px){h1{font-size:3rem}h2{font-size:1.9rem}h2 code{font-size:1.9rem!important}h3{font-size:1.7rem;color:var(--font-color);font-weight:600}h3 code{font-size:1.6rem!important}h4{font-weight:400;font-size:1.4rem}}a.link{display:block;padding:.25rem 0;margin:.25rem 0;border-radius:.35rem;font-weight:600;color:var(--dark-font-color)}a.link:hover{color:var(--link-color)}a.button{display:inline-block;border:2px solid var(--link-color);padding:.3rem .6rem;margin-right:.75rem;font-weight:500;background:var(--link-color);color:#fff;border-radius:.35rem;font-size:.9rem}a.button.large{padding:.8rem 1rem;font-size:1.05rem}a.button.secondary{border:2px solid #edf2ff;background:#edf2ff;color:#3b5bdb}a.button.secondary:hover,a.button:hover{border:2px solid var(--link-color-darker);background:var(--link-color-darker);color:#fff}@media screen and (min-width:800px){a.button{font-size:.9rem}a.button.large{padding:1rem 1.5rem;font-size:1.1rem}}p.subtitle{color:var(--medium-font-color);font-size:1.3rem;font-weight:300;margin-bottom:0}@media screen and (min-width:800px){p.subtitle{font-size:1.5rem}}a{color:inherit;text-decoration:none}a.image-link{border-width:0}a code[class*=language-]{color:var(--link-color)!important}a code[class*=language-]:hover{background:var(--link-color)!important;color:#fff!important}main{margin-top:50px}@media screen and (min-width:800px){main{margin-top:0}}.emoji{margin:0 .4rem 0 .1rem}.navbar{width:100%;position:fixed;top:0;left:0;background:var(--navbar-color);box-shadow:0 3px 13px rgba(100,110,140,.1),0 2px 4px rgba(100,110,140,.15);z-index:2;padding:.5rem}.navbar .flex{justify-content:space-between}.navbar a{border-radius:.35rem;margin:0 .05rem;color:rgba(255,255,255,.65);font-weight:400;font-size:.85rem;border:1px solid transparent;padding:0 .3rem;background:0 0}.navbar a:first-of-type{margin-left:-1rem}.navbar a .emoji{display:none}.navbar a.brand{font-weight:500;color:#fff;white-space:nowrap;border:none;display:flex;align-items:center;line-height:1;background:0 0}.navbar a.brand .emoji{display:inline-block!important}.navbar a.brand img{height:22px;width:22px}.navbar button{font-size:1rem;margin-right:-1rem}@media screen and (min-width:500px){.navbar a{font-size:.95rem;padding:.5rem}}@media screen and (min-width:800px){.emoji{margin:0 .5rem 0 .1rem}.navbar{position:static;padding:1.5rem 0;background:0 0;box-shadow:none}.navbar .flex{justify-content:space-between}.navbar a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color)}.navbar a:first-of-type{margin-left:-1.5rem}.navbar a:hover,.navbar a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}.navbar a.brand{font-size:1.3rem;margin-right:3rem;border:none;background:0 0!important;color:var(--dark-font-color)}.navbar a.brand:hover{background:var(--light-background)!important}.navbar a.brand img{height:26px;width:26px;margin-right:.25rem}#dark-mode-button:hover{background:var(--light-background)}}@media print{.navbar{display:none}}#dark-mode-button{display:flex;border:none;padding:.2rem .7rem .2rem .5rem;border-radius:.35rem;box-sizing:content-box;cursor:pointer;font-size:1.1rem;background:0 0}#dark-mode-button .dark{display:none}#dark-mode-button:focus{outline:0}[data-user-color-scheme] #dark-mode-button .light{display:none}[data-user-color-scheme] #dark-mode-button .dark{display:unset}@media screen and (min-width:800px){#dark-mode-button{padding:.95rem .75rem;font-size:1.2rem}}.my{padding-top:2rem}.my a{border:none;margin-right:1rem}.my a:hover{border:none}.post-row{display:flex;align-items:center;width:100%}.post-row time{display:block;flex:0 0 65px}.post-row h3{flex:1}.posts .post:last-of-type a{border-bottom-width:0}.post a{display:flex;align-items:center;justify-content:stretch;padding:1rem 0;border-bottom:2px solid var(--light-background)}.post a:hover{border-radius:.3rem}.post h3{margin-top:.1rem;margin-bottom:0;font-size:1.1rem;font-weight:600}@media screen and (min-width:800px){.posts{margin-left:-1rem;margin-right:-1rem}.post a{padding:.75rem 1rem;border-bottom-color:transparent}.post a:hover{background:var(--light-background)}.post h3{font-size:1.3rem}.post-row time{flex:0 0 80px}}.new-post,.popular-post{display:inline-block;color:#111;padding:.3rem .4rem;border-radius:.3rem;font-size:.85rem;margin-left:1rem}.new-post{background:#d3f9d8}.popular-post{background:#dce6fd;color:var(--heading-color)}@media screen and (min-width:800px){.new-post,.popular-post{margin-bottom:0}}.footer{padding:2rem 0}.footer>.flex{flex-direction:column;align-items:center;justify-content:center}.footer img{height:30px;width:30px}.footer a{border-radius:.35rem;margin:0 .05rem;font-weight:400;font-size:1rem;border:1px solid transparent;padding:.5rem;margin:0 .5rem;color:var(--light-font-color)}.footer a:hover{color:var(--heading-color);background:var(--light-background)}.footer a.img{display:flex;align-items:center;padding:0;margin:0 .75rem;background:0 0}.footer-links{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.flex nav{padding:1rem 0}@media screen and (min-width:800px){.footer>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer a{padding:.75rem}.footer a.img{padding:0 .5rem;margin:0 1rem}}@media print{.footer{display:none}}.small{max-width:600px}.meta,time{color:var(--light-font-color);font-size:.85rem;white-space:nowrap;font-weight:400}.meta{color:var(--medium-font-color);font-size:1rem}table{border-collapse:separate;border-spacing:0;width:100%;max-width:100%;overflow-x:auto}tbody,thead{white-space:nowrap}th{border-bottom:2px solid var(--border)}tfoot th{border-top:1px solid var(--border)}td{border-bottom:1px solid var(--border)}td,th{text-align:left;padding:.75rem;hyphens:auto}tbody tr:nth-child(even){background-color:var(--light-background)}@media screen and (min-width:800px){table{display:table;border:1px solid var(--border)}tbody,thead{white-space:normal}}.count{font-weight:700;color:var(--link-color)}.tags{display:flex!important;flex-wrap:wrap;align-items:center;margin-left:-.5rem;margin-right:-.5rem}.tags>a{display:block;font-weight:500;background:var(--light-background);color:var(--font-color);margin:.2rem;padding:.5rem .6rem;font-size:.8rem;border-radius:.3rem;border-bottom:0;white-space:nowrap;line-height:1}.tags>a:hover{background:var(--light-background-hover);color:var(--heading-color)}mark{background:#ffec99}.utterances{margin-left:-4px;margin-right:-4px}kbd{background-color:#f7f7f7;border:2px solid rgba(0,0,0,.3);border-radius:3px;box-shadow:0 1px rgba(0,0,0,.2),inset 0 0 0 2px #fff;color:#333;display:inline-block;font-family:Helvetica Neue,Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff;font-size:14px}#comments{margin-top:3rem}#comments h2{margin:0}@media print{#comments,.comments{display:none}}#search-query{padding:.8rem 1rem;background:var(--light-background);color:var(--input-color);border:2px solid var(--border);outline:0;width:100%;border-radius:.35rem;font-size:1rem;margin-left:auto;margin-right:auto;margin-bottom:4rem}#search-query:focus{border-color:#5183f5}#search-results{display:none}.filter-container{display:flex;justify-content:flex-start;margin-bottom:1.5rem;flex-wrap:wrap}.filter-item{font-size:.85rem;padding:.5rem .75rem;background:var(--light-background);border-radius:4px;margin-right:.5rem;margin-bottom:.5rem;font-weight:600;cursor:pointer}.filter-item:hover{background:#d8e3fd;color:#3972f4}.filter-item:last-of-type{margin-right:0}.filter-item.active{background:#5183f5;color:#fff}.filter-item.active:hover{color:#fff;background:#2161f2}header{padding:1.5rem 0}header h1{font-size:2rem;display:inline-block;font-weight:600;margin-top:1rem}header u{display:inline-block;text-decoration:none;padding:.4rem 0}.article-header{padding-top:2rem;margin-bottom:.5rem}.article-header .container{padding-left:0;padding-right:0}.article-header .thumb{display:flex;flex-direction:column}.article-header h1{font-weight:700;font-size:1.8rem;margin:0}.article-header .description{font-size:1.2rem;color:var(--light-font-color);font-weight:300;margin-top:2rem;margin-bottom:0}.post-meta{margin-top:1rem;padding:0;color:var(--light-font-color);font-size:.9rem}.post-meta a{color:var(--font-color);border-width:0}.post-meta time{margin-top:.2rem;font-size:.9rem}.post-meta .tags{margin-top:.5rem}.post-meta .tags a{text-decoration:none}.article-post{margin-bottom:2rem}.article-post img{border-radius:5px;display:block;margin-left:auto;margin-right:auto}.article-post a{box-shadow:0 -2px rgba(189,195,199,.5) inset;transition:all .3s ease}.article-post a:hover{box-shadow:0 -10px rgba(189,195,199,.7) inset}.article-post code{overflow-x:auto}.article-post h1 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h1 .anchor .icon{visibility:hidden}.article-post h1:hover .anchor{box-shadow:none}.article-post h1:hover .anchor .icon{visibility:visible}.article-post h2 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h2 .anchor .icon{visibility:hidden}.article-post h2:hover .anchor{box-shadow:none}.article-post h2:hover .anchor .icon{visibility:visible}.article-post h3 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h3 .anchor .icon{visibility:hidden}.article-post h3:hover .anchor{box-shadow:none}.article-post h3:hover .anchor .icon{visibility:visible}.article-post h4 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h4 .anchor .icon{visibility:hidden}.article-post h4:hover .anchor{box-shadow:none}.article-post h4:hover .anchor .icon{visibility:visible}.article-post h5 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h5 .anchor .icon{visibility:hidden}.article-post h5:hover .anchor{box-shadow:none}.article-post h5:hover .anchor .icon{visibility:visible}.article-post h6 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h6 .anchor .icon{visibility:hidden}.article-post h6:hover .anchor{box-shadow:none}.article-post h6:hover .anchor .icon{visibility:visible}@media screen and (min-width:800px){.article-post{margin-bottom:3rem}.article-post h1,.article-post h2,.article-post h3,.article-post h4,.article-post h5{padding-top:1rem}.post-meta{margin-top:.5rem;padding:.5rem 0}header h1{font-size:3rem;margin-top:2rem}header u{background:linear-gradient(transparent 85%,#bac8ff 0)}.article-header{padding-top:3rem}.article-header h1{padding-top:0;font-size:2.5rem}.article-header .thumb{flex-direction:row}.article-header .description{font-size:1.8rem;line-height:1.5}}@media screen and (min-width:1100px){.article-header h1{font-size:2.5rem}}.post-thumbnail{display:block!important}code,pre{font-size:.9rem;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#373b41}:not(pre)>code{color:var(--dark-font-color);background:var(--light-background)}code{padding:3px 5px;border-radius:4px;color:#f8f8f2}pre>code{display:block}.highlight>.chroma{margin:0 0 2rem;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#373b41}.highlight>.chroma code{padding:30px 10px 10px}.highlight>.chroma code[data-lang]::before{position:absolute;top:0;right:0;left:0;padding:2px 10px;width:100%;height:30px;font-size:.9rem;line-height:1.9;font-weight:700;color:#b1b1b1;background:#303339;content:attr(data-lang)}.highlight>.chroma table{position:relative;border:none}.highlight>.chroma table code{padding:0}.highlight>.chroma .lntd:first-child{width:10px}.highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.highlight>.chroma .lntd:last-child{vertical-align:top}.highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.highlight>.chroma table,.highlight>.chroma td,.highlight>.chroma tr{margin:0;padding:0;width:100%;border-collapse:collapse;border:none}.highlight>.chroma .hl{display:block;width:100%;background-color:#000}.highlight>.chroma .lnt{color:#7f7f7f}.highlight>.chroma .ln{padding:0 .4em;color:#7f7f7f}.highlight>.chroma .err{color:#960050}.highlight>.chroma .c{color:#999}.highlight>.chroma .err{color:#f2777a}.highlight>.chroma .k{color:#c9c}.highlight>.chroma .l{color:#f99157}.highlight>.chroma .n{color:#ccc}.highlight>.chroma .o{color:#6cc}.highlight>.chroma .p{color:#ccc}.highlight>.chroma .cm{color:#999}.highlight>.chroma .cp{color:#999}.highlight>.chroma .c1{color:#999}.highlight>.chroma .cs{color:#999}.highlight>.chroma .gd{color:#f2777a}.highlight>.chroma .ge{font-style:italic}.highlight>.chroma .gh{color:#ccc;font-weight:700}.highlight>.chroma .gi{color:#9c9}.highlight>.chroma .gp{color:#999;font-weight:700}.highlight>.chroma .gs{font-weight:700}.highlight>.chroma .gu{color:#6cc;font-weight:700}.highlight>.chroma .kc{color:#c9c}.highlight>.chroma .kd{color:#c9c}.highlight>.chroma .kn{color:#6cc}.highlight>.chroma .kp{color:#c9c}.highlight>.chroma .kr{color:#c9c}.highlight>.chroma .kt{color:#fc6}.highlight>.chroma .ld{color:#9c9}.highlight>.chroma .m{color:#f99157}.highlight>.chroma .s{color:#9c9}.highlight>.chroma .na{color:#69c}.highlight>.chroma .nb{color:#ccc}.highlight>.chroma .nc{color:#fc6}.highlight>.chroma .no{color:#f2777a}.highlight>.chroma .nd{color:#6cc}.highlight>.chroma .ni{color:#ccc}.highlight>.chroma .ne{color:#f2777a}.highlight>.chroma .nf{color:#69c}.highlight>.chroma .nl{color:#ccc}.highlight>.chroma .nn{color:#fc6}.highlight>.chroma .nx{color:#69c}.highlight>.chroma .py{color:#ccc}.highlight>.chroma .nt{color:#6cc}.highlight>.chroma .nv{color:#f2777a}.highlight>.chroma .ow{color:#6cc}.highlight>.chroma .w{color:#ccc}.highlight>.chroma .mf{color:#f99157}.highlight>.chroma .mh{color:#f99157}.highlight>.chroma .mi{color:#f99157}.highlight>.chroma .mo{color:#f99157}.highlight>.chroma .sb{color:#9c9}.highlight>.chroma .sc{color:#ccc}.highlight>.chroma .sd{color:#999}.highlight>.chroma .s2{color:#9c9}.highlight>.chroma .se{color:#f99157}.highlight>.chroma .sh{color:#9c9}.highlight>.chroma .si{color:#f99157}.highlight>.chroma .sx{color:#9c9}.highlight>.chroma .sr{color:#9c9}.highlight>.chroma .s1{color:#9c9}.highlight>.chroma .ss{color:#9c9}.highlight>.chroma .bp{color:#ccc}.highlight>.chroma .vc{color:#f2777a}.highlight>.chroma .vg{color:#f2777a}.highlight>.chroma .vi{color:#f2777a}.highlight>.chroma .il{color:#f99157}.side{width:200px;margin:0 auto}.side p{margin:0}.side-right{float:right;clear:right;margin-right:calc(-200px - 2em);background-color:var(--background)}.side-right p{font-size:.9rem}.footnotes ol li p{margin:0}.footnotes hr{border:none;border-top:1px solid var(--border)}.footnote-ref{box-shadow:none!important}.footnote-backref{box-shadow:none!important}.note-ref{cursor:pointer;border:none;box-shadow:none!important}.note-ref:hover{box-shadow:none;border:none}.bg-number{background:var(--light-background);font-size:.9rem;color:var(--font-color);text-decoration:none;padding:1px 5px;border-radius:5px}@media(max-width:1280px){.side{width:100%;padding:0 2em}.side-right{float:none;clear:both;margin:1em auto;background:0 0}}@media(min-width:1280px){.note-ref:hover~.side{display:inline-block;position:absolute;margin-left:1rem;padding:.5rem;box-sizing:content-box}}.suggested{flex-direction:column;align-items:stretch;margin-left:-1rem;margin-right:-1rem;padding:0}.suggested span{font-weight:400;display:block;font-size:.9rem;color:var(--transparent-text)}.suggested a{background:0 0;margin:.5rem 1rem;border-bottom:none;transition:all .2s ease;padding:1.5rem;border-radius:.35rem;background:var(--light-background);color:var(--heading-color)}.suggested a:hover{transform:translate3D(0,-1px,0);background:var(--light-background-hover)}@media screen and (min-width:800px){.suggested{flex-direction:row}.suggested a{flex:0 0 calc(50% - 2rem)}.suggested a:first-of-type{text-align:right}}.projects .project:last-of-type{border-bottom-width:0}.project{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:2px solid var(--light-background)}.project .icon{font-size:1.5rem;width:40px}.project a{display:flex;align-items:center;margin-bottom:.25rem;border-width:0}.project a:hover h3{text-decoration:underline}.project a.button{margin-left:1.5rem;border-width:2px}.project h3{font-size:1.2rem;margin:0}.project .description{font-size:1.1rem;color:var(--light-font-color)}@media screen and (min-width:800px){.project{border-bottom-width:0}.project h3{font-size:1.3rem}.project .description{font-size:1rem}}.terms a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color);border-radius:.35rem}.terms a:hover{background:var(--light-background);color:var(--dark-font-color)}.pagination{display:flex}.pagination .next-page,.pagination .prev-page{flex-grow:1;flex-shrink:1;display:flex}.pagination .next-page{justify-content:flex-end}.pagination a{border-radius:.35rem;padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color)}.pagination a:hover,.pagination a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}@media(prefers-color-scheme:dark){:root{--color-mode:dark}:root:not([data-user-color-scheme]){--h1-color:white;--font-color:#b3b9c5;--heading-color:#ffd479;--dark-font-color:#ced4da;--background:#1f2022;--medium-font-color:#dee2e6;--light-font-color:#868e96;--light-background:#2D2D31;--light-background-hover:#3b3b3e;--code-background-color:#2e2e30;--border:#404040;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:#1d1d1d;--blockquote:#2b2b2b;--blockquote-left:#191919;--transparent-text:rgba(255,255,255,0.7);--transparent-bg:rgba(0,0,0,0.2);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#fff;--submit-color:#fff;--comment-body-color:#343a40;--comment-meta:rgba(0 0 0 / 44%);--inkpage-li-a-h4-color:#333333}}[data-user-color-scheme=dark]{--h1-color:white;--font-color:#b3b9c5;--heading-color:#ffd479;--dark-font-color:#ced4da;--background:#1f2022;--medium-font-color:#dee2e6;--light-font-color:#868e96;--light-background:#2D2D31;--light-background-hover:#3b3b3e;--code-background-color:#2e2e30;--border:#404040;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:#1d1d1d;--blockquote:#2b2b2b;--blockquote-left:#191919;--transparent-text:rgba(255,255,255,0.7);--transparent-bg:rgba(0,0,0,0.2);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#706d6361;--submit-color:rgb(0 0 0 / 44%);--comment-body-color:#ffd479;--comment-meta:rgba(255 255 255 / 71%);--inkpage-li-a-h4-color:#ffd479}.alert a,a,h1,header a{text-decoration:none}.alert a,.comment-head,cite.fn{font-weight:700}.alert{margin:1em 0;padding:4px 8px;border-radius:0}.alert a{border:0}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.info{color:#1d6fee;border:1px solid #1d6fee}p.comment-user-info{margin-bottom:.5em}.comment-list p.comment-user-info{display:block;margin-bottom:.5em}.info{color:#88b4f6;border:1px solid #88b4f6}.comment-author .avatar{float:left;margin-right:8px;border-radius:100%}.comment-meta{overflow:hidden;line-height:1.4;margin-bottom:10px}.comment .fn{color:#bc403e}.comment-body{padding:30px 0;border-bottom:1px solid #eee;position:relative}.comment-body p{font-size:14px;color:var(--comment-body-color)}.comment-body p:last-child{margin-bottom:0}.comment-body .reply{position:absolute;top:10px;right:0}.comment-body .reply .comment-reply-link{color:#fff;font-family:exoregular;display:inline-block;line-height:1.2;border-radius:3px;padding:3px 8px;background-color:#bc403e;font-size:12px}.comment-list{padding-bottom:30px}.comment-reply-title,.comments-title{font-size:18px;color:rgba(0,0,0,.44);margin-bottom:20px}.comment-form label{display:block;font-size:12px;color:#999}.comment-form p{margin-bottom:20px}.comment-form input[type=text]{line-height:32px;width:260px;padding:0 10px}#comment,.comment-form input[type=text]{border-radius:3px;background-color:var(--comment-background-color);border:1px solid #eee;font-size:14px}#comment{resize:none;padding:10px;box-sizing:border-box;width:100%}.says{display:none}.comment-meta{font-size:14px;color:var(--comment-meta)}.comments-pagination{margin-bottom:15px}#submit{background-color:var(--submit-color);display:inline-block;border:1px solid #eee;padding:4px 8px;font-size:14px;color:#999;cursor:pointer;border-radius:3px}#submit:hover{border-color:#bc403e;color:#bc403e}.says{display:none}.mark{margin:0 5px;padding:2px;background:#ffec99;border-bottom:1px solid #ffec99}.linkpage ul{color:rgba(255,255,255,.15)}.linkpage ul:after{content:" ";clear:both;display:block}.linkpage li{float:left;width:48%;position:relative;-webkit-transition:.3s ease-out;transition:.3s ease-out;border-radius:5px;line-height:1.3;height:90px;display:block}.linkpage h3{margin:15px -25px;padding:0 25px;border-left:5px solid #51aded;background-color:#f7f7f7;font-size:25px;line-height:40px}.linkpage li:hover{background:rgba(230,244,250,.5);cursor:pointer}.linkpage li a{padding:0 10px 0 90px}.linkpage li a img{width:60px;height:60px;border-radius:50%;position:absolute;top:15px;left:15px;cursor:pointer;margin:auto;border:none}.linkpage li a h4{color:var(--inkpage-li-a-h4-color);font-size:18px;margin:0 0 7px;padding-left:90px}.linkpage li a h4:hover{color:#51aded}.linkpage li a h4,.linkpage li a p{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;line-height:1.4;margin:0!important}.linkpage li a p{font-size:12px;color:#999;padding-left:90px}@media(max-width:460px){.linkpage li{width:97%}.linkpage ul{padding-left:5px}} \ No newline at end of file +/*! TinaCSS for v2.0.0 | Created by Magneto for TinaTheme| Size about 25.5KB */ +html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:border-box}:root{--color-mode:light;--h1-color:#343a40;--font-color:#495057;--heading-color:#343a40;--background:white;--dark-font-color:#1b1d25;--medium-font-color:#60656c;--light-font-color:#858b93;--light-background:#f1f4f8;--light-background-hover:#e1e6ed;--border:#d6d9de;--link-color:#5183f5;--link-color-darker:#364fc7;--navbar-color:#1b1d25;--blockquote:#f9f9f9;--blockquote-left:#e3e6eb;--transparent-text:rgba(0,0,0,0.7);--transparent-bg:rgba(0,0,0,0.05);--light-transparent-bg:rgba(255,255,255,0.1);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#fff;--submit-color:#fff;--comment-body-color:#343a40;--comment-meta:rgba(0 0 0 / 44%);--inkpage-li-a-h4-color:#333333;--webkit-scrollbar:rgb(78 76 76 / 30%)}.flex{display:flex;align-items:center}.flex-row{display:flex;flex-direction:column}@media screen and (min-width:800px){.flex-row{flex-direction:row}}.flex-col{flex:1}.flex-two-thirds{flex:2}.justify-center{justify-content:center}html{font-family:-apple-system,BlinkMacSystemFont,helvetica neue,roboto,Roboto,Arial,noto sans,sans-serif,apple color emoji,segoe ui,segoe ui emoji,segoe ui symbol,noto color emoji;color:var(--font-color);font-weight:400;font-size:1rem;line-height:1.75}body{background:var(--background);margin:0;padding:0}section{margin:2rem 0}section:first-of-type{margin-top:0}section>h2{display:flex;align-items:center;font-size:1.6rem;margin-top:0;margin-bottom:.5rem}@media screen and (min-width:800px){section>h2{margin-bottom:2rem}}.index h2,section>h2{border-bottom-width:0}@media screen and (min-width:800px){.index h2,section>h2{border-bottom-width:4px}}a.section-button{font-weight:500;background:var(--light-background);color:var(--dark-font-color);padding:.4rem .6rem;font-size:.8rem;border-radius:.3rem;border-width:0!important;white-space:nowrap;line-height:1;margin-left:2rem;margin-top:.5rem}a.section-button:hover{background:var(--light-background-hover);color:var(--heading-color)}@media screen and (min-width:800px){section{margin:3.5rem 0}section>h2{font-size:2rem;margin:0 0 1rem}}.container{max-width:825px;padding:0 1.5rem;margin-left:auto;margin-right:auto}.container.page p{max-width:600px}@media screen and (min-width:800px){.container{padding:0 2rem}}img{display:inline-block;max-width:100%;height:auto}blockquote,dl,ol,p,table,ul{font-size:1.05rem;margin:0 0 1.5rem}ul{padding:0 1rem}@media screen and (min-width:800px){blockquote,dl,ol,p,table,ul{font-size:1.125rem}ul{padding:0 2rem}}ul li p{margin:0}ul li ul{padding-left:1rem;margin:0}ul li ul li{margin:0}ol li ol{margin-bottom:0}.task-list-item [type=checkbox]{margin-right:.5rem}blockquote{margin:2rem 0;padding:1rem;background:var(--blockquote);font-weight:400;border-left:5px solid var(--blockquote-left)}@media screen and (min-width:800px){blockquote{padding:2rem 0 2rem 2rem}}::selection{background:#3b5bdb;color:#fff}h1{color:var(--h1-color)}h3,h4{color:var(--medium-font-color)}h2,h5{color:var(--heading-color)}h1,h2,h3,h4,h5{margin:0 0 1.5rem;font-weight:700;line-height:1.2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3rem}h1{font-size:2.5rem;line-height:1.1}h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:4px solid var(--light-background)}h2 code{font-size:1.75rem!important}h3{font-size:1.5rem;color:var(--font-color);font-weight:600;margin-bottom:1rem}h3 code{font-size:1.4rem!important}h4{font-size:1.3rem;color:var(--font-color);font-weight:500;margin-bottom:1rem;border-bottom:2px solid var(--light-background);padding-bottom:.25rem}h5{font-size:1.2rem;margin-bottom:1rem}@media screen and (min-width:800px){h1{font-size:3rem}h2{font-size:1.9rem}h3{font-size:1.7rem;color:var(--font-color);font-weight:600}h4{font-weight:400;font-size:1.4rem}}a.link{display:block;padding:.25rem 0;margin:.25rem 0;border-radius:.35rem;font-weight:600;color:var(--dark-font-color)}a.link:hover{color:var(--link-color)}a.button{display:inline-block;border:2px solid var(--link-color);padding:.3rem .6rem;margin-right:.75rem;font-weight:500;background:var(--link-color);color:#fff;border-radius:.35rem;font-size:.9rem}a.button.large{padding:.8rem 1rem;font-size:1.05rem}a.button.secondary{border:2px solid #edf2ff;background:#edf2ff;color:#3b5bdb}a.button.secondary:hover,a.button:hover{border:2px solid var(--link-color-darker);background:var(--link-color-darker);color:#fff}@media screen and (min-width:800px){a.button{font-size:.9rem}a.button.large{padding:1rem 1.5rem;font-size:1.1rem}}p.subtitle{color:var(--medium-font-color);font-size:1.3rem;font-weight:300;margin-bottom:0}@media screen and (min-width:800px){p.subtitle{font-size:1.5rem}}a{color:inherit;text-decoration:none}a.image-link{border-width:0}main{margin-top:50px}@media screen and (min-width:800px){main{margin-top:0}}.emoji{margin:0 .4rem 0 .1rem}.navbar{width:100%;position:fixed;top:0;left:0;background:var(--navbar-color);box-shadow:0 3px 13px rgba(100,110,140,.1),0 2px 4px rgba(100,110,140,.15);z-index:2;padding:.5rem}.navbar .flex{justify-content:space-between}.navbar a{border-radius:.35rem;margin:0 .05rem;color:rgba(255,255,255,.65);font-weight:400;font-size:.85rem;border:1px solid transparent;padding:0 .3rem;background:0 0}.navbar a:first-of-type{margin-left:-1rem}.navbar a .emoji{display:none}.navbar a.brand{font-weight:500;color:#fff;white-space:nowrap;border:none;display:flex;align-items:center;line-height:1;background:0 0}.navbar a.brand .emoji{display:inline-block!important}.navbar a.brand img{height:22px;width:22px}.navbar button{font-size:1rem;margin-right:-1rem}@media screen and (min-width:500px){.navbar a{font-size:.95rem;padding:.5rem}}@media screen and (min-width:800px){.emoji{margin:0 .5rem 0 .1rem}.navbar{position:static;padding:1.5rem 0;background:0 0;box-shadow:none}.navbar .flex{justify-content:space-between}.navbar a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color)}.navbar a:first-of-type{margin-left:-1.5rem}.navbar a:hover,.navbar a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}.navbar a.brand{font-size:1.3rem;margin-right:3rem;border:none;background:0 0!important;color:var(--dark-font-color)}.navbar a.brand:hover{background:var(--light-background)!important}.navbar a.brand img{height:26px;width:26px;margin-right:.25rem}#dark-mode-button:hover{background:var(--light-background)}}@media print{.navbar{display:none}}#dark-mode-button{display:flex;border:none;padding:.2rem .7rem .2rem .5rem;border-radius:.35rem;box-sizing:content-box;cursor:pointer;font-size:1.1rem;background:0 0}#dark-mode-button .dark{display:none}#dark-mode-button:focus{outline:0}[data-user-color-scheme] #dark-mode-button .light{display:none}[data-user-color-scheme] #dark-mode-button .dark{display:unset}@media screen and (min-width:800px){#dark-mode-button{padding:.95rem .75rem;font-size:1.2rem}}.my{padding-top:2rem}.my a{border:none;margin-right:1rem}.my a:hover{border:none}.post-row{display:flex;align-items:center;width:100%}.post-row time{display:block;flex:0 0 65px}.post-row h3{flex:1}.posts .post:last-of-type a{border-bottom-width:0}.post a{display:flex;align-items:center;justify-content:stretch;padding:1rem 0;border-bottom:2px solid var(--light-background)}.post a:hover{border-radius:.3rem}.post h3{margin-top:.1rem;margin-bottom:0;font-size:1.1rem;font-weight:600}@media screen and (min-width:800px){.posts{margin-left:-1rem;margin-right:-1rem}.post a{padding:.75rem 1rem;border-bottom-color:transparent}.post a:hover{background:var(--light-background)}.post h3{font-size:1.3rem}.post-row time{flex:0 0 80px}}.new-post,.popular-post{display:inline-block;color:#111;padding:.3rem .4rem;border-radius:.3rem;font-size:.85rem;margin-left:1rem}.new-post{background:#d3f9d8}.popular-post{background:#dce6fd;color:var(--heading-color)}@media screen and (min-width:800px){.new-post,.popular-post{margin-bottom:0}}.footer{padding:2rem 0}.footer>.flex{flex-direction:column;align-items:center;justify-content:center}.footer img{height:30px;width:30px}.footer a{border-radius:.35rem;margin:0 .05rem;font-weight:400;font-size:1rem;border:1px solid transparent;padding:.5rem;margin:0 .5rem;color:var(--light-font-color)}.footer a:hover{color:var(--heading-color);background:var(--light-background)}.footer a.img{display:flex;align-items:center;padding:0;margin:0 .75rem;background:0 0}.footer-links{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.flex nav{padding:1rem 0}@media screen and (min-width:800px){.footer>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer a{padding:.75rem}.footer a.img{padding:0 .5rem;margin:0 1rem}}@media print{.footer{display:none}}.small{max-width:600px}.meta,time{color:var(--light-font-color);font-size:.85rem;white-space:nowrap;font-weight:400}.meta{color:var(--medium-font-color);font-size:1rem}table{border-collapse:separate;border-spacing:0;width:100%;max-width:100%;overflow-x:auto}tbody,thead{white-space:nowrap}th{border-bottom:2px solid var(--border)}tfoot th{border-top:1px solid var(--border)}td{border-bottom:1px solid var(--border)}td,th{text-align:left;padding:.75rem;hyphens:auto}tbody tr:nth-child(even){background-color:var(--light-background)}@media screen and (min-width:800px){table{display:table;border:1px solid var(--border)}tbody,thead{white-space:normal}}.count{font-weight:700;color:var(--link-color)}.tags{display:flex!important;flex-wrap:wrap;align-items:center;margin-left:-.5rem;margin-right:-.5rem}.tags>a{display:block;font-weight:500;background:var(--light-background);color:var(--font-color);margin:.2rem;padding:.5rem .6rem;font-size:.8rem;border-radius:.3rem;border-bottom:0;white-space:nowrap;line-height:1}.tags>a:hover{background:var(--light-background-hover);color:var(--heading-color)}mark{background:#ffec99}.utterances{margin-left:-4px;margin-right:-4px}kbd{background-color:#f7f7f7;border:2px solid rgba(0,0,0,.3);border-radius:3px;box-shadow:0 1px rgba(0,0,0,.2),inset 0 0 0 2px #fff;color:#333;display:inline-block;font-family:Helvetica Neue,Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff;font-size:14px}#comments{margin-top:3rem}#comments h2{margin:0}@media print{#comments,.comments{display:none}}#search-query{padding:.8rem 1rem;background:var(--light-background);color:var(--input-color);border:2px solid var(--border);outline:0;width:100%;border-radius:.35rem;font-size:1rem;margin-left:auto;margin-right:auto;margin-bottom:4rem}#search-query:focus{border-color:#5183f5}#search-results{display:none}.filter-container{display:flex;justify-content:flex-start;margin-bottom:1.5rem;flex-wrap:wrap}.filter-item{font-size:.85rem;padding:.5rem .75rem;background:var(--light-background);border-radius:4px;margin-right:.5rem;margin-bottom:.5rem;font-weight:600;cursor:pointer}.filter-item:hover{background:#d8e3fd;color:#3972f4}.filter-item:last-of-type{margin-right:0}.filter-item.active{background:#5183f5;color:#fff}.filter-item.active:hover{color:#fff;background:#2161f2}header{padding:1.5rem 0}header h1{font-size:2rem;display:inline-block;font-weight:600;margin-top:1rem}header u{display:inline-block;text-decoration:none;padding:.4rem 0}.article-header{padding-top:2rem;margin-bottom:.5rem}.article-header .container{padding-left:0;padding-right:0}.article-header .thumb{display:flex;flex-direction:column}.article-header h1{font-weight:700;font-size:1.8rem;margin:0}.article-header .description{font-size:1.2rem;color:var(--light-font-color);font-weight:300;margin-top:2rem;margin-bottom:0}.post-meta{margin-top:1rem;padding:0;color:var(--light-font-color);font-size:.9rem}.post-meta a{color:var(--font-color);border-width:0}.post-meta time{margin-top:.2rem;font-size:.9rem}.post-meta .tags{margin-top:.5rem}.post-meta .tags a{text-decoration:none}.article-post{margin-bottom:2rem}.article-post img{border-radius:5px;display:block;margin-left:auto;margin-right:auto}.article-post a{box-shadow:0 -2px rgba(189,195,199,.5) inset;transition:all .3s ease}.article-post a:hover{box-shadow:0 -10px rgba(189,195,199,.7) inset}.article-post code{overflow-x:auto}.article-post h1 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h1 .anchor .icon{visibility:hidden}.article-post h1:hover .anchor{box-shadow:none}.article-post h1:hover .anchor .icon{visibility:visible}.article-post h2 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h2 .anchor .icon{visibility:hidden}.article-post h2:hover .anchor{box-shadow:none}.article-post h2:hover .anchor .icon{visibility:visible}.article-post h3 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h3 .anchor .icon{visibility:hidden}.article-post h3:hover .anchor{box-shadow:none}.article-post h3:hover .anchor .icon{visibility:visible}.article-post h4 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h4 .anchor .icon{visibility:hidden}.article-post h4:hover .anchor{box-shadow:none}.article-post h4:hover .anchor .icon{visibility:visible}.article-post h5 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h5 .anchor .icon{visibility:hidden}.article-post h5:hover .anchor{box-shadow:none}.article-post h5:hover .anchor .icon{visibility:visible}.article-post h6 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h6 .anchor .icon{visibility:hidden}.article-post h6:hover .anchor{box-shadow:none}.article-post h6:hover .anchor .icon{visibility:visible}@media screen and (min-width:800px){.article-post{margin-bottom:3rem}.article-post h1,.article-post h2,.article-post h3,.article-post h4,.article-post h5{padding-top:1rem}.post-meta{margin-top:.5rem;padding:.5rem 0}header h1{font-size:3rem;margin-top:2rem}header u{background:linear-gradient(transparent 85%,#bac8ff 0)}.article-header{padding-top:3rem}.article-header h1{padding-top:0;font-size:2.5rem}.article-header .thumb{flex-direction:row}.article-header .description{font-size:1.8rem;line-height:1.5}}@media screen and (min-width:1100px){.article-header h1{font-size:2.5rem}}.post-thumbnail{display:block!important}code,pre{font-size:.9rem;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#373b41}:not(pre)>code{color:var(--dark-font-color);background:var(--light-background)}code{padding:3px 5px;border-radius:4px;color:#f8f8f2}pre>code{display:block}.side{width:200px;margin:0 auto}.side p{margin:0}.side-right{float:right;clear:right;margin-right:calc(-200px - 2em);background-color:var(--background)}.side-right p{font-size:.9rem}.footnotes ol li p{margin:0}.footnotes hr{border:none;border-top:1px solid var(--border)}.footnote-ref{box-shadow:none!important}.footnote-backref{box-shadow:none!important}.note-ref{cursor:pointer;border:none;box-shadow:none!important}.note-ref:hover{box-shadow:none;border:none}.bg-number{background:var(--light-background);font-size:.9rem;color:var(--font-color);text-decoration:none;padding:1px 5px;border-radius:5px}@media(max-width:1280px){.side{width:100%;padding:0 2em}.side-right{float:none;clear:both;margin:1em auto;background:0 0}}@media(min-width:1280px){.note-ref:hover~.side{display:inline-block;position:absolute;margin-left:1rem;padding:.5rem;box-sizing:content-box}}.suggested{flex-direction:column;align-items:stretch;margin-left:-1rem;margin-right:-1rem;padding:0}.suggested span{font-weight:400;display:block;font-size:.9rem;color:var(--transparent-text)}.suggested a{background:0 0;margin:.5rem 1rem;border-bottom:none;transition:all .2s ease;padding:1.5rem;border-radius:.35rem;background:var(--light-background);color:var(--heading-color)}.suggested a:hover{transform:translate3D(0,-1px,0);background:var(--light-background-hover)}@media screen and (min-width:800px){.suggested{flex-direction:row}.suggested a{flex:0 0 calc(50% - 2rem)}.suggested a:first-of-type{text-align:right}}.projects .project:last-of-type{border-bottom-width:0}.project{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:2px solid var(--light-background)}.project .icon{font-size:1.5rem;width:40px}.project a{display:flex;align-items:center;margin-bottom:.25rem;border-width:0}.project a:hover h3{text-decoration:underline}.project a.button{margin-left:1.5rem;border-width:2px}.project h3{font-size:1.2rem;margin:0}.project .description{font-size:1.1rem;color:var(--light-font-color)}@media screen and (min-width:800px){.project{border-bottom-width:0}.project h3{font-size:1.3rem}.project .description{font-size:1rem}}.terms a{padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color);border-radius:.35rem}.terms a:hover{background:var(--light-background);color:var(--dark-font-color)}.pagination{display:flex}.pagination .next-page,.pagination .prev-page{flex-grow:1;flex-shrink:1;display:flex}.pagination .next-page{justify-content:flex-end}.pagination a{border-radius:.35rem;padding:.75rem 1.25rem;margin:0 .25rem;font-size:1.2rem;font-weight:400;color:var(--font-color)}.pagination a:hover,.pagination a[aria-current=page]{background:var(--light-background);color:var(--dark-font-color)}@media(prefers-color-scheme:dark){:root{--color-mode:dark}:root:not([data-user-color-scheme]){--h1-color:white;--font-color:#dfdfdf;--heading-color:#ffd479;--dark-font-color:#ced4da;--background:#1f2022;--medium-font-color:#dee2e6;--light-font-color:#868e96;--light-background:#2D2D31;--light-background-hover:#3b3b3e;--code-background-color:#2e2e30;--border:#404040;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:#1d1d1d;--blockquote:#2b2b2b;--blockquote-left:#191919;--transparent-text:rgba(255,255,255,0.7);--transparent-bg:rgba(0,0,0,0.2);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#1f2022;--submit-color:rgb(0 0 0 / 0%);--comment-body-color:#ffd479;--comment-meta:rgba(255 255 255 / 71%);--inkpage-li-a-h4-color:#ffd479;--webkit-scrollbar:rgb(255 255 255 / 40%)}}[data-user-color-scheme=dark]{--h1-color:white;--font-color:#dfdfdf;--heading-color:#ffd479;--dark-font-color:#ced4da;--background:#1f2022;--medium-font-color:#dee2e6;--light-font-color:#868e96;--light-background:#2D2D31;--light-background-hover:#3b3b3e;--code-background-color:#2e2e30;--border:#404040;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:#1d1d1d;--blockquote:#2b2b2b;--blockquote-left:#191919;--transparent-text:rgba(255,255,255,0.7);--transparent-bg:rgba(0,0,0,0.2);--light-transparent-bg:rgba(255,255,255,0.05);--comment-background-color:#1f2022;--submit-color:rgb(0 0 0 / 0%);--comment-body-color:#ffd479;--comment-meta:rgba(255 255 255 / 71%);--inkpage-li-a-h4-color:#ffd479;--webkit-scrollbar:rgb(255 255 255 / 40%)}.alert a,a,h1,header a{text-decoration:none}.alert a,.comment-head,cite.fn{font-weight:700}.alert{margin:1em 0;padding:4px 8px;border-radius:0}.alert a{border:0}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.info{color:#1d6fee;border:1px solid #1d6fee}p.comment-user-info{margin-bottom:.5em}.comment-list p.comment-user-info{display:block;margin-bottom:.5em}.info{color:#88b4f6;border:1px solid #88b4f6}.comment-author .avatar{float:left;margin-right:8px;border-radius:100%}.comment-meta{overflow:hidden;line-height:1.4;margin-bottom:10px}.comment .fn{color:#bc403e}.comment-body{padding:30px 0;border-bottom:1px solid #eee;position:relative}.comment-body p{font-size:14px;color:var(--comment-body-color)}.comment-body p:last-child{margin-bottom:0}.comment-body .reply{position:absolute;top:10px;right:0}.comment-body .reply .comment-reply-link{color:#fff;font-family:exoregular;display:inline-block;line-height:1.2;border-radius:3px;padding:3px 8px;background-color:#bc403e;font-size:12px}.comment-list{word-wrap:break-word;padding-bottom:30px}.comment-reply-title,.comments-title{font-size:18px;color:rgba(0,0,0,.44);margin-bottom:20px}.comment-form label{display:block;font-size:12px;color:#999}.comment-form p{margin-bottom:20px}.comment-form input[type=text]{line-height:32px;width:260px;padding:0 10px}#comment,.comment-form input[type=text]{border-radius:3px;background-color:var(--comment-background-color);border:1px solid #fff;font-size:14px;color:var(--font-color)}#comment{resize:none;padding:10px;box-sizing:border-box;width:100%}.says{display:none}.comment-meta{font-size:14px;color:var(--comment-meta)}.comments-pagination{margin-bottom:15px}#submit{background-color:var(--submit-color);display:inline-block;border:1px solid #eee;padding:4px 8px;font-size:14px;color:#999;cursor:pointer;border-radius:3px}#submit:hover{border-color:#bc403e;color:#bc403e}.says{display:none}.mark{margin:0 5px;padding:2px;background:#ffec99;border-bottom:1px solid #ffec99}.linkpage ul{color:rgba(255,255,255,.15)}.linkpage ul:after{content:" ";clear:both;display:block}.linkpage li{float:left;width:48%;position:relative;-webkit-transition:.3s ease-out;transition:.3s ease-out;border-radius:5px;line-height:1.3;height:90px;display:block}.linkpage h3{margin:15px -25px;padding:0 25px;border-left:5px solid #51aded;background-color:#f7f7f7;font-size:25px;line-height:40px}.linkpage li:hover{background:rgba(230,244,250,.5);cursor:pointer}.linkpage li a{padding:0 10px 0 90px}.linkpage li a img{width:60px;height:60px;border-radius:50%;position:absolute;top:15px;left:15px;cursor:pointer;margin:auto;border:none}.linkpage li a h4{color:var(--inkpage-li-a-h4-color);font-size:18px;margin:0 0 7px;padding-left:90px}.linkpage li a h4:hover{color:#51aded}.linkpage li a h4,.linkpage li a p{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;line-height:1.4;margin:0!important}.linkpage li a p{font-size:12px;color:#999;padding-left:90px}@media(max-width:460px){.linkpage li{width:97%}.linkpage ul{padding-left:5px}}pre{position:relative;padding:30px 10px 10px 10px;background:#282b2e;border-radius:8px;box-shadow:rgb(0 0 0 / 30%) 0px 5px 20px;}.article-post pre code{font-family:Consolas;}pre::after{display:block;content:" ";position:absolute;border-radius:50%;background:#ff5f56;width:12px;height:12px;top:0;left:12px;margin-top:12px;-webkit-box-shadow:20px 0 #ffbd2e,40px 0 #27c93f;box-shadow:20px 0 #ffbd2e,40px 0 #27c93f;}code::-webkit-scrollbar{background:transparent;height:6px;}::-webkit-scrollbar{width:10px;height:8px;background-color:rgb(0 0 0 / 0%);}code::-webkit-scrollbar-thumb{background:rgb(255 255 255 / 46%) !important;box-shadow:none !important;border:none !important;border-radius:10px;transition:background 0.3s ease;}::-webkit-scrollbar-thumb{background-color:var(--webkit-scrollbar);border-radius:100px;border:2px solid transparent;background-clip:content-box;}code::-webkit-scrollbar-track{border:none;background:transparent !important;}::-webkit-scrollbar-track{background-color:transparent;}input[type=password]{padding:.8rem 1rem;background:var(--light-background);color:var(--input-color);border:2px solid var(--border);outline:0;width:40%;border-radius:.35rem;font-size:1rem;margin-left:auto;margin-right:auto;margin-bottom:4rem;}input.submit{padding:.8rem 1rem;background:var(--light-background);color:var(--input-color);border:2px solid var(--border);outline:0;border-radius:.35rem;font-size:1rem;margin-left:auto;margin-right:auto;margin-bottom:4rem;} \ No newline at end of file diff --git a/assets/favicon.ico b/assets/favicon.ico index b9545fa..fa02fe7 100755 Binary files a/assets/favicon.ico and b/assets/favicon.ico differ diff --git a/assets/js/cursor.js b/assets/js/cursor.js index 269a439..cd59585 100644 --- a/assets/js/cursor.js +++ b/assets/js/cursor.js @@ -1 +1,2 @@ -var CURSOR;Math.lerp=(a,b,n)=>(1-n)*a+n*b;const getStyle=(el,attr)=>{try{return window.getComputedStyle?window.getComputedStyle(el)[attr]:el.currentStyle[attr]}catch(e){}return""};class Cursor{constructor(){this.pos={curr:null,prev:null};this.pt=[];this.create();this.init();this.render()}move(left,top){this.cursor.style["left"]=`${left}px`;this.cursor.style["top"]=`${top}px`}create(){if(!this.cursor){this.cursor=document.createElement("div");this.cursor.id="cursor";this.cursor.classList.add("hidden");document.body.append(this.cursor)}var el=document.getElementsByTagName('*');for(let i=0;i")4 4,auto!important}`}refresh(){this.scr.remove();this.cursor.classList.remove("hover");this.cursor.classList.remove("active");this.pos={curr:null,prev:null};this.pt=[];this.create();this.init();this.render()}init(){document.onmouseover=e=>this.pt.includes(e.target.outerHTML)&&this.cursor.classList.add("hover");document.onmouseout=e=>this.pt.includes(e.target.outerHTML)&&this.cursor.classList.remove("hover");document.onmousemove=e=>{(this.pos.curr==null)&&this.move(e.clientX-8,e.clientY-8);this.pos.curr={x:e.clientX-8,y:e.clientY-8};this.cursor.classList.remove("hidden")};document.onmouseenter=e=>this.cursor.classList.remove("hidden");document.onmouseleave=e=>this.cursor.classList.add("hidden");document.onmousedown=e=>this.cursor.classList.add("active");document.onmouseup=e=>this.cursor.classList.remove("active")}render(){if(this.pos.prev){this.pos.prev.x=Math.lerp(this.pos.prev.x,this.pos.curr.x,0.15);this.pos.prev.y=Math.lerp(this.pos.prev.y,this.pos.curr.y,0.15);this.move(this.pos.prev.x,this.pos.prev.y)}else{this.pos.prev=this.pos.curr}requestAnimationFrame(()=>this.render())}}(()=>{CURSOR=new Cursor()})(); +/*! CursorJS for v2.0.0 | Created by Magneto for TinaTheme */ +var CURSOR;Math.lerp=(a,b,n)=>(1-n)*a+n*b;const getStyle=(el,attr)=>{try{return window.getComputedStyle?window.getComputedStyle(el)[attr]:el.currentStyle[attr]}catch(e){}return""};class Cursor{constructor(){this.pos={curr:null,prev:null};this.pt=[];this.create();this.init();this.render()}move(left,top){this.cursor.style["left"]=`${left}px`;this.cursor.style["top"]=`${top}px`}create(){if(!this.cursor){this.cursor=document.createElement("div");this.cursor.id="cursor";this.cursor.classList.add("hidden");document.body.append(this.cursor)}var el=document.getElementsByTagName('*');for(let i=0;i")4 4,auto!important}`}refresh(){this.scr.remove();this.cursor.classList.remove("hover");this.cursor.classList.remove("active");this.pos={curr:null,prev:null};this.pt=[];this.create();this.init();this.render()}init(){document.onmouseover=e=>this.pt.includes(e.target.outerHTML)&&this.cursor.classList.add("hover");document.onmouseout=e=>this.pt.includes(e.target.outerHTML)&&this.cursor.classList.remove("hover");document.onmousemove=e=>{(this.pos.curr==null)&&this.move(e.clientX-8,e.clientY-8);this.pos.curr={x:e.clientX-8,y:e.clientY-8};this.cursor.classList.remove("hidden")};document.onmouseenter=e=>this.cursor.classList.remove("hidden");document.onmouseleave=e=>this.cursor.classList.add("hidden");document.onmousedown=e=>this.cursor.classList.add("active");document.onmouseup=e=>this.cursor.classList.remove("active")}render(){if(this.pos.prev){this.pos.prev.x=Math.lerp(this.pos.prev.x,this.pos.curr.x,0.15);this.pos.prev.y=Math.lerp(this.pos.prev.y,this.pos.curr.y,0.15);this.move(this.pos.prev.x,this.pos.prev.y)}else{this.pos.prev=this.pos.curr}requestAnimationFrame(()=>this.render())}}(()=>{CURSOR=new Cursor()})(); \ No newline at end of file diff --git a/assets/js/features.js b/assets/js/features.js index c3ffcf3..813dfa0 100644 --- a/assets/js/features.js +++ b/assets/js/features.js @@ -1,2 +1,2 @@ -/*! SmileJS for v1.2.8 | Created by Magneto for Smiletheme| Size about 2.2KB */ -(()=>{(function(l){let c=!1;l.currentScript&&(c=l.currentScript.dataset.enableFootnotes=="true"),c&&function(){let i=e=>{!e||(e.remove?e.remove():e.parentNode.removeChild(e))},d=(e,t)=>{e.after?e.after(t):e.parentNode.insertBefore(t,e.nextSibling)},h=e=>{var t=e.parentNode,o=e.innerHTML,r=document.createElement("div");d(t,r),r.appendChild(e),e.innerHTML="",e.appendChild(t),t.innerHTML=o,d(r,r.firstElementChild),i(r)};document.querySelectorAll('.footnotes > ol > li[id^="fn"], #refs > div[id^="ref-"]').forEach(function(e){let t=document.querySelectorAll('a[href="#'+e.id+'"]');if(t.length===0)return;t.forEach(function(u){u.removeAttribute("href")});let o=t[0],r=document.createElement("div");if(r.className="side side-right",/^fn/.test(e.id)){r.innerHTML=e.innerHTML;var m=o.innerHTML;r.firstElementChild.innerHTML=''+m+" "+r.firstElementChild.innerHTML,i(r.querySelector('a[href^="#fnref"]')),o.parentNode.tagName==="SUP"&&h(o)}else r.innerHTML=e.outerHTML,o=o.parentNode;d(o,r),o.classList.add("note-ref"),i(e)}),document.querySelectorAll(".footnotes, #refs").forEach(function(e){var t=e.children;if(e.id==="refs")return t.length===0&&i(e);t.length!==2||t[0].tagName!=="HR"||t[1].tagName!=="OL"||t[1].childElementCount===0&&i(e)})}()})(document);var M=function(){for(let l=1;l<=6;l++){let c=document.querySelectorAll(".article-post>h"+l);for(let s=0;s${i.innerHTML}`}}}(),S=function(){let l=document.documentElement,c="user-color-scheme",s="data-user-color-scheme",i=document.getElementById("dark-mode-button"),d=(n,a)=>{try{localStorage.setItem(n,a)}catch(g){}},h=n=>{try{localStorage.removeItem(n)}catch(a){}},e=n=>{try{return localStorage.getItem(n)}catch(a){return null}},t=()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",o=()=>{l.removeAttribute(s),h(c)},r={dark:!0,light:!0},m=n=>{let a=n||e(c);a===t()?o():r[a]?l.setAttribute(s,a):o()},u={dark:"light",light:"dark"},f=()=>{let n=e(c);if(r[n])n=u[n];else if(n===null)n=u[t()];else return;return d(c,n),n};m(),i.addEventListener("click",()=>{m(f())})}();})(); +/*! TinaJS for v2.0.0 | Created by Magneto for TinaTheme| Size about 2.2KB */ +(()=>{(function(l){let c=!1;l.currentScript&&(c=l.currentScript.dataset.enableFootnotes=="true"),c&&function(){let i=e=>{!e||(e.remove?e.remove():e.parentNode.removeChild(e))},d=(e,t)=>{e.after?e.after(t):e.parentNode.insertBefore(t,e.nextSibling)},h=e=>{var t=e.parentNode,o=e.innerHTML,r=document.createElement("div");d(t,r),r.appendChild(e),e.innerHTML="",e.appendChild(t),t.innerHTML=o,d(r,r.firstElementChild),i(r)};document.querySelectorAll('.footnotes > ol > li[id^="fn"], #refs > div[id^="ref-"]').forEach(function(e){let t=document.querySelectorAll('a[href="#'+e.id+'"]');if(t.length===0)return;t.forEach(function(u){u.removeAttribute("href")});let o=t[0],r=document.createElement("div");if(r.className="side side-right",/^fn/.test(e.id)){r.innerHTML=e.innerHTML;var m=o.innerHTML;r.firstElementChild.innerHTML=''+m+" "+r.firstElementChild.innerHTML,i(r.querySelector('a[href^="#fnref"]')),o.parentNode.tagName==="SUP"&&h(o)}else r.innerHTML=e.outerHTML,o=o.parentNode;d(o,r),o.classList.add("note-ref"),i(e)}),document.querySelectorAll(".footnotes, #refs").forEach(function(e){var t=e.children;if(e.id==="refs")return t.length===0&&i(e);t.length!==2||t[0].tagName!=="HR"||t[1].tagName!=="OL"||t[1].childElementCount===0&&i(e)})}()})(document);var M=function(){for(let l=1;l<=6;l++){let c=document.querySelectorAll(".article-post>h"+l);for(let s=0;s${i.innerHTML}`}}}(),S=function(){let l=document.documentElement,c="user-color-scheme",s="data-user-color-scheme",i=document.getElementById("dark-mode-button"),d=(n,a)=>{try{localStorage.setItem(n,a)}catch(g){}},h=n=>{try{localStorage.removeItem(n)}catch(a){}},e=n=>{try{return localStorage.getItem(n)}catch(a){return null}},t=()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",o=()=>{l.removeAttribute(s),h(c)},r={dark:!0,light:!0},m=n=>{let a=n||e(c);a===t()?o():r[a]?l.setAttribute(s,a):o()},u={dark:"light",light:"dark"},f=()=>{let n=e(c);if(r[n])n=u[n];else if(n===null)n=u[t()];else return;return d(c,n),n};m(),i.addEventListener("click",()=>{m(f())})}();})(); \ No newline at end of file diff --git a/assets/js/katex.support.js b/assets/js/katex.support.js new file mode 100644 index 0000000..74a8da3 --- /dev/null +++ b/assets/js/katex.support.js @@ -0,0 +1,2 @@ +/*! KateXJS for v2.0.0 | Created by Magneto for TinaTheme */ +renderMathInElement(document.body,{delimiters:[{left:"$$",right:"$$",display:true},{left:"$",right:"$",display:false},{left:'\\(',right:'\\)',display:false},{left:'\\[',right:'\\]',display:true}]}); \ No newline at end of file diff --git a/comments.php b/comments.php index 5880e27..57745d2 100755 --- a/comments.php +++ b/comments.php @@ -22,7 +22,7 @@ ?>">
- Comment_avatar + gravatar('40', ''); ?> author(); ?>
@@ -47,10 +47,7 @@ comments()->to($comments); ?> allow('comment')): ?>
-
- cancelReply(); ?> -
-

+

cancelReply(); ?>

user->hasLogin()): ?>

user->screenName(); ?>. »

diff --git a/core/functions.php b/core/functions.php index 7fa3f6e..ce3fd76 100755 --- a/core/functions.php +++ b/core/functions.php @@ -1,6 +1,6 @@ fetchAll($select, array(Typecho_Widget::widget('Widget_Abstract_Contents'), 'filter')); } /** - * SmileTheme - compressHtml + * TinaTheme - compressHtml * 代码压缩 */ function compressHtml($html_source) @@ -72,7 +72,7 @@ function compressHtml($html_source) return $compress; } /** - * SmileTheme - Links + * TinaTheme - Links * 友情链接 */ function Links_list() @@ -123,7 +123,7 @@ function Links($short = false) echo $link ? $link : '暂无链接' . "\n"; } /** - * SmileTheme - Verification + * TinaTheme - Verification * 验证系统 */ function themeInit($comment){ @@ -151,7 +151,7 @@ function spam_protection_pre($comment, $post, $result){ return $comment; } /** - * SmileTheme - ShortCode + * TinaTheme - ShortCode * 短代码 */ function getContentTest($content) { @@ -179,7 +179,7 @@ function getContentTest($content) { return $content; } /** - * SmileTheme - Words Count + * TinaTheme - Words Count * 字数统计 */ function word_count($cid){ @@ -188,24 +188,44 @@ function word_count($cid){ return mb_strlen($rs['text'], 'UTF-8'); } /** - * SmileTheme - Comment avatar optimization - * 评论头像优化 - * 为 Gravatar 头像加速,为提供 QQ 邮箱的评论使用 QQ 头像 - * 实验功能 + * TinaTheme - Next or Previous Post + * 上一篇文章、下一篇文章输出修订 + * 为了在 a 标签的内容中同时兼容文章标题和其它内容所写 */ -function Authorimg($email) -{ - $gravatar_source='dn-qiniu-avatar.qbox.me/avatar';//gravatar头像源 - $qqmail_source=str_replace('@qq.com','',$email); - if(stristr($email,'@qq.com')&&is_numeric($qqmail_source)&&strlen($qqmail_source)<11&&strlen($qqmail_source)>4){ - $qqimg = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$qqmail_source; - $qqmail_img_1 = get_headers($qqimg, true); - $qqmail_img_2 = $qqmail_img_1['Location']; - $qqmail_img_3 = json_encode($qqmail_img_2); - $qqmail_img_4 = explode("&k=",$qqmail_img_3)[1]; - echo 'https://q.qlogo.cn/g?b=qq&k='.$qqmail_img_4.'&s=100'; - }else{ - $email= md5($email); - echo 'https://'.$gravatar_source.'/'.$email.'?'; + function prev_post($archive) { + $db = Typecho_Db::get(); + $content = $db->fetchRow($db->select() + ->from('table.contents') + ->where('table.contents.created < ?', $archive->created) + ->where('table.contents.status = ?', 'publish') + ->where('table.contents.type = ?', $archive->type) + ->where('table.contents.password IS NULL') + ->order('table.contents.created', Typecho_Db::SORT_DESC) + ->limit(1)); + if ($content) { + $content = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($content); + echo ''; + } + else { + echo ''; + } } -} \ No newline at end of file + + function next_post($archive) { + $db = Typecho_Db::get(); + $content = $db->fetchRow($db->select() + ->from('table.contents') + ->where('table.contents.created > ? AND table.contents.created < ?', $archive->created, Helper::options()->gmtTime) + ->where('table.contents.status = ?', 'publish') + ->where('table.contents.type = ?', $archive->type) + ->where('table.contents.password IS NULL') + ->order('table.contents.created', Typecho_Db::SORT_ASC) + ->limit(1)); + if ($content) { + $content = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($content); + echo ''; + } + else { + echo ''; + } + } \ No newline at end of file diff --git a/footer.php b/footer.php index d448821..861fa88 100755 --- a/footer.php +++ b/footer.php @@ -1,26 +1,42 @@
options->FooterHTML): ?> options->FooterHTML() ?>
- options->The_Dark_Mode): ?> - + options->MathRender == 'KaTeX'): ?> + + + + + options->MathRender == 'MathJax'): ?> + + + + options->MathRender == 'Close'): ?> + +
options->WebPjax): ?> - - + +
options->cursor): ?> - + input->setAttribute('style', 'display:none'); $form->addInput($TheNotice); - $favicon = new Typecho_Widget_Helper_Form_Element_Text('favicon', NULL, '/usr/themes/SmileTheme/assets/favicon.ico', _t('Favicon 图标'), _t('在这里填入一个图片 URL 地址, 以添加一个 Favicon,留空则不单独设置 Favicon,主题默认 Favicon 地址为 /usr/themes/SmileTheme/assets/favicon.ico')); + $favicon = new Typecho_Widget_Helper_Form_Element_Text('favicon', NULL, '/usr/themes/TinaTheme/assets/favicon.ico', _t('Favicon 图标'), _t('在这里填入一个图片 URL 地址, 以添加一个 Favicon,留空则不单独设置 Favicon,主题默认 Favicon 地址为 /usr/themes/TinaTheme/assets/favicon.ico')); $form->addInput($favicon); $articles = new Typecho_Widget_Helper_Form_Element_Text('articles', NULL, '/index.php/articles.html', _t('Articles URL'), _t('首页全部文章按钮[查看示例图片]指向的链接,需要创建Articles的自定义页面,并在此填入自定义页面的URL才可正常使用,不填则不显示,强烈推荐开启,因为首页不支持文章翻页,一次仅能浏览有限数量文章。')); @@ -93,6 +93,19 @@ function themeConfig($form) { ); $form->addInput($WebPjax); + $MathRender = new Typecho_Widget_Helper_Form_Element_Radio( + 'MathRender', + array( + 'MathJax' => _t('MathJax'), + 'KaTeX' => _t('KaTeX'), + 'Close' => _t('关闭') + ), + 'KaTeX', + _t('数学公式渲染'), + _t('用于对数学公式的渲染') + ); + $form->addInput($MathRender); + /* Link */ $TheNotice = new Typecho_Widget_Helper_Form_Element_Text('TheNotice', NULL, NULL, _t('

Link

')); $TheNotice->input->setAttribute('style', 'display:none'); @@ -229,13 +242,13 @@ function themeConfig($form) { _t('开启后可在首页见到第一个项目推荐,若想要显示,请首先开启项目推荐') ); $form->addInput($Project_1); - $Project_1_Name = new Typecho_Widget_Helper_Form_Element_Text('Project_1_Name', NULL, 'SmileTheme', _t('第一个项目的名称'), _t('')); + $Project_1_Name = new Typecho_Widget_Helper_Form_Element_Text('Project_1_Name', NULL, 'TinaTheme', _t('第一个项目的名称'), _t('')); $form->addInput($Project_1_Name); - $Project_1_URL = new Typecho_Widget_Helper_Form_Element_Text('Project_1_URL', NULL, 'https://www.github.com/ouyangyanhuo/SmileTheme', _t('第一个项目的链接'), _t('这里写第一个项目的链接地址,不填则代表留空')); + $Project_1_URL = new Typecho_Widget_Helper_Form_Element_Text('Project_1_URL', NULL, 'https://www.github.com/ouyangyanhuo/TinaTheme', _t('第一个项目的链接'), _t('这里写第一个项目的链接地址,不填则代表留空')); $form->addInput($Project_1_URL); $Project_1_Describe = new Typecho_Widget_Helper_Form_Element_Textarea('Project_1_Describe', NULL, 'A theme for Typecho', _t('第一个项目的描述'), _t('这里写第一个项目的描述内容,不推荐超过50字,不填则代表留空')); $form->addInput($Project_1_Describe); - $Project_1_Icon = new Typecho_Widget_Helper_Form_Element_Text('Project_1_Icon', NULL, '/usr/themes/SmileTheme/assets/favicon.ico', _t('第一个项目的图标'), _t('这里填入第一个项目的图标的链接,由于未知原因,暂不支持Emoji、Windows表情,若有需要请修改本地代码')); + $Project_1_Icon = new Typecho_Widget_Helper_Form_Element_Text('Project_1_Icon', NULL, '/usr/themes/TinaTheme/assets/favicon.ico', _t('第一个项目的图标'), _t('这里填入第一个项目的图标的链接,由于未知原因,暂不支持Emoji、Windows表情,若有需要请修改本地代码')); $form->addInput($Project_1_Icon); $Project_2 = new Typecho_Widget_Helper_Form_Element_Radio( diff --git a/header.php b/header.php index 6bc8a53..ba3eea5 100755 --- a/header.php +++ b/header.php @@ -29,10 +29,13 @@ + + + options->fancybox): ?> - - - + + + diff --git a/index.php b/index.php index 0e80333..e8f8dca 100755 --- a/index.php +++ b/index.php @@ -1,12 +1,12 @@ WingLim的hugo-tania主题,在其基础上进行了深度修改的Smiletheme或许是你在Typecho上最好的选择 - *
版本检测中... 
- * + * 移植自WingLimhugo-tania主题,在其基础上进行了深度修改的 TinaTheme 或许是你在Typecho上最好的选择 + *
版本检测中... 
+ * * - * @package Smile Theme + * @package Tina Theme * @author Magneto - * @version 1.2.8 + * @version 2.0.0 * @link https://www.fmcf.cc */ @@ -25,6 +25,13 @@

+ options->Icons): ?> + +
@@ -115,5 +122,4 @@
-need('footer.php'); ?> - \ No newline at end of file +need('footer.php'); ?> \ No newline at end of file diff --git a/page-links.php b/page-links.php index 8d9d7c8..ab86dbf 100755 --- a/page-links.php +++ b/page-links.php @@ -54,5 +54,4 @@ -need('footer.php'); ?> - \ No newline at end of file +need('footer.php'); ?> \ No newline at end of file diff --git a/page.php b/page.php index a3a7dde..fa079d3 100755 --- a/page.php +++ b/page.php @@ -52,5 +52,4 @@ -need('footer.php'); ?> - \ No newline at end of file +need('footer.php'); ?> \ No newline at end of file diff --git a/post.php b/post.php index 090cd0b..0b8b162 100755 --- a/post.php +++ b/post.php @@ -23,7 +23,7 @@
- tags(', ', true, 'NoTag'); ?> + tags(', ', true); ?>
@@ -56,12 +56,8 @@
-need('footer.php'); ?> - \ No newline at end of file +need('footer.php'); ?> \ No newline at end of file diff --git a/screenshot.png b/screenshot.png index 32dc086..ae483cc 100755 Binary files a/screenshot.png and b/screenshot.png differ diff --git a/tag.php b/tag.php index 78e3ea2..a825a82 100755 --- a/tag.php +++ b/tag.php @@ -34,5 +34,4 @@ -need('footer.php'); ?> - \ No newline at end of file +need('footer.php'); ?> \ No newline at end of file