redesign 2023

This commit is contained in:
m3tam3re
2023-10-12 14:01:05 +02:00
commit 19bfc7311a
3053 changed files with 76380 additions and 0 deletions

View File

@ -0,0 +1,168 @@
// ==============================
// Variables
// ==============================
// ========== Global ========== //
// Prefix for :root CSS variables.
$prefix: fi- !default;
// Font and Line Height
$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
$global-font-size: 16px !default;
$global-font-weight: 400 !default;
$global-line-height: 1.5rem !default;
// scroll-margin-top of content anchor
$global-scroll-margin-top: 0.5rem;
// Radius of the border
$global-border-radius: 5px !default;
// Color of the background
$global-background-color: #ffffff !default;
$global-background-color-dark: #292a2d !default;
// Color of the text
$global-font-color: #161209 !default;
$global-font-color-dark: #a9a9b3 !default;
// Color of the secondary text
$global-font-secondary-color: #b1b1ba !default;
$global-font-secondary-color-dark: #909092 !default;
// Color of the link
$global-link-color: #ba0066 !default;
$global-link-color-dark: #EC008C !default;
// Color of the hover link
$global-link-hover-color: #EC008C !default; // 潮蓝
$global-link-hover-color-dark: #ba0066 !default;
// Color of m3tam3re-border-color: #ba0066 !default;
$global-border-color-dark: #EC008C !lets-encrypt;
// ========== Global =====m3tam3re===== Scrollbar ========== //
// Color of the scrollbar
$scrollbar-color: #ba0066 !default;
// Color of the hover scrollbar
$scrollbar-hover-color: #EC008C !default;
// ========== Scrollbar ========== //
// ========== Selection ========== //
// Color of the selected text
$selection-color: rgba(72.9, 0, 40, 0.4) !default;
$selection-color-dark: rgba(72.9, 0, 40, 0.4) !default;
// ========== Selection ========== //
// ========== Header ========== //
// Height of the header
$header-height: 3.5rem !default;
// Color of the header background
$header-background-color: #f8f8f8 !default;
$header-background-color-dark: #252627 !default;
// Font style of the header title
$header-title-font-family: $global-font-family !default;
$header-title-font-size: 1.5rem !default;
// Color of the active menu item
$menu-active-color: #EC008C !default;
$menu-active-color-dark: #ba0066 !default;
// Color of the search background
$search-background-color: #e9e9e9 !default;
$search-background-color-dark: #363636 !default;
// ========== Header ========== //
// ========== Tag Cloud ========== //
// Color range of tag cloud
$tag-cloud-start: $global-font-secondary-color!default;
$tag-cloud-end: $global-font-color!default;
$tag-cloud-start-dark: $global-font-secondary-color-dark!default;
$tag-cloud-end-dark: $global-font-color-dark!default;
// ========== Tag Cloud ========== //
// ========== Single Content ========== //
// Font size of the TOC
$toc-title-font-size: 1.2rem !default;
$toc-content-font-size: 1rem !default;
// Color of the single link
$single-link-color: #ba0066 !default; // 花青
$single-link-color-dark: #EC008C !default; // 釉蓝
// Color of the hover single link
$single-link-hover-color: #EC008C !default; // 莲瓣红
$single-link-hover-color-dark: #ba0066 !default; // 羽扇豆蓝
// Color of the table background
$table-background-color: #f6f8fa !default;
$table-background-color-dark: #2d333b !default;
// Color of the table thead
$table-thead-color: #EC008C !default;
$table-thead-color-dark: #ba0066 !default;
// Color of the blockquote
$blockquote-color: #697681 !default;
$blockquote-color-dark: #9ba3aa !default;
// Color of reward
$reward-color: tomato !default;
$reward-color-dark: darken($reward-color, 5%) !default;
// Width of reward image
$reward-img-width: 180px !default;
// ========== Single Content ========== //
// ========== Pagination ========== //
// Color of the link in pagination
$pagination-link-color: #bfbfbf !default;
$pagination-link-color-dark: #b1b1ba !default;
// Color of the hover link in pagination
$pagination-link-hover-color: #ba0066 !default;
$pagination-link-hover-color-dark: #EC008C !default;
// ========== Pagination ========== //
// ========== Code ========== //
// Color of the code
$code-color: #24292f !default;
$code-color-dark: #adbac7 !default;
// Color of the code background
$code-background-color: #f6f8fa !default;
$code-background-color-dark: #2d333b !default;
$code-error-color: #dc3545 !default;
// Color of the hightlight code
$code-hightlight-color: #fff8c5 !default;
$code-hightlight-color-dark: rgba(174, 124, 20, 0.15) !default;
$code-info-color: #EC008C !default;
$code-info-color-dark: #ba0066 !default;
// Font size of the code
$code-font-size: 0.875rem !default;
// Font family of the code
$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
// ========== Code ========== //
// ========== GitHub Corners ========== //
// Color of the GitHub Corners
$github-corner-color: white !default;
$github-corner-color-dark: black !default;
// Color of the GitHub Corners background
$github-corner-fill: $header-background-color-dark !default;
$github-corner-fill-dark: $header-background-color !default;
// ========== GitHub Corners ========== //
@import '_partials/_maps/admonition';
@import '_partials/_maps/code-highlight';
@import '_partials/_maps/code-type';
@import '_partials/_maps/colors';
@import '_partials/_maps/utilities';

View File

@ -0,0 +1,96 @@
@import "../../lib/normalize/normalize";
html {
font-family: $global-font-family;
font-weight: $global-font-weight;
font-display: swap;
font-size: $global-font-size;
line-height: $global-line-height;
width: 100%;
scroll-behavior: smooth;
overflow: overlay;
}
@media screen and (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
/* scrollbar, only support webkit */
::-webkit-scrollbar {
width: 0.5rem;
height: 0.5rem;
}
::-webkit-scrollbar-thumb {
background-color: $scrollbar-color;
@include border-radius($global-border-radius);
&:hover {
background-color: $scrollbar-hover-color;
}
}
::selection {
background-color: $selection-color;
[data-theme='dark'] & {
background-color: $selection-color-dark;
}
}
body {
background-color: $global-background-color;
color: $global-font-color;
scrollbar-color: auto;
@include overflow-wrap(break-word);
&::-webkit-scrollbar {
width: 0.75rem;
height: 0.75rem;
background-color: transparent;
}
&::-webkit-scrollbar-thumb {
background-color: transparent;
background-clip: content-box;
border: 2px solid transparent;
@include border-radius(0.5rem);
}
&[data-scroll]::-webkit-scrollbar-thumb {
background-color: $scrollbar-color;
}
&[data-theme='dark'] {
color: $global-font-color-dark;
background-color: $global-background-color-dark;
}
}
iframe {
border: 0;
@include border-radius($global-border-radius);
}
[role='button'] {
cursor: pointer;
}
summary {
cursor: pointer;
}
abbr[title] {
cursor: help;
text-decoration-skip-ink: none;
}
@include link(true, true);
@import '../_partials/mask';
@import '../_partials/img';
@import '../_partials/icon';
@import '../_partials/details';
@import '../_partials/widgets';

View File

@ -0,0 +1,46 @@
.breadcrumb-container {
padding-inline: 1rem;
font-size: 0.75rem;
@include z-index(1);
@extend .print-d-none;
&.sticky {
position: sticky;
top: $header-height;
}
.breadcrumb {
display: flex;
flex-wrap: wrap;
padding: 0.5rem 0;
margin: 0 auto;
list-style: none;
border-bottom: 1px inset $global-border-color;
background-color: $global-background-color;
@extend %page-style;
[data-theme='dark'] & {
border-bottom-color: $global-border-color-dark;
background-color: $global-background-color-dark;
}
.breadcrumb-item {
display: flex;
+.breadcrumb-item::before {
content: "/";
display: inline-block;
padding-inline: 0.5rem;
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
&.active {
@extend .text-secondary;
}
}
}
}

View File

@ -0,0 +1,66 @@
// ==============================
// Common Styles
// 常用样式
// ==============================
.text-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.text-start {
text-align: left !important;
}
.text-end {
text-align: right !important;
}
.text-center {
text-align: center !important;
}
.d-none {
display: none !important;
}
.d-none-desktop {
display: none;
}
.d-none-mobile {
display: block;
}
.ms-1,
.mx-1 {
margin-left: 0.25rem !important;
}
.me-1,
.mx-1 {
margin-right: 0.25rem !important;
}
.ps-1,
.px-1 {
padding-left: 0.25rem !important;
}
.pe-1,
.px-1 {
padding-right: 0.25rem !important;
}
@each $color, $value in $theme-colors {
.text-#{$color} {
color: #{$value} !important;
[data-theme='dark'] & {
color: #{darken($value, 5%)} !important;
}
}
}
@each $key, $value in $orders {
.order-#{$key} {
order: #{$value} !important;
}
}
.variant-numeric {
font-variant-numeric: tabular-nums lining-nums;
}

View File

@ -0,0 +1,63 @@
footer {
height: auto;
width: 100%;
text-align: center;
line-height: 1.25rem;
padding: 1rem 0;
@extend .print-d-none;
.footer-container {
display: flex;
flex-direction: column;
font-size: 0.875rem;
.footer-line {
width: 100%;
.footer-divider:not(:first-child)::before {
content: '|';
margin-left: 0.25rem;
margin-right: 0.25rem;
}
.fixit-icon {
top: 0.25em;
}
.animate-icon {
color: #dc143c;
animation: icon-animate 1.33s ease-in-out infinite;
}
.run-times {
font-variant-numeric: tabular-nums lining-nums;
}
}
}
@include blur;
}
@keyframes icon-animate {
0%,
100% {
@include transform(scale(1));
}
10%,
30% {
@include transform(scale(0.9));
}
20%,
40%,
60%,
80% {
@include transform(scale(1.1));
}
50%,
70% {
@include transform(scale(1.1));
}
}

View File

@ -0,0 +1,645 @@
header {
width: 100%;
background-color: $header-background-color;
@include z-index(2);
@include transition(box-shadow 0.3s ease);
@extend .print-d-none;
[data-theme='dark'] & {
background-color: $header-background-color-dark;
}
&:hover {
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.1));
[data-theme='dark'] & {
@include box-shadow(0 0 1.5rem 0 rgba(255, 255, 255, 0.1));
}
}
}
.header-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
}
.header-title {
font-family: $header-title-font-family;
font-weight: bold;
margin-right: 0.5rem;
min-width: 10%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@include flex(10);
.logo {
min-height: 1.5em;
height: 1.5em;
vertical-align: middle;
width: auto;
}
.header-title-text {
margin-left: 0.25rem;
margin-right: 0.25rem;
}
.header-subtitle {
margin-left: 0.25rem;
font-size: 0.6em;
}
}
.menu {
margin: 0;
padding: 0;
.menu-item {
list-style: none;
& .dropdown-icon {
margin-left: 0.25rem;
font-size: .875em;
color: $global-font-color;
[data-theme='dark'] & {
color: $global-font-color-dark;
}
&.open::before {
content: "\f078";
}
}
&.active {
>.menu-link,
>.nested-item>.menu-link {
font-weight: bold;
color: $menu-active-color;
[data-theme='dark'] & {
color: $menu-active-color-dark;
}
}
}
&.language-switch,
&.theme-switch {
cursor: pointer;
}
}
}
.search {
position: relative;
input {
color: transparent;
box-sizing: border-box;
height: 2.5rem;
width: 1.25rem;
@include border-radius(0.5rem);
border: none;
outline: none;
background-color: transparent;
vertical-align: baseline !important;
@include transition(width 0.3s ease);
}
@include placeholder(transparent);
.search-button {
margin: 0;
position: absolute;
left: auto;
right: 1rem;
}
.search-toggle {
left: 0.5rem;
right: auto;
#header-desktop.open & {
left: 1rem;
}
}
.search-loading {
display: none;
}
.search-clear {
display: none;
}
.open &,
&.mobile {
input {
color: $global-font-color;
background-color: $search-background-color;
padding: 0 2rem 0 2rem;
}
[data-theme='dark'] & {
input {
color: darken($global-font-color-dark, 10%);
background-color: darken($code-background-color-dark, 5%);
}
@include placeholder($global-font-secondary-color-dark);
}
@include placeholder($global-font-secondary-color);
.search-button {
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
.search-clear:hover {
color: #ff6b6b;
}
.search-toggle:hover {
cursor: default;
}
}
}
.theme-switch {
i {
@include transform(rotate(225deg));
@include transition(transform 0.4s ease);
}
&:hover i {
@include transform(rotate(45deg));
}
}
#header-desktop {
display: block;
position: sticky;
top: 0;
height: $header-height;
line-height: $header-height;
box-sizing: border-box;
[data-header-desktop='normal'] & {
position: static;
}
nav {
overflow: hidden;
white-space: nowrap;
}
.header-wrapper {
// use css native function to calculate max value
padding: 0 2rem 0 MAX(10vh, $header-height);
height: 100%;
&[data-github-corner='right'] {
padding-right: $header-height;
}
.header-title {
font-size: $header-title-font-size;
height: 100%;
}
.menu {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
float: right;
>.menu-item {
&:hover .sub-menu {
display: block;
@include transform(translateX(-0.5rem));
}
&.language-switch:hover .sub-menu {
@include transform(translateX(calc(1.75rem - 100%)));
}
}
.menu-item {
padding: 0 0.5rem;
&.delimiter {
width: 0;
margin: 0.125rem 0.25rem;
padding: 0;
border-left: 1px dashed lighten($global-font-secondary-color, 15%);
[data-theme='dark'] & {
border-left-color: darken($global-font-secondary-color-dark, 15%);
}
}
}
.sub-menu {
position: absolute;
margin: 0;
padding: 0.25rem 0;
display: none;
top: calc(#{$header-height} - 0.75rem);
border-radius: $global-border-radius;
border: 1px solid $global-border-color;
background-color: $header-background-color;
@include transition(box-shadow 0.3s ease);
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.1));
[data-theme='dark'] & {
background-color: $header-background-color-dark;
border-color: $global-border-color-dark;
@include box-shadow(0 0 1.5rem 0 rgba(255, 255, 255, 0.1));
}
.menu-item {
height: $header-height*0.5;
line-height: $header-height*0.5;
max-width: 15rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow-x: hidden;
}
}
}
}
&.open .header-wrapper .menu .menu-item.search {
input {
width: 24rem;
}
}
}
#header-mobile {
display: none;
position: sticky;
top: 0;
min-height: $header-height;
line-height: $header-height;
[data-header-mobile='normal'] & {
position: static;
}
.header-container {
padding: 0;
margin: 0;
.header-wrapper {
padding: 0 1rem;
font-size: 1.125rem;
@include transition(margin-top 0.3s ease);
.header-title {
font-size: $header-title-font-size;
max-width: 80%;
}
.menu-toggle {
line-height: 4rem;
cursor: pointer;
@include transition(width 0.3s ease);
span {
display: block;
background: $global-font-color;
width: 1.5rem;
height: 2px;
@include border-radius(3px);
@include transition(all 0.3s ease-in-out);
[data-theme='dark'] & {
background: $global-font-color-dark;
}
}
span:nth-child(1) {
margin-bottom: 0.5rem;
}
span:nth-child(3) {
margin-top: 0.5rem;
}
&.active {
span:nth-child(1) {
@include transform(rotate(45deg) translate(0.4rem, 0.5rem));
}
span:nth-child(2) {
opacity: 0;
}
span:nth-child(3) {
@include transform(rotate(-45deg) translate(0.4rem, -0.5rem));
}
}
}
}
.menu {
background: $header-background-color;
border-top: 2px solid $global-border-color;
display: none;
overflow-y: overlay;
max-height: 70vh;
@include box-shadow(0 0.125rem 0.25rem rgba(0, 0, 0, 0.1));
[data-theme='dark'] & {
@include box-shadow(0 0.125rem 0.25rem rgba(255, 255, 255, 0.1));
}
&::-webkit-scrollbar {
width: 0;
}
.search-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: ($header-height - 2.5rem) / 2 1rem;
line-height: 2.5rem;
position: sticky;
top: 0;
background-color: $header-background-color;
@include z-index(0, 50);
[data-theme='dark'] & {
background-color: $header-background-color-dark;
}
}
.search {
flex-grow: 10;
.algolia-autocomplete,
input {
width: 100%;
}
}
.search-loading,
.search-clear {
right: 0.5rem;
}
.search-button {
top: 0;
}
.search-cancel {
display: none;
margin-left: 0.75rem;
}
.menu-item {
display: block;
position: relative;
line-height: 2.5rem;
padding: 0 1rem;
&:not(.menu-system):hover {
background-color: lighten($code-background-color, 24%);
[data-theme='dark'] & {
background-color: lighten($code-background-color-dark, 5%);
}
}
.menu-link {
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow-x: hidden;
@include flex(4);
}
& .nested-item {
display: flex;
justify-content: space-between;
align-items: center;
.menu-link {
max-width: 80%;
}
}
}
.menu-system {
display: flex;
justify-content: center;
gap: 0.25rem;
position: sticky;
bottom: 0;
line-height: 2.5rem;
padding: 0 1rem;
background-color: $header-background-color;
[data-theme='dark'] & {
background-color: $header-background-color-dark;
}
.menu-system-item {
padding-inline: 0.5rem;
}
.language-switch {
position: relative;
.language-select {
position: absolute;
opacity: 0;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
}
.sub-menu {
padding-left: 0;
display: none;
&.open {
display: block;
}
.menu-item:hover {
background-color: lighten($global-font-secondary-color, 20%);
[data-theme='dark'] & {
background-color: darken($global-font-secondary-color-dark, 20%);
}
}
}
&.active {
display: block;
}
[data-theme='dark'] & {
background: $header-background-color-dark;
border-top-color: $global-border-color-dark;
}
}
}
&.open {
.header-wrapper {
margin-top: -$header-height;
}
.menu {
padding-top: 0;
border-top: none;
.menu-item {
display: none;
}
.search-cancel {
display: inline;
}
}
}
}
.search-dropdown {
position: fixed;
top: $header-height;
@include z-index(2);
@include box-shadow(0 0.125rem 0.25rem rgba(0, 0, 0, 0.1));
[data-theme='dark'] & {
@include box-shadow(0 0.125rem 0.25rem rgba(255, 255, 255, 0.1));
}
&.desktop {
right: 2rem;
width: 30rem;
}
&.mobile {
right: 0;
width: 100%;
}
.dropdown-menu {
right: 0 !important;
background-color: $global-background-color;
[data-theme='dark'] & {
background-color: $global-background-color-dark;
}
.suggestions {
overflow-y: auto;
max-height: calc(100vh - #{$header-height});
.suggestion {
padding: 0.75rem 1rem;
.suggestion-title {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 1rem;
font-weight: bold;
max-width: 75%;
}
.suggestion-date {
font-size: 0.875rem;
float: right;
text-align: right;
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
.suggestion-context {
line-height: 1.25rem;
@include box(vertical);
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
@include overflow-wrap(break-word);
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
em {
font-style: normal;
background-color: $selection-color;
[data-theme='dark'] & {
background-color: $selection-color-dark;
}
}
&.cursor {
background: darken($code-background-color, 5%);
[data-theme='dark'] & {
background: lighten($code-background-color-dark, 5%);
}
}
&:hover {
cursor: pointer;
}
}
}
.search-empty {
padding: 1rem;
text-align: center;
.search-query {
font-weight: bold;
[data-theme='dark'] & {
color: #ddd;
}
}
}
.search-footer {
padding: 0.5rem 1rem;
float: right;
font-size: 0.8rem;
color: $global-font-secondary-color;
[data-theme='dark'] {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
a {
font-size: 1rem;
}
}
}
}

View File

@ -0,0 +1,41 @@
/** Layout **/
.wrapper {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
main {
flex: 1 0 auto;
aside {
flex: 1;
padding-inline: 0.5rem;
&:first-child {
order: 2;
}
}
&.container {
display: flex;
align-items: flex-start;
justify-content: center;
padding: 0 1rem;
&.container-reverse {
flex-direction: row-reverse;
}
&:has(.home:not(.posts)) {
align-items: center;
}
}
}
}
@import "_core/header";
@import "_core/breadcrumb";
@import "_core/footer";
@import "_core/pagination";

View File

@ -0,0 +1,160 @@
@media only screen and (min-width: 1441px) {
%page-style {
width: 60%;
[data-page-style='wide'] & {
width: 64%;
}
[data-page-style='narrow'] & {
max-width: 800px;
}
}
}
@media only screen and (max-width: 1440px) {
%page-style {
width: 56%;
[data-page-style='wide'] & {
width: 60%;
}
}
}
@media only screen and (max-width: 1200px) {
%page-style {
width: 52%;
[data-page-style='wide'] & {
width: 56%;
}
}
#header-desktop .header-wrapper {
padding-right: 1rem;
}
.search-dropdown.desktop {
right: 1rem;
}
}
@media only screen and (max-width: 960px) {
%page-style {
width: 80% !important;
}
aside {
display: none !important;
}
#toc-static {
display: block;
}
#header-desktop .header-wrapper {
padding-left: 1rem;
}
}
@media only screen and (min-width: 681px) {
.breadcrumb-container.sticky {
body:not([data-header-desktop='sticky']) & {
top: 0;
}
// adjust the scroll margin top of the content anchors on the page
body:not([data-header-desktop='auto']) &+.container .content [id] {
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
}
}
[data-header-desktop='normal'] .page .content [id] {
--#{$prefix}scroll-mt: #{$global-scroll-margin-top};
}
}
@media only screen and (max-width: 680px) {
#header-desktop {
display: none;
}
#header-mobile,
.d-none-desktop {
display: block;
}
.d-none-mobile {
display: none !important;
}
.breadcrumb-container.sticky {
body:not([data-header-mobile='sticky']) & {
top: 0;
}
// adjust the scroll margin top of the content anchors on the page
body:not([data-header-mobile='auto']) &+.container .content [id] {
scroll-margin-top: calc(var(--#{$prefix}scroll-mt) + var(--#{$prefix}breadcrumb-offset));
}
}
[data-header-mobile='normal'] .page .content [id] {
--#{$prefix}scroll-mt: #{$global-scroll-margin-top};
}
%page-style {
width: 100% !important;
}
.page {
.categories-card {
.card-item {
width: 100%;
}
}
}
footer {
.footer-container {
font-size: 0.618rem;
}
}
.pagination .page-item {
margin: 0 5px;
}
}
@media only print {
@page {
size: A4 portrait;
margin: 1.27cm;
}
.page {
width: 100% !important;
padding-top: 0 !important;
&.single {
.single-title,
.single-subtitle,
.post-meta {
text-align: center;
}
}
h1:not(.single-title),
.page-break-before {
page-break-before: always;
}
.page-break-after {
page-break-after: always;
}
}
.print-d-none {
display: none !important;
}
}

View File

@ -0,0 +1,90 @@
.pagination {
display: flex;
flex-direction: row;
justify-content: center;
flex-wrap: wrap;
list-style: none;
white-space: nowrap;
width: 100%;
padding: 1rem 0;
a {
font-size: 0.8rem;
color: $pagination-link-color;
letter-spacing: 0.1rem;
font-weight: 700;
padding: 5px 5px;
text-decoration: none;
@include transition(0.3s);
[data-theme='dark'] & {
color: $pagination-link-color-dark;
}
}
li {
padding: 5px;
margin: 0 10px;
box-sizing: border-box;
position: relative;
display: inline;
&.disabled {
display: none;
}
&:hover a {
color: $pagination-link-hover-color;
}
[data-theme='dark'] &:hover a {
color: $pagination-link-hover-color-dark;
}
&::before,
&::after {
position: absolute;
content: '';
width: 0;
height: 3px;
background: $pagination-link-hover-color;
@include transition(0.3s);
bottom: 0px;
}
[data-theme='dark'] &::before,
[data-theme='dark'] &::after {
background: $pagination-link-hover-color-dark;
}
&::before {
left: 50%;
}
&::after {
right: 50%;
}
&:hover {
&::before,
&::after {
width: 50%;
}
}
&.active {
a {
color: $pagination-link-hover-color;
}
[data-theme='dark'] & a {
color: $pagination-link-hover-color-dark;
}
&::before,
&::after {
width: 50%;
}
}
}
}

View File

@ -0,0 +1,20 @@
/* Resolve style conflicts between third-party plugins */
@keyframes #{$prefix}pulse {
from {
@include transform(scale3d(1, 1, 1));
}
50% {
@include transform(scale3d(1.05, 1.05, 1.05));
}
to {
@include transform(scale3d(1, 1, 1));
}
}
.animate__pulse {
-webkit-animation-name: #{$prefix}pulse !important;
animation-name: #{$prefix}pulse !important;
}

View File

@ -0,0 +1,15 @@
:root {
// Note: Custom variable values only support SassScript inside `#{}`.
// Theme colors varibles
@each $color, $value in $theme-colors {
--#{$prefix}#{$color}: #{$value};
}
@each $color, $value in $theme-colors {
--#{$prefix}#{$color}-dark: #{darken($value, 5%)};
}
// Scroll margin top and Stack sticky top related
--#{$prefix}scroll-mt: calc(#{$header-height} + #{$global-scroll-margin-top});
--#{$prefix}breadcrumb-offset: 2.5rem;
}

View File

@ -0,0 +1,75 @@
// ==============================
// Custom style
// 自定义样式
// ==============================
.button {
background-color: $global-link-color;
transition-duration: 0.4s;
border: none;
border-radius: 5px;
color: $global-background-color;
padding: 8px 16px;
text-align: center;
text-decoration: none;
display: inline-block;
font-weight: bold;
margin: 4px 2px;
transition-duration: 0.4s;
}
.button:hover {
background-color: $global-link-color-dark;
}
[data-theme="dark"] .button {
background-color: $global-link-color-dark;
transition-duration: 0.4s;
border: none;
border-radius: 5px;
color: $global-background-color-dark;
padding: 8px 16px;
text-align: center;
text-decoration: none;
display: inline-block;
font-weight: bold;
margin: 4px 2px;
transition-duration: 0.4s;
}
[data-theme="dark"] .button:hover {
background-color: $global-link-color;
}
.field {
background-color: $global-background-color;
transition-duration: 0.4s;
border: 2px solid $global-link-color;
border-radius: 5px;
color: $global-font-color;
padding: 8px 16px;
font-weight: bold;
margin: 4px 2px;
transition-duration: 0.4s;
}
[data-theme="dark"] .field {
background-color: $global-background-color-dark;
transition-duration: 0.4s;
border: 2px solid $global-link-color-dark;
border-radius: 5px;
color: $global-font-color-dark;
padding: 8px 16px;
font-weight: bold;
margin: 4px 2px;
transition-duration: 0.4s;
}
.newsletter {
border-top: 1px dashed $global-link-color;
margin-top: 20px;
}
[theme="dark"] .newsletter {
border-top: 1px dashed $global-link-color-dark;
margin-top: 20px;
}

View File

@ -0,0 +1,4 @@
// ==============================
// Custom style
// 自定义样式
// ==============================

View File

@ -0,0 +1,5 @@
@mixin blur {
.blur & {
@include filter(blur(1.5px));
}
}

View File

@ -0,0 +1,107 @@
@mixin border-radius($value) {
-webkit-border-radius: $value;
-moz-border-radius: $value;
border-radius: $value;
}
@mixin box-shadow($values...) {
-webkit-box-shadow: $values;
box-shadow: $values;
}
@mixin transition($values...) {
-webkit-transition: $values;
-moz-transition: $values;
-o-transition: $values;
transition: $values;
}
@mixin transform($value) {
-webkit-transform: $value;
-ms-transform: $value;
-o-transform: $value;
transform: $value;
}
@mixin filter($value) {
-webkit-filter: $value;
filter: $value;
}
@mixin flex($value) {
-webkit-flex: $value;
flex: $value;
}
@mixin box($orient) {
display: -moz-box;
display: -webkit-box;
display: box;
-webkit-box-orient: $orient;
-moz-box-orient: $orient;
box-orient: $orient;
}
@mixin placeholder($color) {
input::-webkit-input-placeholder {
color: $color;
}
input:-moz-placeholder {
color: $color;
}
input::-moz-placeholder {
color: $color;
}
input:-ms-input-placeholder {
color: $color;
}
input::placeholder {
color: $color;
}
}
@mixin max-content($property) {
#{$property}: -webkit-max-content;
#{$property}: -moz-max-content;
#{$property}: intrinsic;
#{$property}: max-content;
}
@mixin tab-size($value) {
-moz-tab-size: $value;
-o-tab-size: $value;
tab-size: $value;
}
@mixin appearance($value) {
-moz-appearance: $value;
-webkit-appearance: $value;
}
@mixin overflow-wrap($value) {
word-wrap: $value;
overflow-wrap: $value;
}
@mixin line-break($value) {
-webkit-line-break: $value;
-ms-line-break: $value;
line-break: $value;
}
@mixin object-fit($value) {
-o-object-fit: $value;
object-fit: $value;
font-family: 'object-fit: #{$value};';
}
@mixin user-select($value) {
-webkit-user-select: $value !important;
-moz-user-select: $value !important;
user-select: $value !important;
}

View File

@ -0,0 +1,7 @@
@mixin details-transition-open {
@include transition(max-height 0.2s cubic-bezier(0, 1, 0, 1) -0.1s);
}
@mixin details-transition-close {
@include transition(max-height 0.2s cubic-bezier(0.5, 0, 1, 0) 0s);
}

View File

@ -0,0 +1,5 @@
@import '_compatibility';
@import '_link';
@import '_blur';
@import '_details';
@import '_z-index';

View File

@ -0,0 +1,46 @@
@mixin link($light, $dark) {
a,
a::before,
a::after {
text-decoration: none;
@if $light {
color: $global-link-color;
}
@else {
color: $single-link-color;
}
[data-theme='dark'] & {
@if $dark {
color: $global-link-color-dark;
}
@else {
color: $single-link-color-dark;
}
}
}
a:active,
a:hover {
@if $light {
color: $global-link-hover-color;
}
@else {
color: $single-link-hover-color;
}
[data-theme='dark'] & {
@if $dark {
color: $global-link-hover-color-dark;
}
@else {
color: $single-link-hover-color-dark;
}
}
}
}

View File

@ -0,0 +1,3 @@
@mixin z-index($level, $diff: 0) {
z-index: ($level * 100) + $diff;
}

View File

@ -0,0 +1,4 @@
// ==============================
// Override Variables
// 覆盖变量
// ==============================

View File

@ -0,0 +1,6 @@
#content-404 {
font-size: 1.8rem;
line-height: 3rem;
@include transform(translateY(30vh));
text-align: center;
}

View File

@ -0,0 +1,27 @@
.archive {
.single-title {
padding: 1rem 0 0.5rem;
margin: 0;
font-size: 1.6rem;
font-weight: bold;
line-height: 140%;
text-align: right;
}
.single-subtitle {
margin: 0.5rem 0;
font-size: 1.2rem;
font-weight: normal;
line-height: 100%;
text-align: right;
}
.group-title {
font-size: 1.2rem;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
@import '../_partials/_archive/terms';
@import '../_partials/_archive/tags';
}

View File

@ -0,0 +1,63 @@
/**
* @Description: Style of layout named 'friends'.
* @Author: Lruihao <https://lruihao.cn>
* @Updated: 2022/3/11 21:36
*/
.friend-links {
margin-top: 1rem;
display: flex;
flex-direction: row;
justify-content: space-between;
flex-wrap: wrap;
}
@media (max-width: 576px) {
.friend-links {
justify-content: space-around;
}
}
.friend-link {
width: 150px;
height: 200px;
font-size: 1rem;
text-align: center;
background: rgba(255, 255, 255, 0.3);
box-sizing: border-box;
box-shadow: 3px 3px 5px #aaa;
@include border-radius($global-border-radius);
border: none;
transition-duration: 0.3s;
margin-bottom: 1rem;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.friend-link:hover {
background: #fff;
@include transform(scale(1.03));
box-shadow: 0 0 3px #aaa;
}
.friend-avatar {
object-fit: cover;
object-position: center;
width: 100% !important;
height: 150px !important;
@include border-radius($global-border-radius);
margin: 0;
padding: 0;
}
.friend-nickname {
display: block;
position: relative;
color: #2bbc8a;
font-weight: bold;
max-width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
line-height: 18px;
margin-bottom: 1rem;
}
.friend-nickname:hover {
color: #d480aa;
}

View File

@ -0,0 +1,189 @@
.home {
.home-profile {
text-align: center;
.home-avatar {
padding: 0.5rem;
img {
display: inline-block;
width: 8rem;
height: auto;
margin: 0 auto;
@include border-radius(100%);
@include box-shadow(0 0 0 0.3618em rgba(0, 0, 0, 0.05));
@include transition(all 0.4s ease);
[data-theme='dark'] & {
@include box-shadow(0 0 0 0.3618em rgba(255, 255, 255, 0.05));
}
&:hover {
position: relative;
@include transform(translateY(-0.75rem));
}
}
}
.home-title {
font-size: 1.25rem;
font-weight: bold;
margin: 0;
padding: 0.5rem;
}
.home-subtitle {
font-size: 1rem;
font-weight: normal;
margin: 0;
padding: 0.5rem;
}
.links {
padding: 0.5rem;
font-size: 1.5rem;
a * {
vertical-align: text-bottom;
}
img {
height: 1.5rem;
padding: 0 0.25rem;
}
}
.home-disclaimer {
font-size: 1rem;
line-height: 1.5rem;
font-weight: normal;
margin: 0;
padding: 0.5rem;
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
}
}
.home.posts {
.home-profile {
padding: 2rem 0;
}
.home-avatar img {
width: 6rem;
}
.summary {
padding-top: 1rem;
padding-bottom: 0.8rem;
color: $global-font-color;
border-bottom: 1px dashed $global-border-color;
&:first-of-type {
padding-top: 0;
}
[data-theme='dark'] & {
color: $global-font-color-dark;
border-bottom: 1px dashed $global-border-color-dark;
}
.featured-image-preview {
width: 100%;
padding: 30% 0 0;
position: relative;
margin: 0.6rem auto;
@include transition(transform 0.4s ease);
img {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
@include object-fit(cover);
}
&:hover {
@include transform(scale(1.01));
}
}
.single-title {
font-size: 1.25rem;
line-height: 140%;
margin: 0.4rem 0;
}
.content {
@include box(vertical);
-webkit-line-clamp: 3;
margin-top: 0.3rem;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
@include overflow-wrap(break-word);
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
h2,
h3,
h4,
h5,
h6,
p {
font-size: 1rem;
line-height: 1.5;
display: inline;
&::after {
content: '\A';
white-space: pre;
}
}
h2 {
font-size: 1.125rem;
}
@include link(false, true);
b,
strong {
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
}
.post-footer {
margin-top: 0.4rem;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.875rem;
@include link(false, false);
.post-tags {
padding: 0;
@include link(true, true);
.post-tag:not(:last-child)::after {
content: ',';
margin-right: 0.25rem;
}
}
}
}
}

View File

@ -0,0 +1,20 @@
.page {
position: relative;
@extend %page-style;
.content {
[id] {
scroll-margin-top: var(--#{$prefix}scroll-mt);
}
}
@include blur;
}
@import '_single';
@import '_special';
@import '_archive';
@import '_home';
@import '_404';
@import '_offline';
@import '_friends';

View File

@ -0,0 +1,19 @@
#content-offline {
@include transform(translateY(30vh));
text-align: center;
.offline-title {
font-size: 3.6rem;
}
.offline-subtitle {
margin: 0.4rem 0;
font-size: 1rem;
font-weight: normal;
font-style: italic;
line-height: 100%;
color: #57606a;
}
.error-text {
font-size: 1.2rem;
}
}

View File

@ -0,0 +1,393 @@
@import '../_partials/_single/toc';
@import '../_partials/_single/fixit-decryptor';
.single {
.single-title {
padding: 1rem 0 0.5rem;
margin: 0;
font-size: 1.6rem;
font-weight: bold;
line-height: 140%;
.icon-repost {
color: var(--#{$prefix}success);
display: inline-block;
width: max-content;
margin-right: 0.25rem;
[data-theme='dark'] & {
color: var(--#{$prefix}success-dark);
}
}
}
.single-subtitle {
margin: 0.5rem 0;
font-size: 1.2rem;
font-weight: normal;
line-height: 100%;
}
.post-meta {
font-size: 0.875rem;
color: $global-font-secondary-color;
.comment-visitors,
.comment-count {
@extend .print-d-none;
}
span {
display: inline-block;
}
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
@include link(false, true);
.author {
font-size: 1.05rem;
img.avatar {
width: 1.3rem;
height: 1.3rem;
border-radius: 50%;
vertical-align: text-bottom;
border: 0.25px solid $global-border-color;
box-sizing: border-box;
object-position: center;
@include object-fit(cover);
[data-theme='dark'] & {
border-color: $global-border-color-dark;
}
}
}
}
.featured-image {
margin: 0.5rem 0 1rem 0;
img {
display: block;
width: 100%;
max-width: 100%;
height: auto;
margin: 0 auto;
overflow: hidden;
}
}
#content[data-end-flag]:not([data-password])::after {
content: attr(data-end-flag);
display: block;
text-align: center;
color: $global-font-secondary-color;
font-size: 15px;
padding: 5px;
}
.content {
> h1,
> h2 {
font-size: 1.5rem;
& code {
font-size: 1.25rem;
}
}
> h3 {
font-size: 1.375rem;
& code {
font-size: 1.125rem;
}
}
> h4 {
font-size: 1.25rem;
& code {
font-size: 1rem;
}
}
> h5 {
font-size: 1.125rem;
}
> h6 {
font-size: 1rem;
}
h2,
h3,
h4,
h5,
h6 {
font-weight: bold;
margin: 1.2rem 0;
[data-theme='dark'] & {
font-weight: bolder;
}
}
> h2,
> h3,
> h4,
> h5,
> h6 {
> .header-mark::before {
content: '|';
margin-right: 0.3125rem;
color: $single-link-color;
[data-theme='dark'] & {
color: $single-link-color-dark;
}
}
}
> h2 > .header-mark::before {
content: '#';
}
p {
margin: 0.5rem 0;
}
b,
strong {
font-weight: bold;
[data-theme='dark'] & {
color: #ddd;
}
}
@include link(false, false);
a {
white-space: normal;
@include overflow-wrap(break-word);
[data-theme='dark'] & b,
[data-theme='dark'] & strong {
color: $single-link-color-dark;
}
}
[data-theme='dark'] a:hover b,
[data-theme='dark'] a:hover strong {
color: $single-link-hover-color-dark;
}
ul,
ol {
margin: 0.5rem 0;
padding-left: 2.5rem;
}
ul {
list-style-type: disc;
}
ruby {
background: $code-background-color;
rt {
color: $global-font-secondary-color;
}
[data-theme='dark'] & {
background: $code-background-color-dark;
rt {
color: $global-font-secondary-color-dark;
}
}
}
.table-wrapper {
overflow-x: auto;
&::-webkit-scrollbar {
background-color: $table-background-color;
[data-theme='dark'] & {
background-color: $table-background-color-dark;
}
}
> table {
width: 100%;
max-width: 100%;
margin: 0.625rem 0;
border-spacing: 0;
background: $table-background-color;
border-collapse: collapse;
[data-theme='dark'] & {
background: $table-background-color-dark;
}
thead {
background: $table-thead-color;
[data-theme='dark'] & {
background-color: $table-thead-color-dark;
}
}
&:not([class]) tbody {
& tr:nth-child(odd) {
background: darken($table-background-color, 2.25%);
[data-theme='dark'] & {
background-color: lighten($table-background-color-dark, 2.75%);
}
}
& tr:hover {
background: darken($table-background-color, 4.5%);
[data-theme='dark'] & {
background-color: lighten($table-background-color-dark, 5.5%);
}
}
}
th,
td {
padding: 0.3rem 1rem;
border: 1px solid darken($table-thead-color, 2%);
[data-theme='dark'] & {
border-color: darken($table-thead-color-dark, 2%);
}
}
}
}
img {
max-width: 100%;
min-height: 1em;
&:not([data-h]) {
height: auto;
}
&.version {
height: 1.25em;
vertical-align: text-bottom;
}
}
svg {
max-width: 100%;
}
figure {
margin: 0.5rem;
text-align: center;
.image-caption:not(:empty) {
min-width: 20%;
max-width: 80%;
display: inline-block;
padding: 0.5rem;
margin: 0 auto;
font-size: 0.875rem;
color: #969696;
}
img {
display: block;
margin: 0 auto;
overflow: hidden;
&:not([width]) {
width: 100%;
}
}
}
blockquote {
display: block;
border-left: 0.25em solid $global-border-color;
color: $blockquote-color;
padding: 0 1em;
margin: 1rem 0;
ul,
ol {
padding-left: 1.5em;
}
[data-theme='dark'] & {
color: $blockquote-color-dark;
border-left-color: $global-border-color-dark;
}
@include link(false, true);
}
.footnotes {
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
p {
margin: 0.25rem 0;
}
}
@import '../_partials/_single/code';
@import '../_shortcodes';
hr {
margin: 1rem 0;
position: relative;
border-top: 1px dashed $global-border-color;
border-bottom: none;
[data-theme='dark'] & {
border-top: 1px dashed $global-border-color-dark;
}
}
kbd {
display: inline-block;
padding: 0 0.25rem;
background-color: $global-background-color;
border: 1px solid $global-border-color;
border-bottom-color: $global-border-color;
font-size: 0.8rem;
font-family: $code-font-family;
color: $code-color;
@include border-radius($global-border-radius);
@include box-shadow(inset 0 -1px 0 $global-border-color);
[data-theme='dark'] & {
background-color: $global-background-color-dark;
border: 1px solid $global-border-color-dark;
border-bottom-color: $global-border-color-dark;
color: $code-color-dark;
@include box-shadow(inset 0 -1px 0 $global-border-color-dark);
}
}
}
@import '../_partials/_single/reward';
@import '../_partials/_single/footer';
@import '../_partials/_single/comment';
}
.lg-toolbar .lg-icon::after {
color: #999;
}

View File

@ -0,0 +1,6 @@
.special {
.single-title,
.single-subtitle {
text-align: right;
}
}

View File

@ -0,0 +1,69 @@
.tag-cloud-tags {
margin: 10px 0;
@include link(true, true);
a {
display: inline-block;
position: relative;
margin: 5px 10px;
@include overflow-wrap(break-word);
@include transition(all ease-out 0.3s);
&:active,
&:focus,
&:hover {
@include transform(scale(1.2));
sup {
color: $global-font-color;
@include transition(all ease-out 0.3s);
[data-theme='dark'] & {
color: $global-font-color-dark;
}
}
}
sup {
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
}
}
@for $grade from 0 through 10 {
$tag-cloud-color: mix($tag-cloud-end, $tag-cloud-start, $grade * 10);
$tag-cloud-color-dark: mix($tag-cloud-end-dark, $tag-cloud-start-dark, $grade * 10);
.tag-cloud-#{$grade} {
color: $tag-cloud-color!important;
font-size: var(--tag-font);
margin: 10px!important;
&:active,
&:focus,
&:hover {
color: $global-link-hover-color!important;
[data-theme='dark'] & {
color: $global-link-hover-color-dark;
}
sup {
opacity: 1;
}
}
[data-theme='dark'] & {
color: $tag-cloud-color-dark!important;
}
sup {
opacity: 0;
}
}
}

View File

@ -0,0 +1,85 @@
.categories-card {
margin: 0 auto;
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-direction: row;
flex-wrap: wrap;
line-height: 1.6rem;
.card-item {
font-size: 0.875rem;
text-align: left;
width: 45%;
display: flex;
align-items: flex-start;
min-height: 10rem;
padding: 0 2%;
position: relative;
&:nth-child(n+3){
margin-top: 2rem;
}
.card-item-wrapper {
width: 100%;
overflow: hidden;
.card-item-title {
font-size: 1.2rem;
font-weight: bold;
display: inline-block;
margin-top: 1rem;
margin-bottom: 0.75rem;
}
span {
float: right;
padding-right: 1rem;
}
}
}
}
.archive-item {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
margin: 0.25rem 0 0.25rem 1.5rem;
}
.archive-item-link {
min-width: 10%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&:hover {
color: $global-link-hover-color;
background-color: transparent;
}
[data-theme='dark'] & {
color: $global-link-color-dark;
&:hover {
color: $global-link-hover-color-dark;
}
}
}
.archive-item-date {
text-align: right;
color: $global-font-secondary-color;
white-space: nowrap;
font-variant-numeric: tabular-nums lining-nums;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
.more-post {
text-align: right;
}

View File

@ -0,0 +1,40 @@
.details {
.details-summary {
@include border-radius($global-border-radius);
&:hover {
cursor: pointer;
}
}
i.details-icon {
color: $global-font-secondary-color;
@include transition(transform 0.2s ease);
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
.details-content {
max-height: 0;
overflow-y: hidden;
@include details-transition-open;
}
&.open {
.details-summary {
@include border-radius($global-border-radius $global-border-radius 0 0);
}
i.details-icon {
@include transform(rotate(90deg));
}
.details-content {
max-height: 100%;
@include border-radius(0 0 $global-border-radius $global-border-radius);
@include details-transition-close;
}
}
}

View File

@ -0,0 +1,27 @@
svg.icon {
display: inline-block;
width: 1.25em;
height: 1em;
text-align: center;
path {
fill: currentColor;
}
}
img.emoji {
display: inline-block;
height: 1em;
width: 1em;
margin: 0 0.05em 0 0.1em;
vertical-align: -0.1em;
}
.fixit-icon {
display: inline-block;
height: 1.5em;
width: 1.5em;
line-height: 1.5em;
position: relative;
vertical-align: text-bottom;
}

View File

@ -0,0 +1,3 @@
img {
@include border-radius($global-border-radius/2);
}

View File

@ -0,0 +1,15 @@
// Color map of admonition [$type $color $background-color, ... ]
$admonition-color-map:
'note' #448aff rgba(68, 138, 255, 0.1),
'abstract' #00b0ff rgba(0, 176, 255, 0.1),
'info' #00b8d4 rgba(0, 184, 212, 0.1),
'tip' #00bfa5 rgba(0, 191, 165, 0.1),
'success' #00c853 rgba(0, 200, 83, 0.1),
'question' #64dd17 rgba(100, 221, 23, 0.1),
'warning' #ff9100 rgba(255, 145, 0, 0.1),
'failure' #ff5252 rgba(255, 82, 82, 0.1),
'danger' #ff1744 rgba(255, 23, 68, 0.1),
'bug' #f50057 rgba(245, 0, 87, 0.1),
'example' #651fff rgba(101, 31, 255, 0.1),
'quote' #9e9e9e rgba(159, 159, 159, 0.1)
!default;

View File

@ -0,0 +1,157 @@
// Color map of the code highlight
$code-highlight-color-map: (
/* Error */ 'err': $code-error-color,
/* Keyword */ 'k': #cf222e,
/* KeywordConstant */ 'kc': #0550ae,
/* KeywordDeclaration */ 'kd': #cf222e,
/* KeywordNamespace */ 'kn': #cf222e,
/* KeywordPseudo */ 'kp': #cf222e,
/* KeywordReserved */ 'kr': #cf222e,
/* KeywordType */ 'kt': #cf222e,
/* Name */ 'n': $code-color,
/* NameAttribute */ 'na': #0550ae,
/* NameBuiltin */ 'nb': #0550ae,
/* NameBuiltinPseudo */ 'bp': $code-color,
/* NameClass */ 'nc': #8250df,
/* NameConstant */ 'no': #cf222e,
/* NameDecorator */ 'nd': #8250df,
/* NameEntity */ 'ni': #0550ae,
/* NameException */ 'ne': #0550ae,
/* NameFunction */ 'nf': #0550ae,
/* NameFunctionMagic */ 'fm': #0550ae,
/* NameLabel */ 'nl': #0550ae,
/* NameNamespace */ 'nn': #8250df,
/* NameOther */ 'nx': #0550ae,
/* NameProperty */ 'py': #0550ae,
/* NameTag */ 'nt': #116329,
/* NameVariable */ 'nv': #953800,
/* NameVariableClass */ 'vc': #0550ae,
/* NameVariableGlobal */ 'vg': #0550ae,
/* NameVariableInstance */ 'vi': #0550ae,
/* NameVariableMagic */ 'vm': #0550ae,
/* Literal */ 'l': #0550ae,
/* LiteralDate */ 'ld': #0a3069,
/* LiteralString */ 's': #0a3069,
/* LiteralStringAffix */ 'sa': #0a3069,
/* LiteralStringBacktick */ 'sb': #0a3069,
/* LiteralStringChar */ 'sc': #0a3069,
/* LiteralStringDelimiter */ 'dl': #0a3069,
/* LiteralStringDoc */ 'sd': #0a3069,
/* LiteralStringDouble */ 's2': #0a3069,
/* LiteralStringEscape */ 'se': #0a3069,
/* LiteralStringHeredoc */ 'sh': #0a3069,
/* LiteralStringInterpol */ 'si': #0a3069,
/* LiteralStringOther */ 'sx': #0a3069,
/* LiteralStringRegex */ 'sr': #0a3069,
/* LiteralStringSingle */ 's1': #0a3069,
/* LiteralStringSymbol */ 'ss': #0a3069,
/* LiteralNumber */ 'm': #0550ae,
/* LiteralNumberBin */ 'mb': #0550ae,
/* LiteralNumberFloat */ 'mf': #0550ae,
/* LiteralNumberHex */ 'mh': #0550ae,
/* LiteralNumberInteger */ 'mi': #0550ae,
/* LiteralNumberIntegerLong */ 'il': #0550ae,
/* LiteralNumberOct */ 'mo': #0550ae,
/* Operator */ 'o': #cf222e,
/* OperatorWord */ 'ow': #cf222e,
/* Punctuation */ 'p': $code-color,
/* Comment */ 'c': #6e7781,
/* CommentHashbang */ 'ch': #6e7781,
/* CommentMultiline */ 'cm': #6e7781,
/* CommentSingle */ 'c1': #6e7781,
/* CommentSpecial */ 'cs': #6e7781,
/* CommentPreproc */ 'cp': #0550ae,
/* CommentPreprocFile */ 'cpf': #6e7781,
/* Generic */ 'g': $code-color,
/* GenericDeleted */ 'gd': #82071e,
/* GenericEmph */ 'ge': $code-color,
/* GenericError */ 'gr': $code-error-color,
/* GenericHeading */ 'gh': $code-color,
/* GenericInserted */ 'gi': #116329,
/* GenericOutput */ 'go': $code-color,
/* GenericPrompt */ 'gp': $code-color,
/* GenericStrong */ 'gs': $code-color,
/* GenericSubheading */ 'gu': $code-color,
/* GenericTraceback */ 'gt': $code-error-color,
/* GenericUnderline */ 'gl': $code-color,
/* TextWhitespace */ 'w': $code-color,
/* Other */ 'x': $code-color
) !default;
$code-highlight-color-map-dark: (
/* Error */ 'err': $code-error-color,
/* Keyword */ 'k': #f47067,
/* KeywordConstant */ 'kc': #6cb6ff,
/* KeywordDeclaration */ 'kd': #f47067,
/* KeywordNamespace */ 'kn': #f47067,
/* KeywordPseudo */ 'kp': #f47067,
/* KeywordReserved */ 'kr': #f47067,
/* KeywordType */ 'kt': #f47067,
/* Name */ 'n': $code-color-dark,
/* NameAttribute */ 'na': #6cb6ff,
/* NameBuiltin */ 'nb': #dcbdfb,
/* NameBuiltinPseudo */ 'bp': $code-color-dark,
/* NameClass */ 'nc': #dcbdfb,
/* NameConstant */ 'no': #6cb6ff,
/* NameDecorator */ 'nd': #dcbdfb,
/* NameEntity */ 'ni': #6cb6ff,
/* NameException */ 'ne': #6cb6ff,
/* NameFunction */ 'nf': #dcbdfb,
/* NameFunctionMagic */ 'fm': #6cb6ff,
/* NameLabel */ 'nl': #6cb6ff,
/* NameNamespace */ 'nn': #f47067,
/* NameOther */ 'nx': #dcbdfb,
/* NameProperty */ 'py': #6cb6ff,
/* NameTag */ 'nt': #8ddb8c,
/* NameVariable */ 'nv': #f69d50,
/* NameVariableClass */ 'vc': #6cb6ff,
/* NameVariableGlobal */ 'vg': #6cb6ff,
/* NameVariableInstance */ 'vi': #6cb6ff,
/* NameVariableMagic */ 'vm': #6cb6ff,
/* Literal */ 'l': #6cb6ff,
/* LiteralDate */ 'ld': #96d0ff,
/* LiteralString */ 's': #96d0ff,
/* LiteralStringAffix */ 'sa': #96d0ff,
/* LiteralStringBacktick */ 'sb': #96d0ff,
/* LiteralStringChar */ 'sc': #96d0ff,
/* LiteralStringDelimiter */ 'dl': #96d0ff,
/* LiteralStringDoc */ 'sd': #96d0ff,
/* LiteralStringDouble */ 's2': #96d0ff,
/* LiteralStringEscape */ 'se': #96d0ff,
/* LiteralStringHeredoc */ 'sh': #96d0ff,
/* LiteralStringInterpol */ 'si': #96d0ff,
/* LiteralStringOther */ 'sx': #96d0ff,
/* LiteralStringRegex */ 'sr': #96d0ff,
/* LiteralStringSingle */ 's1': #96d0ff,
/* LiteralStringSymbol */ 'ss': #96d0ff,
/* LiteralNumber */ 'm': #6cb6ff,
/* LiteralNumberBin */ 'mb': #6cb6ff,
/* LiteralNumberFloat */ 'mf': #6cb6ff,
/* LiteralNumberHex */ 'mh': #6cb6ff,
/* LiteralNumberInteger */ 'mi': #6cb6ff,
/* LiteralNumberIntegerLong */ 'il': #6cb6ff,
/* LiteralNumberOct */ 'mo': #6cb6ff,
/* Operator */ 'o': #f47067,
/* OperatorWord */ 'ow': #f47067,
/* Punctuation */ 'p': $code-color-dark,
/* Comment */ 'c': #768390,
/* CommentHashbang */ 'ch': #768390,
/* CommentMultiline */ 'cm': #768390,
/* CommentSingle */ 'c1': #768390,
/* CommentSpecial */ 'cs': #768390,
/* CommentPreproc */ 'cp': #6cb6ff,
/* CommentPreprocFile */ 'cpf': #768390,
/* Generic */ 'g': $code-color-dark,
/* GenericDeleted */ 'gd': #ffd8d3,
/* GenericEmph */ 'ge': $code-color-dark,
/* GenericError */ 'gr': $code-error-color,
/* GenericHeading */ 'gh': $code-color-dark,
/* GenericInserted */ 'gi': #b4f1b4,
/* GenericOutput */ 'go': $code-color-dark,
/* GenericPrompt */ 'gp': $code-color-dark,
/* GenericStrong */ 'gs': $code-color-dark,
/* GenericSubheading */ 'gu': $code-color-dark,
/* GenericTraceback */ 'gt': $code-error-color,
/* GenericUnderline */ 'gl': $code-color-dark,
/* TextWhitespace */ 'w': $code-color-dark,
/* Other */ 'x': $code-color-dark
) !default;

View File

@ -0,0 +1,373 @@
// Code type map
$code-type-map: (
// Chroma supported languages
// @generator https://github.com/hugo-fixit/.tools/blob/main/tampermonkey/code-type-map-fetcher.user.js
"abap": "ABAP",
"abnf": "ABNF",
"as": "ActionScript",
"actionscript": "ActionScript",
"as3": "ActionScript 3",
"actionscript3": "ActionScript 3",
"ada": "Ada",
"ada95": "Ada",
"ada2005": "Ada",
"al": "AL",
"ng2": "Angular2",
"antlr": "ANTLR",
"apacheconf": "ApacheConf",
"aconf": "ApacheConf",
"apache": "ApacheConf",
"apl": "APL",
"applescript": "AppleScript",
"arduino": "Arduino",
"armasm": "ArmAsm",
"awk": "Awk",
"gawk": "Awk",
"mawk": "Awk",
"nawk": "Awk",
"ballerina": "Ballerina",
"make": "Base Makefile",
"makefile": "Base Makefile",
"mf": "Base Makefile",
"bsdmake": "Base Makefile",
"bash": "Bash",
"sh": "Bash",
"ksh": "Bash",
"zsh": "Bash",
"shell": "Bash",
"bash-session": "BashSession",
"console": "BashSession",
"shell-session": "BashSession",
"bat": "Batchfile",
"batch": "Batchfile",
"dosbatch": "Batchfile",
"winbatch": "Batchfile",
"bib": "BibTeX",
"bibtex": "BibTeX",
"bicep": "Bicep",
"blitzbasic": "BlitzBasic",
"b3d": "BlitzBasic",
"bplus": "BlitzBasic",
"bnf": "BNF",
"brainfuck": "Brainfuck",
"bf": "Brainfuck",
"c": "C",
"csharp": "C#",
"c\\#": "C#",
"cpp": "C++",
"c\\+\\+": "C++",
"caddyfile": "Caddyfile",
"caddy": "Caddyfile",
"caddyfile-directives": "Caddyfile Directives",
"caddyfile-d": "Caddyfile Directives",
"caddy-d": "Caddyfile Directives",
"capnp": "Cap'n Proto",
"cassandra": "Cassandra CQL",
"cql": "Cassandra CQL",
"ceylon": "Ceylon",
"cfengine3": "CFEngine3",
"cf3": "CFEngine3",
"cfs": "cfstatement",
"chai": "ChaiScript",
"chaiscript": "ChaiScript",
"cheetah": "Cheetah",
"spitfire": "Cheetah",
"clojure": "Clojure",
"clj": "Clojure",
"cmake": "CMake",
"cobol": "COBOL",
"coffee-script": "CoffeeScript",
"coffeescript": "CoffeeScript",
"coffee": "CoffeeScript",
"common-lisp": "Common Lisp",
"cl": "Common Lisp",
"lisp": "Common Lisp",
"coq": "Coq",
"cr": "Crystal",
"crystal": "Crystal",
"css": "CSS",
"cython": "Cython",
"pyx": "Cython",
"pyrex": "Cython",
"d": "D",
"dart": "Dart",
"diff": "Diff",
"udiff": "Diff",
"django": "Django/Jinja",
"jinja": "Django/Jinja",
"docker": "Docker",
"dockerfile": "Docker",
"dtd": "DTD",
"dylan": "Dylan",
"ebnf": "EBNF",
"elixir": "Elixir",
"ex": "Elixir",
"exs": "Elixir",
"elm": "Elm",
"emacs": "EmacsLisp",
"elisp": "EmacsLisp",
"emacs-lisp": "EmacsLisp",
"erlang": "Erlang",
"factor": "Factor",
"fennel": "Fennel",
"fnl": "Fennel",
"fish": "Fish",
"fishshell": "Fish",
"forth": "Forth",
"fortran": "Fortran",
"fortranfixed": "FortranFixed",
"fsharp": "FSharp",
"gas": "GAS",
"asm": "GAS",
"gdscript": "GDScript",
"gd": "GDScript",
"genshi": "Genshi",
"kid": "Genshi",
"xml\\+genshi": "Genshi",
"xml\\+kid": "Genshi",
"html\\+genshi": "Genshi HTML",
"html\\+kid": "Genshi HTML",
"genshitext": "Genshi Text",
"cucumber": "Gherkin",
"Cucumber": "Gherkin",
"gherkin": "Gherkin",
"Gherkin": "Gherkin",
"glsl": "GLSL",
"gnuplot": "Gnuplot",
"go": "Go",
"golang": "Go",
"go-html-template": "Go HTML Template",
"go-text-template": "Go Text Template",
"graphql": "GraphQL",
"graphqls": "GraphQL",
"gql": "GraphQL",
"groff": "Groff",
"nroff": "Groff",
"man": "Groff",
"groovy": "Groovy",
"handlebars": "Handlebars",
"hbs": "Handlebars",
"haskell": "Haskell",
"hs": "Haskell",
"hx": "Haxe",
"haxe": "Haxe",
"hxsl": "Haxe",
"hcl": "HCL",
"hexdump": "Hexdump",
"hlb": "HLB",
"html": "HTML",
"http": "HTTP",
"hylang": "Hy",
"idris": "Idris",
"idr": "Idris",
"igor": "Igor",
"igorpro": "Igor",
"ini": "INI",
"cfg": "INI",
"dosini": "INI",
"io": "Io",
"j": "J",
"java": "Java",
"js": "JavaScript",
"javascript": "JavaScript",
"json": "JSON",
"julia": "Julia",
"jl": "Julia",
"jungle": "Jungle",
"kotlin": "Kotlin",
"lighty": "Lighttpd configuration file",
"lighttpd": "Lighttpd configuration file",
"llvm": "LLVM",
"lua": "Lua",
"mako": "Mako",
"md": "markdown",
"mkd": "markdown",
"mason": "Mason",
"mathematica": "Mathematica",
"mma": "Mathematica",
"nb": "Mathematica",
"matlab": "Matlab",
"mcfunction": "mcfunction",
"meson": "Meson",
"meson\\.build": "Meson",
"metal": "Metal",
"minizinc": "MiniZinc",
"MZN": "MiniZinc",
"mzn": "MiniZinc",
"mlir": "MLIR",
"modula2": "Modula-2",
"m2": "Modula-2",
"monkeyc": "MonkeyC",
"morrowind": "MorrowindScript",
"mwscript": "MorrowindScript",
"myghty": "Myghty",
"mysql": "MySQL",
"mariadb": "MySQL",
"nasm": "NASM",
"newspeak": "Newspeak",
"nginx": "Nginx configuration file",
"nim": "Nim",
"nimrod": "Nim",
"nixos": "Nix",
"nix": "Nix",
"objective-c": "Objective-C",
"objectivec": "Objective-C",
"obj-c": "Objective-C",
"objc": "Objective-C",
"ocaml": "OCaml",
"octave": "Octave",
"ones": "OnesEnterprise",
"onesenterprise": "OnesEnterprise",
"1S": "OnesEnterprise",
"1S:Enterprise": "OnesEnterprise",
"openedge": "OpenEdge ABL",
"abl": "OpenEdge ABL",
"progress": "OpenEdge ABL",
"openedgeabl": "OpenEdge ABL",
"openscad": "OpenSCAD",
"org": "Org Mode",
"orgmode": "Org Mode",
"pacmanconf": "PacmanConf",
"perl": "Perl",
"pl": "Perl",
"php": "PHP",
"php3": "PHP",
"php4": "PHP",
"php5": "PHP",
"phtml": "PHTML",
"pig": "Pig",
"pkgconfig": "PkgConfig",
"plpgsql": "PL/pgSQL",
"text": "plaintext",
"plain": "plaintext",
"no-highlight": "plaintext",
"plutus-core": "Plutus Core",
"plc": "Plutus Core",
"pony": "Pony",
"postgresql": "PostgreSQL SQL dialect",
"postgres": "PostgreSQL SQL dialect",
"postscript": "PostScript",
"postscr": "PostScript",
"pov": "POVRay",
"powerquery": "PowerQuery",
"pq": "PowerQuery",
"powershell": "PowerShell",
"posh": "PowerShell",
"ps1": "PowerShell",
"psm1": "PowerShell",
"psd1": "PowerShell",
"prolog": "Prolog",
"promql": "PromQL",
"protobuf": "Protocol Buffer",
"proto": "Protocol Buffer",
"puppet": "Puppet",
"python": "Python",
"py": "Python",
"sage": "Python",
"python3": "Python",
"py3": "Python",
"python2": "Python 2",
"py2": "Python 2",
"qbasic": "QBasic",
"basic": "QBasic",
"qml": "QML",
"qbs": "QML",
"splus": "R",
"s": "R",
"r": "R",
"racket": "Racket",
"rkt": "Racket",
"ragel": "Ragel",
"perl6": "Raku",
"pl6": "Raku",
"raku": "Raku",
"jsx": "react",
"react": "react",
"reason": "ReasonML",
"reasonml": "ReasonML",
"registry": "reg",
"rst": "reStructuredText",
"rest": "reStructuredText",
"restructuredtext": "reStructuredText",
"rexx": "Rexx",
"arexx": "Rexx",
"rb": "Ruby",
"ruby": "Ruby",
"duby": "Ruby",
"rust": "Rust",
"rs": "Rust",
"sas": "SAS",
"sass": "Sass",
"scala": "Scala",
"scheme": "Scheme",
"scm": "Scheme",
"scilab": "Scilab",
"scss": "SCSS",
"sieve": "Sieve",
"smalltalk": "Smalltalk",
"squeak": "Smalltalk",
"st": "Smalltalk",
"smarty": "Smarty",
"snobol": "Snobol",
"sol": "Solidity",
"solidity": "Solidity",
"sparql": "SPARQL",
"sql": "SQL",
"squidconf": "SquidConf",
"squid\\.conf": "SquidConf",
"squid": "SquidConf",
"sml": "Standard ML",
"stylus": "Stylus",
"svelte": "Svelte",
"swift": "Swift",
"systemd": "SYSTEMD",
"systemverilog": "systemverilog",
"sv": "systemverilog",
"tablegen": "TableGen",
"tasm": "TASM",
"tcl": "Tcl",
"tcsh": "Tcsh",
"csh": "Tcsh",
"termcap": "Termcap",
"terminfo": "Terminfo",
"terraform": "Terraform",
"tf": "Terraform",
"tex": "TeX",
"latex": "TeX",
"thrift": "Thrift",
"toml": "TOML",
"tradingview": "TradingView",
"tv": "TradingView",
"tsql": "Transact-SQL",
"t-sql": "Transact-SQL",
"turing": "Turing",
"turtle": "Turtle",
"twig": "Twig",
"ts": "TypeScript",
"tsx": "TypeScript",
"typescript": "TypeScript",
"typoscript": "TypoScript",
"typoscriptcssdata": "TypoScriptCssData",
"typoscripthtmldata": "TypoScriptHtmlData",
"v": "verilog",
"vlang": "V",
"vsh": "V shell",
"vshell": "V shell",
"vb\\.net": "VB.net",
"vbnet": "VB.net",
"verilog": "verilog",
"vhdl": "VHDL",
"vim": "VimL",
"vue": "vue",
"vuejs": "vue",
"whiley": "Whiley",
"xml": "XML",
"xorg\\.conf": "Xorg",
"yaml": "YAML",
"yang": "YANG",
"zed": "Zed",
"zig": "Zig",
// Custom code type
"markdown": "markdown",
"yml": "YAML"
) !default;

View File

@ -0,0 +1,17 @@
// Theme colors
$primary: #1772ee !default;
$secondary: #919191 !default;
$success: #13ce66 !default;
$info: #0dcaf0 !default;
$warning: #ffba00 !default;
$danger: #ff4949 !default;
// Theme colors map
$theme-colors: (
'primary': $primary,
'secondary': $secondary,
'success': $success,
'info': $info,
'warning': $warning,
'danger': $danger
) !default;

View File

@ -0,0 +1,13 @@
// Utilities
// property order
$orders: (
first: -1,
0: 0,
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
last: 6,
) !default;

View File

@ -0,0 +1,16 @@
#mask {
background-repeat: no-repeat;
background-position: center;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0);
@include z-index(0, -1);
.blur & {
@include z-index(1);
background-color: rgba(0, 0, 0, 0.25);
}
}

View File

@ -0,0 +1,364 @@
// inline code
code {
padding: 0.2em 0.4em;
margin: 0;
font-size: $code-font-size;
font-family: $code-font-family;
color: $code-color;
background-color: rgba(175, 184, 193, 0.2);
text-decoration: inherit;
@include border-radius($global-border-radius);
@include overflow-wrap(break-word);
@include line-break(auto);
[data-theme='dark'] & {
color: $code-color-dark;
background-color: rgba(99, 110, 123, 0.4);
}
}
// indented code
pre {
margin: 0;
line-height: 1.45em;
padding: 0.5rem;
overflow: auto;
font-size: $code-font-size;
font-family: $code-font-family;
@include border-radius($global-border-radius);
@include tab-size(4);
background-color: $code-background-color;
[data-theme='dark'] & {
background-color: $code-background-color-dark;
}
code {
padding: 0;
background-color: transparent;
@include border-radius(0);
@include max-content(min-width);
[data-theme='dark'] & {
background-color: transparent;
}
}
img {
min-height: 1em;
max-height: 1.2em;
vertical-align: text-bottom;
}
}
.highlight,
.gist {
font-size: $code-font-size;
font-family: $code-font-family;
.table-wrapper {
> table,
> table thead,
> table tr,
> table td {
margin: 0;
padding: 0;
border: none !important;
white-space: nowrap;
}
}
}
// block fenced code
.highlight {
margin: 0.5rem 0;
> .chroma {
position: relative;
.code-header {
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
font-family: $global-font-family;
font-weight: bold;
line-height: 1.4em;
color: $code-info-color;
background-color: darken($code-background-color, 3%);
@include border-radius($global-border-radius);
@include transition(border-radius 0.2s ease);
[data-theme='dark'] & {
color: $code-info-color-dark;
background-color: darken($code-background-color-dark, 6%);
}
&:hover {
cursor: pointer;
}
.ellipses,
.edit,
.copy {
@extend .print-d-none;
}
.code-title {
width: 100%;
padding: 0.4rem;
.arrow {
padding: 0 0.2rem;
@include transition(transform 0.2s ease);
}
.title-inner {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
}
.code-title::after {
padding-left: 0.2rem;
content: 'Code';
}
.ellipses {
padding: 0.4rem;
}
.edit,
.copy {
display: none;
padding: 0.4rem;
&:hover {
cursor: pointer;
color: $global-link-hover-color;
[data-theme='dark'] & {
color: $global-link-hover-color-dark;
}
}
}
@each $type, $text in $code-type-map {
&.language-#{$type} .code-title::after {
content: $text;
}
}
}
// delayed loading table-wrapper
.table-wrapper {
max-height: 0;
overflow: hidden;
@include border-radius(0 0 $global-border-radius $global-border-radius);
@include details-transition-open;
}
table {
border-spacing: 0;
width: auto;
overflow: auto;
display: block;
background-color: $code-background-color;
[data-theme='dark'] & {
background-color: $code-background-color-dark;
}
td {
vertical-align: top;
padding: 0;
}
pre {
padding: 0.25rem;
outline-offset: -1px;
@include border-radius(0);
}
/* lineNumbersInTable=false */
.ln {
min-width: 1.25rem;
}
// ========== lineNumbersInTable ========== //
// line numbers
.lntd:first-child {
min-width: 1.6rem;
text-align: right;
position: sticky;
left: 0;
pre {
@include user-select(none);
}
}
// code content
.lntd:last-child {
width: 100%;
pre {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
code {
width: 100%;
}
}
// ========== lineNumbersInTable ========== //
}
&.open {
.code-header {
background-color: darken($code-background-color, 6%);
@include border-radius($global-border-radius $global-border-radius 0 0);
[data-theme='dark'] & {
background-color: darken($code-background-color-dark, 3%);
}
}
.table-wrapper {
max-height: 100%;
@include details-transition-close;
}
.arrow {
@include transform(rotate(90deg));
}
.ellipses {
display: none;
}
.edit,
.copy {
display: inline;
}
}
}
/* LineHighlight */
.hl {
display: block;
background-color: $code-hightlight-color;
box-shadow: -0.5rem 0 0 $code-hightlight-color, 0.5rem 0 0 $code-hightlight-color;
[data-theme='dark'] & {
background-color: $code-hightlight-color-dark;
box-shadow: -0.5rem 0 0 $code-hightlight-color-dark, 0.5rem 0 0 $code-hightlight-color-dark;
}
}
/* GenericUnderline */
.gl {
text-decoration: underline;
}
/* GenericStrong */
.gs {
font-weight: bold;
}
/* GenericEmph */
.ge {
font-style: italic;
}
/* lineNumbersInTable=false */
.ln {
padding-right: 0.5rem;
display: inline-block;
min-width: 1.1rem;
text-align: right;
}
/* LineNumbers */
.lnt,
.ln {
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
}
// ========== Higtlight Color ========== //
/* Error */
.err {
font-style: italic;
border-bottom: 1px dotted $code-error-color;
}
/* GenericDeleted */
.gd {
background-color: #ffebe9;
[data-theme='dark'] & {
background-color: #78191b;
}
}
/* GenericInserted */
.gi {
background-color: #dafbe1;
[data-theme='dark'] & {
background-color: #1b4721;
}
}
@each $class, $color in $code-highlight-color-map {
.#{$class} {
color: $color;
}
}
[data-theme='dark'] & {
@each $class, $color in $code-highlight-color-map-dark {
.#{$class} {
color: $color;
}
}
}
// ========== Higtlight Color ========== //
}
// gist shortcode
.gist {
.gist-file,
.gist-data,
.gist-meta {
border: none;
}
.gist-data {
background-color: transparent;
}
.gist-meta {
padding: 0.4rem 0.8rem;
@include link(false, false);
background-color: darken($code-background-color, 5%);
[data-theme='dark'] & {
background-color: darken($code-background-color-dark, 5%);
}
}
.table-wrapper {
.highlight,
&::-webkit-scrollbar {
background-color: #f6f8fa;
[data-theme='dark'] & {
background-color: #2d333b;
}
}
}
[data-theme='dark'] & {
@import './github-dark-dimmed';
}
}

View File

@ -0,0 +1,4 @@
>#comments {
padding: 2rem 0;
@extend .print-d-none;
}

View File

@ -0,0 +1,67 @@
.fixit-decryptor-container {
font-family: $global-font-family;
text-align: center;
margin-top: 3rem;
.fixit-encryptor-shortcode & {
margin-top: 1rem;
}
#fixit-decryptor-input,
.fixit-decryptor-input,
.fixit-encryptor-btn {
display: inline-block;
box-sizing: border-box;
outline: none;
color: $global-font-color;
border: 1px solid darken($global-border-color, 15%);
border-radius: $global-border-radius;
@include transition(all 0.1s ease-out);
box-shadow: 0px 0px 5px 0px darken($global-border-color, 15%);
&:active,
&:focus,
&:hover {
color: darken($global-link-hover-color, 6%);
border-color: $global-link-hover-color;
box-shadow: 0px 0px 5px 0px lighten($global-link-hover-color, 20%);
[data-theme='dark'] & {
color: lighten($global-link-hover-color-dark, 6%);
border-color: $global-link-hover-color-dark;
box-shadow: 0px 0px 5px 0px darken($global-link-hover-color-dark, 20%);
}
}
[data-theme='dark'] & {
color: $global-font-color-dark;
border-color: lighten($global-border-color-dark, 15%);
box-shadow: 0px 0px 5px 0px lighten($global-border-color-dark, 15%);
}
}
#fixit-decryptor-input,
.fixit-decryptor-input {
width: clamp(50%, 400px, 100%);
height: 3rem;
padding-left: 1rem;
padding-right: 1rem;
background-color: $global-background-color;
[data-theme='dark'] & {
background-color: $global-background-color-dark;
}
}
.fixit-encryptor-btn {
cursor: pointer;
@include transition(all 0.1s ease-out);
padding: 0.6rem 1rem;
background-color: $header-background-color;
[data-theme='dark'] & {
background-color: $header-background-color-dark;
}
}
}

View File

@ -0,0 +1,115 @@
.post-footer {
margin: 2rem 0;
&:has(~.post-reward) {
margin-bottom: 0;
}
.post-info {
border-bottom: 1px solid $global-border-color;
padding: 1rem 0 0.3rem;
[data-theme='dark'] & {
border-bottom: 1px solid $global-border-color-dark;
}
.post-info-line {
display: flex;
justify-content: space-between;
.post-info-mod {
font-size: 0.8em;
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
}
.post-info-license {
font-size: 0.8em;
color: $global-font-secondary-color;
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
}
@include link(false, false);
}
.post-info-md {
font-size: 0.8rem;
width: fit-content;
@include link(false, false);
>span:not(:first-child)::before {
content: '|';
margin-left: 0.25rem;
margin-right: 0.25rem;
}
}
.post-info-share {
@extend .print-d-none;
a * {
vertical-align: text-bottom;
}
}
}
}
.post-info-more {
padding: 0.3rem 0 1rem;
display: flex;
justify-content: space-between;
font-size: 0.9rem;
section:last-child {
@extend .print-d-none;
}
}
.post-tags {
max-width: 65%;
* {
display: inline;
}
@include link(true, true);
.post-tag:not(:last-child)::after {
content: ',';
margin-right: 0.25rem;
}
}
.post-nav {
display: flex;
justify-content: space-between;
gap: 1.5rem;
@extend .print-d-none;
.post-nav-item {
flex: 1;
font-size: 1rem;
font-weight: 600;
@include transition(all 0.3s ease-out);
&[rel='next'] {
text-align: right;
}
&[rel='prev']:hover {
@include transform(translateX(-4px));
}
&[rel='next']:hover {
@include transform(translateX(4px));
}
}
}
}

View File

@ -0,0 +1,169 @@
/**
* Theme: GitHub Dark Dimmed
* Description: Dark Dimmed theme as seen on github.com
* Author: github.com
* Maintainer: https://github.com/hugo-fixit/FixIt
* Updated: 2022-03-01
*/
& {
--color-fg-default: #adbac7;
--color-prettylights-syntax-comment: #768390;
--color-prettylights-syntax-constant: #6cb6ff;
--color-prettylights-syntax-entity: #dcbdfb;
--color-prettylights-syntax-storage-modifier-import: #adbac7;
--color-prettylights-syntax-entity-tag: #8ddb8c;
--color-prettylights-syntax-keyword: #f47067;
--color-prettylights-syntax-string: #96d0ff;
--color-prettylights-syntax-variable: #f69d50;
--color-prettylights-syntax-brackethighlighter-unmatched: #e5534b;
--color-prettylights-syntax-invalid-illegal-text: #cdd9e5;
--color-prettylights-syntax-invalid-illegal-bg: #922323;
--color-prettylights-syntax-carriage-return-text: #cdd9e5;
--color-prettylights-syntax-carriage-return-bg: #ad2e2c;
--color-prettylights-syntax-string-regexp: #8ddb8c;
--color-prettylights-syntax-markup-list: #eac55f;
--color-prettylights-syntax-markup-heading: #316dca;
--color-prettylights-syntax-markup-italic: #adbac7;
--color-prettylights-syntax-markup-bold: #adbac7;
--color-prettylights-syntax-markup-deleted-text: #ffd8d3;
--color-prettylights-syntax-markup-deleted-bg: #78191b;
--color-prettylights-syntax-markup-inserted-text: #b4f1b4;
--color-prettylights-syntax-markup-inserted-bg: #1b4721;
--color-prettylights-syntax-markup-changed-text: #ffddb0;
--color-prettylights-syntax-markup-changed-bg: #682d0f;
--color-prettylights-syntax-markup-ignored-text: #adbac7;
--color-prettylights-syntax-markup-ignored-bg: #255ab2;
--color-prettylights-syntax-meta-diff-range: #dcbdfb;
--color-prettylights-syntax-brackethighlighter-angle: #768390;
--color-prettylights-syntax-sublimelinter-gutter-mark: #545d68;
--color-prettylights-syntax-constant-other-reference-link: #96d0ff;
.blob-num,
.blob-code-inner {
color: val(--color-fg-default);
}
.pl-c /* comment, punctuation.definition.comment, string.comment */ {
color: var(--color-prettylights-syntax-comment);
}
.pl-c1 /* constant, entity.name.constant, variable.other.constant, variable.language, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header, meta.output */,
.pl-s .pl-v /* string variable */ {
color: var(--color-prettylights-syntax-constant);
}
.pl-e /* entity */,
.pl-en /* entity.name */ {
color: var(--color-prettylights-syntax-entity);
}
.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
.pl-s .pl-s1 /* string source */ {
color: var(--color-prettylights-syntax-storage-modifier-import);
}
.pl-ent /* entity.name.tag, markup.quote */ {
color: var(--color-prettylights-syntax-entity-tag);
}
.pl-k /* keyword, storage, storage.type */ {
color: var(--color-prettylights-syntax-keyword);
}
.pl-s /* string */,
.pl-pds /* punctuation.definition.string, source.regexp, string.regexp.character-class */,
.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
.pl-sr /* string.regexp */,
.pl-sr .pl-cce /* string.regexp constant.character.escape */,
.pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
color: var(--color-prettylights-syntax-string);
}
.pl-v /* variable */,
.pl-smw /* sublimelinter.mark.warning */ {
color: var(--color-prettylights-syntax-variable);
}
.pl-bu /* invalid.broken, invalid.deprecated, invalid.unimplemented, message.error, brackethighlighter.unmatched, sublimelinter.mark.error */ {
color: var(--color-prettylights-syntax-brackethighlighter-unmatched);
}
.pl-ii /* invalid.illegal */ {
color: var(--color-prettylights-syntax-invalid-illegal-text);
background-color: var(--color-prettylights-syntax-invalid-illegal-bg);
}
.pl-c2 /* carriage-return */ {
color: var(--color-prettylights-syntax-carriage-return-text);
background-color: var(--color-prettylights-syntax-carriage-return-bg);
}
.pl-c2::before /* carriage-return */ {
content: '^M';
}
.pl-sr .pl-cce /* string.regexp constant.character.escape */ {
font-weight: bold;
color: var(--color-prettylights-syntax-string-regexp);
}
.pl-ml /* markup.list */ {
color: var(--color-prettylights-syntax-markup-list);
}
.pl-mh /* markup.heading */,
.pl-mh .pl-en /* markup.heading entity.name */,
.pl-ms /* meta.separator */ {
font-weight: bold;
color: var(--color-prettylights-syntax-markup-heading);
}
.pl-mi /* markup.italic */ {
font-style: italic;
color: var(--color-prettylights-syntax-markup-italic);
}
.pl-mb /* markup.bold */ {
font-weight: bold;
color: var(--color-prettylights-syntax-markup-bold);
}
.pl-md /* markup.deleted, meta.diff.header.from-file, punctuation.definition.deleted */ {
color: var(--color-prettylights-syntax-markup-deleted-text);
background-color: var(--color-prettylights-syntax-markup-deleted-bg);
}
.pl-mi1 /* markup.inserted, meta.diff.header.to-file, punctuation.definition.inserted */ {
color: var(--color-prettylights-syntax-markup-inserted-text);
background-color: var(--color-prettylights-syntax-markup-inserted-bg);
}
.pl-mc /* markup.changed, punctuation.definition.changed */ {
color: var(--color-prettylights-syntax-markup-changed-text);
background-color: var(--color-prettylights-syntax-markup-changed-bg);
}
.pl-mi2 /* markup.ignored, markup.untracked */ {
color: var(--color-prettylights-syntax-markup-ignored-text);
background-color: var(--color-prettylights-syntax-markup-ignored-bg);
}
.pl-mdr /* meta.diff.range */ {
font-weight: bold;
color: var(--color-prettylights-syntax-meta-diff-range);
}
.pl-ba /* brackethighlighter.tag, brackethighlighter.curly, brackethighlighter.round, brackethighlighter.square, brackethighlighter.angle, brackethighlighter.quote */ {
color: var(--color-prettylights-syntax-brackethighlighter-angle);
}
.pl-sg /* sublimelinter.gutter-mark */ {
color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);
}
.pl-corl /* constant.other.reference.link, string.other.link */ {
text-decoration: underline;
color: var(--color-prettylights-syntax-constant-other-reference-link);
}
}

View File

@ -0,0 +1,101 @@
.post-reward {
padding: 1rem;
text-align: center;
@extend .print-d-none;
&~.post-footer {
margin-top: 0;
}
&:has(.reward-ways:empty) {
display: none;
}
.comment {
margin: 0.5rem 0;
font-weight: 500;
}
.reward-ways {
display: none;
}
.reward-input:checked~.reward-ways {
display: block;
padding-top: 20px;
div {
display: inline-block;
@include user-select(none);
span {
display: block;
}
&:hover span[data-animation] {
animation: var(--animation-reward, jackInTheBox) 0.8s infinite linear;
// The animation may affect :hover of img in dark mode
pointer-events: none;
}
img {
display: inline-block;
margin: 0.8em 2em 0;
max-width: 100%;
width: $reward-img-width;
}
}
// `fixed` mode only supports desktop
&[data-mode='fixed'] {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 1rem;
background-color: $global-background-color;
@include z-index(2);
@include border-radius($global-border-radius);
@include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, 0.2));
[data-theme='dark'] & {
background-color: $global-background-color-dark;
@include box-shadow(0 0 1.5rem 0 rgba(255, 255, 255, 0.2));
}
}
}
.reward-button {
display: inline-block;
box-sizing: border-box;
cursor: pointer;
outline: none;
color: lighten($reward-color, 5%);
border: 2px solid lighten($reward-color, 10%);
border-radius: $global-border-radius;
padding: 0.6rem 1rem;
background-color: $global-background-color;
vertical-align: text-top;
line-height: 1rem;
@include transition(all 0.3s ease-out);
&:active,
&:hover {
color: #ffffff;
border-color: $reward-color;
background-color: $reward-color;
[data-theme='dark'] & {
color: #ffffff;
border-color: $reward-color-dark;
background-color: $reward-color-dark;
}
}
[data-theme='dark'] & {
color: $reward-color;
border-color: lighten($reward-color, 5%);
background-color: $global-background-color-dark;
}
}
}

View File

@ -0,0 +1,178 @@
.toc {
.toc-title {
font-size: $toc-title-font-size;
font-weight: bold;
text-transform: uppercase;
}
.toc-content {
font-size: $toc-content-font-size;
ul {
text-indent: -0.8rem;
padding-left: 0.8rem;
list-style: none;
a:first-child::before {
content: '|';
font-weight: bolder;
margin-right: 0.5rem;
color: $single-link-color;
[data-theme='dark'] & {
color: $single-link-color-dark;
}
}
ul {
padding-left: 1.5rem;
}
}
}
ruby {
background: $code-background-color;
rt {
color: $global-font-secondary-color;
}
[data-theme='dark'] & {
background: $code-background-color-dark;
rt {
color: $global-font-secondary-color-dark;
}
}
}
}
#toc-auto {
display: block;
position: sticky;
top: var(--#{$prefix}scroll-mt);
box-sizing: border-box;
visibility: hidden;
@include z-index(1);
@include overflow-wrap(break-word);
@include blur;
@extend .print-d-none;
[data-header-desktop='normal'] & {
--#{$prefix}scroll-mt: #{$global-scroll-margin-top};
}
.toc-title {
margin: 0.5rem 0;
cursor: pointer;
@include user-select(none);
&::before {
content: '|';
font-weight: bolder;
margin-right: 0.5rem;
color: $global-border-color;
[data-theme='dark'] & {
color: $global-border-color-dark;
}
}
i.toc-icon {
@include transition(transform 0.2s ease);
}
}
&.toc-hidden i.toc-icon {
@include transform(rotate(-90deg));
@include transition(transform 0.2s ease);
}
.toc-content {
overflow-y: scroll;
max-height: calc(100vh - #{2*$header-height});
&::-webkit-scrollbar {
width: 0;
}
&.always-active ul {
display: block;
}
> nav > ul {
margin: 0;
}
ul {
ul {
display: none;
}
.has-active > ul {
display: block;
}
}
a.active {
font-weight: bold;
color: $single-link-color;
[data-theme='dark'] & {
color: $single-link-color-dark;
}
&::before {
color: $single-link-hover-color;
[data-theme='dark'] & {
color: $single-link-hover-color-dark;
}
}
}
}
}
#toc-static {
display: none;
margin: 0.8rem 0;
&[data-kept='true'] {
display: block;
}
.toc-title {
display: flex;
justify-content: space-between;
line-height: 2em;
padding: 0 0.75rem;
background: darken($code-background-color, 3%);
[data-theme='dark'] & {
background: darken($code-background-color-dark, 6%);
}
}
.toc-content {
background-color: $code-background-color;
> nav > ul {
margin: 0;
padding: 0.4rem 1rem 0.4rem 1.8rem;
}
[data-theme='dark'] & {
background-color: $code-background-color-dark;
}
}
&.open {
.toc-title {
background: darken($code-background-color, 6%);
[data-theme='dark'] & {
background: darken($code-background-color-dark, 3%);
}
}
}
}

View File

@ -0,0 +1,6 @@
@import '_widgets/cookieconsent';
@import '_widgets/fixed-button';
@import '_widgets/github-corner';
@import '_widgets/noscript-warning';
@import '_widgets/reading-progress';
@import '_widgets/typeit';

View File

@ -0,0 +1,19 @@
.cc-window.cc-banner {
.cc-btn {
color: $global-font-color;
&:hover,
&:focus {
background-color: #ccc;
}
[data-theme='dark'] & {
color: $global-font-color;
&:hover,
&:focus {
background-color: #fff;
}
}
}
}

View File

@ -0,0 +1,44 @@
.fixed-button {
position: fixed;
right: 1.5rem;
font-size: 1rem;
line-height: 1.5rem;
padding: 0.5rem 0.625rem;
color: $global-font-secondary-color;
background-color: $header-background-color;
@include z-index(1);
@include border-radius(1.25rem);
@include transition(color 0.4s ease);
@include blur;
@extend .print-d-none;
&:hover,
&:active {
color: $global-font-color;
cursor: pointer;
}
&:active,
&:focus,
&:hover {
outline: none;
}
[data-theme='dark'] & {
color: $global-font-secondary-color-dark;
background-color: $header-background-color-dark;
&:hover,
&:active {
color: $global-font-color-dark;
}
}
}
.back-to-top {
bottom: 1.5rem;
}
.view-comments {
bottom: 4.5rem;
}

View File

@ -0,0 +1,47 @@
@keyframes octocat-wave {
0%,
100% {
@include transform(rotate(0));
}
20%,
60% {
@include transform(rotate(-25deg));
}
40%,
80% {
@include transform(rotate(10deg));
}
}
.github-corner {
position: fixed;
top: 0;
@include z-index(2);
@extend .print-d-none;
:hover .octo-arm {
animation: octocat-wave 560ms ease-in-out;
}
svg {
width: $header-height;
height: $header-height;
border: 0;
color: $github-corner-color;
fill: $github-corner-fill;
[data-theme='dark'] & {
color: $github-corner-color-dark;
fill: $github-corner-fill-dark;
}
}
&.left {
left: 0;
svg {
@include transform(scale(-1, 1));
}
}
&.right {
right: 0;
}
}

View File

@ -0,0 +1,16 @@
.noscript-warning {
background-color: var(--#{$prefix}danger);
color: white;
font-size: 1rem;
font-weight: bold;
position: fixed;
text-align: center;
left: 0;
bottom: 0;
width: 100%;
@include z-index(2);
[data-theme='dark'] & {
background-color: var(--#{$prefix}danger-dark);
}
}

View File

@ -0,0 +1,13 @@
.reading-progress-bar {
--progress: 0;
height: var(--progress-h, 2px);
width: var(--progress);
background-color: var(--bg-progress, var(--#{$prefix}info));
position: fixed;
@include z-index(2);
@extend .print-d-none;
[data-theme="dark"] & {
background-color: var(--bg-progress-dark, var(--#{$prefix}info-dark));
}
}

View File

@ -0,0 +1,22 @@
.typeit {
.highlight {
padding: 0.375rem;
font-size: 0.875rem;
font-family: $code-font-family;
font-weight: bold;
word-break: break-all;
white-space: pre-wrap;
}
--ti-cursor-font-family: #{$global-font-family};
--ti-cursor-font-size: #{$global-font-size};
--ti-cursor-font-style: normal;
--ti-cursor-font-weight: #{$global-font-weight};
--ti-cursor-line-height: #{$global-line-height};
--ti-cursor-color: #{$global-font-color};
--ti-cursor-transform: translateX(0);
[data-theme='dark'] & {
--ti-cursor-color: #{$global-font-color-dark};
}
}

View File

@ -0,0 +1,77 @@
.admonition {
position: relative;
margin: 1rem 0;
padding: 0 0.75rem;
border-left: .25rem solid;
overflow: auto;
@include border-radius($global-border-radius);
.admonition-title {
font-weight: bold;
margin: 0 -0.75rem;
padding: 0.25rem 1.8rem;
border-bottom: 1px solid;
@include border-radius(0);
}
.admonition-content {
padding: 0.5rem 0;
}
i.icon {
font-size: 0.85rem;
position: absolute;
top: 0.6rem;
left: 0.4rem;
}
i.details-icon {
position: absolute;
top: 0.6rem;
right: 0.3rem;
}
@each $type, $color, $background-color in $admonition-color-map {
@if $type == 'note' {
background-color: $background-color;
border-left-color: $color;
.admonition-title {
border-bottom-color: $background-color;
background-color: opacify($background-color, 0.15);
}
&.open .admonition-title {
background-color: $background-color;
}
i.icon {
color: $color;
}
}
@else {
&.#{$type} {
background-color: $background-color;
border-left-color: $color;
.admonition-title {
border-bottom-color: $background-color;
background-color: opacify($background-color, 0.15);
}
&.open .admonition-title {
background-color: $background-color;
}
i.icon {
color: $color;
}
}
}
}
&:last-child {
margin-bottom: 0.75rem;
}
}

View File

@ -0,0 +1,16 @@
.bilibili {
position: relative;
width: 100%;
height: 0;
padding-bottom: 75%;
margin: 3% auto;
text-align: center;
iframe {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
}

View File

@ -0,0 +1,99 @@
/**
* Card link style
* @author @Lruihao https://lruihao.cn
*/
.card-link {
position: relative;
display: block;
margin: 0.5rem auto;
box-sizing: border-box;
width: clamp(50%, 400px, 100%);
max-width: 100%;
overflow: hidden;
text-decoration: none;
border: none;
@include border-radius(0.75rem);
}
.cl- {
&backdrop {
position: absolute;
top: 0.75rem;
bottom: 0.75rem;
left: 0;
right: 0;
background-image: var(--cl-bg-url);
background-repeat: no-repeat;
filter: blur(0.5rem);
opacity: 0.5;
background-size: contain;
background-position: center;
}
&content {
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.75rem;
background-color: rgba(245, 245, 245, 0.88);
}
&text {
overflow: hidden;
}
&title {
display: -webkit-box;
-webkit-line-clamp: 2;
overflow: hidden;
max-height: calc(1rem * 1.25 * 2);
font-size: 1rem;
font-weight: 500;
line-height: 1.25;
color: $global-font-color;
}
&meta {
display: flex;
align-items: center;
margin-top: 0.25rem;
font-size: 0.825rem;
color: $global-font-secondary-color;
}
&icon-link {
width: 1rem;
height: 1rem;
flex-shrink: 0;
margin-right: 0.25rem;
}
&url {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&icon-globe {
width: 4rem;
height: 4rem;
flex-shrink: 0;
margin-left: 0.25rem;
}
[data-theme='dark'] & {
&content {
background-color: rgba(61, 62, 65, 0.88);
}
&title {
color: $global-font-color-dark;
}
&meta {
color: $global-font-secondary-color-dark;
}
}
}

View File

@ -0,0 +1,43 @@
.blockquote-center {
border-left: none;
margin: 40px 0;
padding: 0;
position: relative;
text-align: center;
color: initial;
&::after,
&::before {
left: 0;
line-height: 1;
opacity: 0.6;
position: absolute;
width: 100%;
}
&::before {
border-top: 1px solid $global-border-color;
text-align: left;
top: -20px;
content: '\f10d';
font-family: 'Font Awesome 5 Free';
font-weight: 900;
[data-theme='dark'] & {
border-top-color: $global-border-color-dark;
}
}
&::after {
border-bottom: 1px solid $global-border-color;
bottom: -20px;
text-align: right;
content: '\f10e';
font-family: 'Font Awesome 5 Free';
font-weight: 900;
[data-theme='dark'] & {
border-bottom-color: $global-border-color-dark;
}
}
}

View File

@ -0,0 +1,4 @@
.echarts {
margin: 0.5rem 0;
text-align: center;
}

View File

@ -0,0 +1,8 @@
@import '_admonition';
@import '_bilibili';
@import '_cardlink';
@import '_center-quote';
@import '_echarts';
@import '_instagram';
@import '_mapbox';
@import '_mermaid';

View File

@ -0,0 +1,5 @@
iframe.instagram-media {
[data-theme='dark'] & {
border: none !important;
}
}

View File

@ -0,0 +1,5 @@
.mapbox {
margin: 0.5rem 0;
padding: 0.5rem 0;
@include border-radius($global-border-radius);
}

View File

@ -0,0 +1,8 @@
.mermaid {
text-align: center;
svg {
max-width: 100%;
height: auto;
}
}

View File

@ -0,0 +1,171 @@
// ==============================
// Variables
// ==============================
// ========== Global ========== //
// Prefix for :root CSS variables.
$prefix: fi- !default;
// Font and Line Height
$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
$global-font-size: 16px !default;
$global-font-weight: 400 !default;
$global-line-height: 1.5rem !default;
// scroll-margin-top of content anchor
$global-scroll-margin-top: 0.5rem;
// Radius of the border
$global-border-radius: 5px !default;
// Color of the background
$global-background-color: #ffffff !default;
$global-background-color-dark: #221531 !default;
// Color of the text
$global-font-color: #161209 !default;
$global-font-color-dark: #a9a9b3 !default;
// Color of the secondary text
$global-font-secondary-color: #b1b1ba !default;
$global-font-secondary-color-dark: #909092 !default;
// Color of the link
$global-link-color: #ba0066 !default;
$global-link-color-dark: #EC008C !default;
// Color of the hover link
$global-link-hover-color: #EC008C !default; // 潮蓝
$global-link-hover-color-dark: #ba0066 !default;
// Color of the border
$global-border-color: #ba0066 !default;
$global-border-color-dark: #EC008C !default;
// ========== Global ========== //
// ========== Scrollbar ========== //
// Color of the scrollbar
$scrollbar-color: #ba0066 !default;
// Color of the hover scrollbar
$scrollbar-hover-color: #EC008C !default;
// ========== Scrollbar ========== //
// ========== Selection ========== //
// Color of the selected text
$selection-color: rgba(72.9, 0, 40, 0.4) !default;
$selection-color-dark: rgba(72.9, 0, 40, 0.4) !default;
// ========== Selection ========== //
// ========== Header ========== //
// Height of the header
$header-height: 3.5rem !default;
// Color of the header background
$header-background-color: #f8f8f8 !default;
$header-background-color-dark: #0d132c !default;
// Font style of the header title
$header-title-font-family: $global-font-family !default;
$header-title-font-size: 1.5rem !default;
// Color of the active menu item
$menu-active-color: #EC008C !default;
$menu-active-color-dark: #ba0066 !default;
// Color of the search background
$search-background-color: #e9e9e9 !default;
$search-background-color-dark: #2d333b !default;
// ========== Header ========== //
// ========== Tag Cloud ========== //
// Color range of tag cloud
$tag-cloud-start: $global-font-secondary-color!default;
$tag-cloud-end: $global-font-color!default;
$tag-cloud-start-dark: $global-font-secondary-color-dark!default;
$tag-cloud-end-dark: $global-font-color-dark!default;
// ========== Tag Cloud ========== //
// ========== Single Content ========== //
// Font size of the TOC
$toc-title-font-size: 1.2rem !default;
$toc-content-font-size: 1rem !default;
// Color of the single link
$single-link-color: #ba0066 !default; // 花青
$single-link-color-dark: #EC008C !default; // 釉蓝
// Color of the hover single link
$single-link-hover-color: #EC008C !default; // 莲瓣红
$single-link-hover-color-dark: #ba0066 !default; // 羽扇豆蓝
// Color of the table background
$table-background-color: #f6f8fa !default;
$table-background-color-dark: #0d132c !default;
// Color of the table thead
$table-thead-color: #EC008C !default;
$table-thead-color-dark: #0d132c !default;
// Color of the blockquote
$blockquote-color: #697681 !default;
$blockquote-color-dark: #2d333b !default;
// Color of reward
$reward-color: tomato !default;
$reward-color-dark: darken($reward-color, 5%) !default;
// Width of reward image
$reward-img-width: 180px !default;
// ========== Single Content ========== //
// ========== Pagination ========== //
// Color of the link in pagination
$pagination-link-color: #bfbfbf !default;
$pagination-link-color-dark: #b1b1ba !default;
// Color of the hover link in pagination
$pagination-link-hover-color: #ba0066 !default;
$pagination-link-hover-color-dark: #EC008C !default;
// ========== Pagination ========== //
// ========== Code ========== //
// Color of the code
$code-color: #24292f !default;
$code-color-dark: #adbac7 !default;
// Color of the code background
$code-background-color: #f6f8fa !default;
$code-background-color-dark: #0d132c !default;
$code-error-color: #dc3545 !default;
// Color of the hightlight code
$code-hightlight-color: #fff8c5 !default;
$code-hightlight-color-dark: rgba(174, 124, 20, 0.15) !default;
$code-info-color: #EC008C !default;
$code-info-color-dark: #ba0066 !default;
// Font size of the code
$code-font-size: 0.875rem !default;
// Font family of the code
$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
// ========== Code ========== //
// ========== GitHub Corners ========== //
// Color of the GitHub Corners
$github-corner-color: white !default;
$github-corner-color-dark: black !default;
// Color of the GitHub Corners background
$github-corner-fill: $header-background-color-dark !default;
$github-corner-fill-dark: $header-background-color !default;
// ========== GitHub Corners ========== //
@import '_partials/_maps/admonition';
@import '_partials/_maps/code-highlight';
@import '_partials/_maps/code-type';
@import '_partials/_maps/colors';
@import '_partials/_maps/utilities';

View File

@ -0,0 +1,171 @@
// ==============================
// Variables
// ==============================
// ========== Global ========== //
// Prefix for :root CSS variables.
$prefix: fi- !default;
// Font and Line Height
$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
$global-font-size: 16px !default;
$global-font-weight: 400 !default;
$global-line-height: 1.5rem !default;
// scroll-margin-top of content anchor
$global-scroll-margin-top: 0.5rem;
// Radius of the border
$global-border-radius: 5px !default;
// Color of the background
$global-background-color: #ffffff !default;
$global-background-color-dark: #292a2e !default;
// Color of the text
$global-font-color: #161209 !default;
$global-font-color-dark: #b1b1ba !default;
// Color of the secondary text
$global-font-secondary-color: #b1b1ba !default;
$global-font-secondary-color-dark: #909092 !default;
// Color of the link
$global-link-color: #161209 !default;
$global-link-color-dark: #b1b1ba !default;
// Color of the hover link
$global-link-hover-color: #2983bb !default; // 潮蓝
$global-link-hover-color-dark: #fff !default;
// Color of the border
$global-border-color: #f0f0f0 !default;
$global-border-color-dark: #363636 !default;
// ========== Global ========== //
// ========== Scrollbar ========== //
// Color of the scrollbar
$scrollbar-color: #87878d !default;
// Color of the hover scrollbar
$scrollbar-hover-color: #b1b1ba !default;
// ========== Scrollbar ========== //
// ========== Selection ========== //
// Color of the selected text
$selection-color: rgba(53, 166, 247, 0.25) !default;
$selection-color-dark: rgba(50, 112, 194, 0.4) !default;
// ========== Selection ========== //
// ========== Header ========== //
// Height of the header
$header-height: 3.5rem !default;
// Color of the header background
$header-background-color: #f8f8f8 !default;
$header-background-color-dark: #252627 !default;
// Font style of the header title
$header-title-font-family: $global-font-family !default;
$header-title-font-size: 1.5rem !default;
// Color of the active menu item
$menu-active-color: #161209 !default;
$menu-active-color-dark: #fff !default;
// Color of the search background
$search-background-color: #e9e9e9 !default;
$search-background-color-dark: #363636 !default;
// ========== Header ========== //
// ========== Tag Cloud ========== //
// Color range of tag cloud
$tag-cloud-start: $global-font-secondary-color!default;
$tag-cloud-end: $global-font-color!default;
$tag-cloud-start-dark: $global-font-secondary-color-dark!default;
$tag-cloud-end-dark: $global-font-color-dark!default;
// ========== Tag Cloud ========== //
// ========== Single Content ========== //
// Font size of the TOC
$toc-title-font-size: 1.2rem !default;
$toc-content-font-size: 1rem !default;
// Color of the single link
$single-link-color: #2376b7 !default; // 花青
$single-link-color-dark: #1781b5 !default; // 釉蓝
// Color of the hover single link
$single-link-hover-color: #ea517f !default; // 莲瓣红
$single-link-hover-color-dark: #619ac3 !default; // 羽扇豆蓝
// Color of the table background
$table-background-color: #fff !default;
$table-background-color-dark: #272c34 !default;
// Color of the table thead
$table-thead-color: #ededed !default;
$table-thead-color-dark: #20252b !default;
// Color of the blockquote
$blockquote-color: #697681 !default;
$blockquote-color-dark: #9ba3aa !default;
// Color of reward
$reward-color: tomato !default;
$reward-color-dark: darken($reward-color, 5%) !default;
// Width of reward image
$reward-img-width: 180px !default;
// ========== Single Content ========== //
// ========== Pagination ========== //
// Color of the link in pagination
$pagination-link-color: #bfbfbf !default;
$pagination-link-color-dark: #b1b1ba !default;
// Color of the hover link in pagination
$pagination-link-hover-color: #000 !default;
$pagination-link-hover-color-dark: #fff !default;
// ========== Pagination ========== //
// ========== Code ========== //
// Color of the code
$code-color: #24292f !default;
$code-color-dark: #adbac7 !default;
// Color of the code background
$code-background-color: #f6f8fa !default;
$code-background-color-dark: #2d333b !default;
$code-error-color: #dc3545 !default;
// Color of the hightlight code
$code-hightlight-color: #fff8c5 !default;
$code-hightlight-color-dark: rgba(174, 124, 20, 0.15) !default;
$code-info-color: #9c9c9c !default;
$code-info-color-dark: #b1b0b0 !default;
// Font size of the code
$code-font-size: 0.875rem !default;
// Font family of the code
$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
// ========== Code ========== //
// ========== GitHub Corners ========== //
// Color of the GitHub Corners
$github-corner-color: white !default;
$github-corner-color-dark: black !default;
// Color of the GitHub Corners background
$github-corner-fill: $header-background-color-dark !default;
$github-corner-fill-dark: $header-background-color !default;
// ========== GitHub Corners ========== //
@import '_partials/_maps/admonition';
@import '_partials/_maps/code-highlight';
@import '_partials/_maps/code-type';
@import '_partials/_maps/colors';
@import '_partials/_maps/utilities';

View File

@ -0,0 +1,13 @@
@charset "utf-8";
@import "_variables";
@import "_override";
@import "_mixin/index";
@import "_core/root";
@import "_core/base";
@import "_core/layout";
@import "_core/common";
@import "_core/patch";
@import "_page";
@import "_core/media";
@import "_custom";