:root {
    --style-border-radius: 0px;
    --style-side-padding: 5%;

    --color-background: rgb(236, 236, 236);
    --color-theme: rgb(29, 112, 184);
    --color-theme-shallow: rgb(209, 234, 255);
    --color-hr: #b3b3b3;
    --color-text: black;
    --color-white: white;
    --color-contrast-text: white;
    --color-mono-background: rgba(230, 230, 230, 0.85);
    --color-box-background: rgba(170, 170, 170, 0.12);
    --color-link: rgb(0, 107, 201);
    --color-link-active: black;
    --color-link-active-background: rgb(255, 208, 0);
    --color-green: green;
    --color-green-shallow: rgb(201, 255, 201);
    --color-red: rgb(209, 0, 0);
    --color-red-shallow: rgb(255, 220, 220);
    --color-grey: rgb(71, 71, 71);
    --color-grey-shallow: rgb(185, 185, 185);
    --color-pink: rgb(255, 120, 142);
}

@font-face {
    font-family: "sans";
    src: url("../font/TitilliumWeb-Regular.ttf");
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: "sans";
    src: url("../font/TitilliumWeb-Italic.ttf");
    font-weight: normal;
    font-style: italic;
}

@font-face {
    font-family: "sans";
    src: url("../font/TitilliumWeb-Bold.ttf");
    font-weight: bold;
    font-style: normal;
}

@font-face {
    font-family: "sans";
    src: url("../font/TitilliumWeb-BoldItalic.ttf");
    font-weight: bold;
    font-style: italic;
}

@font-face {
    font-family: "Bilibili Icon";
    src: url("../font/Bilibili_Icons_by_Jiuru.ttf");
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: "Web Icon";
    src: url("../font/JR_icons.ttf");
    font-weight: normal;
    font-style: normal;
}


body {
    font-family: "sans", sans-serif;
    margin: 0;
    padding: 0;
    background-color: var(--color-background);
    font-size: 18px;
}

/* JavaScript 未启用警告 */
.javascript-disable-warning {
    color: white;
    background-color: red;
}

main {
    margin: 20px var(--style-side-padding);
    padding: 0;
}

/* 基础标题样式 */
h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--color-theme);
    padding: 0;
    font-weight: normal;
}

/* 各级标题字体大小 */
h1 {
    font-size: 40px;
    margin: 4px 4px;
}

h2 {
    font-size: 33px;
    margin: 4px 4px;
}

h3 {
    font-size: 29px;
    margin: 20px 4px 6px 0;
}

h4 {
    font-size: 26px;
    margin: 4px 4px;
}

h5 {
    font-size: 23px;
    margin: 4px 4px;
}

h6 {
    font-size: 20px;
    padding: 3px;
    margin: 5px;
}

/* 标题内粗体元素样式 */
h1 b,
h2 b,
h3 b,
h4 b,
h5 b,
h6 b {
    color: var(--color-theme);
    padding: 0;
    font-weight: bold;
}

/* 新增的黑色主题类 */
.black,
h1.black,
h2.black,
h3.black,
h4.black,
h5.black,
h6.black {
    color: var(--color-text) !important;
}

/* 黑色主题下的粗体元素 */
.black b,
h1.black b,
h2.black b,
h3.black b,
h4.black b,
h5.black b,
h6.black b {
    color: var(--color-text) !important;
}

h3 {
    display: flex;
    align-items: center;
}

h3::before {
    content: "r";
    margin-right: 10px;
    font-family: "Bilibili Icon"
}

h3::after {
    content: "";
    display: block;
    height: 1px;
    background: var(--color-hr);
    flex: 1;
    margin-left: 20px;
}

p {
    color: var(--color-text);
    font-size: 18px;
    margin: 0;
    padding: 4px;
    line-height: 155%;
}

a {
    color: var(--color-link);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 1px;
    padding: 0;
    margin: 4px;
    font-size: 18px;
}

a.outbound::before {
    content: "B";
    font-family: "Web Icon";
}

a:hover {
    font-weight: bold;
    text-decoration-thickness: 2px;
}

a:active {
    background-color: var(--color-link-active-background);
    color: var(--color-link-active);
}

/* 伪装成按钮的超链接 */
a.button-big,
a.button-small {
    text-decoration: none;
}

a.button-big:hover,
a.button-small:hover {
    font-weight: normal
}

/* 图标 */
i.w {
    font-style: normal;
    font-family: "Web Icon";
    margin: 5px;
    padding: 0;
    user-select: none;
    pointer-events: none;
}

i.b {
    font-style: normal;
    font-family: "Bilibili Icon";
    margin: 5px;
    padding: 0;
    user-select: none;
    pointer-events: none;
}

hr {
    background: var(--color-hr, #b3b3b3);
    border: 0;
    height: 1px;
    padding: 0px;
    margin: 1em 0px;
}

hr.narrow {
    margin: 3px;
}

em {
    font-style: normal;
    font-weight: bold;
    font-size: large;
    color: var(--color-theme);
}

mark {
    background-color: var(--color-link-active-background);
}

header {
    margin: 0;
    background-color: var(--color-theme);
    color: var(--color-contrast-text);
    padding: 5px var(--style-side-padding);
    flex-wrap: wrap;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.header-title {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 100%;
}

header nav {
    display: flex;
    align-items: center;
    gap: 5px;
    height: 100%;
}

header button,
header a {
    font-weight: normal;
    text-decoration: none;
    padding: 10px 7px;
    margin: 0 10px;
    border-bottom: 3px solid transparent;
    transition: transform 0.1s ease, border-bottom 0.1s ease;
    align-items: center;
    display: inline-flex;
}

header button:hover,
header a:hover {
    font-weight: normal;
    border-bottom: 3px solid var(--color-contrast-text);
    transition: transform 0.1s ease, border-bottom 0.1s ease;
}

header nav button:active,
header nav a:active {
    background-color: var(--color-contrast-text);
    color: var(--color-theme);
    font-weight: normal;
    border-bottom: 2px solid var(--color-contrast-text);
}

header h1,
header h2,
header h3,
header h4,
header h5,
header h6,
header p,
header a {
    color: var(--color-contrast-text);
}

nav.bar {
    border-bottom: 2px solid var(--color-theme);
    padding: 0 var(--style-side-padding);
}

nav.bar button {
    border: none;
    background-color: transparent;
    color: var(--color-text);
    font-size: 20px;
    margin: auto 5px;
}

nav.bar button:hover {
    background-color: var(--color-theme-shallow);
}

nav.bar button:active {
    background-color: var(--color-theme);
    color: var(--color-contrast-text);
}

section.multiple-page {
    display: none;
    margin: 0;
    padding: 0;
    background-color: transparent;
}

section.multiple-page.active {
    display: block;
}

/* 脚注 */
footer {
    border-top: 5px solid var(--color-theme);
    background-color: var(--color-box-background);
    margin: 40px 0 0 0;
    padding: 10px var(--style-side-padding);
}

.footer-box {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}

.footer-about {
    align-items: flex-end;
}

.footer-about a {
    color: var(--color-grey);
}

/* Github Page 标识 */
.github-page-note {
    color: var(--color-text);
    font-size: 25px;
    text-decoration: none;
}

.github-page-note:hover {
    text-decoration: none;
    font-weight: normal;
}

.github-page-note:active {
    font-weight: normal;
}

/* 按钮 */
button {
    font-family: "sans";
}

/* 按钮基础样式 */
.button-big,
.button-small {
    border-radius: var(--style-border-radius);
    background-color: var(--color-contrast-text);
    color: var(--color-text);
    border: 1px solid var(--color-text);
    cursor: pointer;
}

/* 大按钮 */
.button-big {
    min-width: 80px;
    box-shadow: 0 3px 0 0 var(--color-text);
    font-size: 17px;
    padding: 5px 13px;
    margin: 4px;
}

.button-big:hover {
    background: var(--color-box-background);
}

.button-big:active {
    transform: translateY(2px);
    box-shadow: 0 1px 0 0 var(--color-text);
}

.button-big:disabled,
.button-big:disabled:hover,
.button-big:disabled:active {
    cursor: not-allowed;
    background-color: var(--color-red-shallow);
    transform: none;
    box-shadow: 0 3px 0 0 var(--color-text);
    color: var(--color-text);
}

/* 小按钮 */
.button-small {
    min-width: 50px;
    box-shadow: 0 2px 0 0 var(--color-text);
    font-size: 15px;
    padding: 2px 4px;
    margin: 2px;
}

.button-small:hover {
    background: var(--color-box-background);
}

.button-small:active {
    transform: translateY(1px);
    box-shadow: 0 1px 0 0 var(--color-text);
}

button .flat {
    border: none;
    font-size: 17px;
    min-width: 80px;
    padding: 8px 13px;
    margin: 4px;
    color: var(--color-text);
    background-color: var(--color-box-background);
}

.button-full-green {
    color: var(--color-contrast-text);
    background-color: var(--color-green);
    text-decoration: none;
    font-weight: bold;
    border: none;
    font-size: 17px;
    min-width: 80px;
    padding: 8px 13px;
    margin: 4px;
    cursor: pointer;
}

.button-full-green.normal {
    font-weight: normal;
}


/* 提示线 */
.callout {
    margin: 20px auto;
    border-left: 5px solid var(--color-theme);
    padding: 2px 20px;
}


.callout.caution {
    --color-theme: rgb(255, 153, 0);
    --color-theme-shallow: rgb(254, 231, 194);

}

.callout.warning {
    --color-theme: rgb(192, 0, 0);
    --color-theme-shallow: rgb(255, 197, 197);
}

.callout.modest {
    --color-theme: var(--color-grey);
    --color-theme-shallow: rgb(225, 225, 225);
}

.callout.pink {
    --color-theme: var(--color-pink);
    --color-theme-shallow: rgb(255, 224, 224);
}

.callout.background {
    background-color: var(--color-theme-shallow);
}

/* 列表 */
ul {
    margin: 10px 50px;
    padding: 0;
}

ol {
    margin: 10px 50px;
    padding: 0;
}

li {
    margin: 5px;
    padding: 0;
}

/* 等宽字体 */
pre {
    font-family: "Consolas", "Menlo", "Droid Sans Mono", "Sarasa Fixed SC", monospace, sans-serif;
    font-size: 18px;
    background-color: var(--color-mono-background);
}

code {
    font-family: "Consolas", "Menlo", "Droid Sans Mono", "Sarasa Fixed SC", monospace, sans-serif;
    font-size: 16px;
    background-color: var(--color-mono-background);
    margin: auto 5px;
    padding: 3px;
}

.mono {
    font-family: "Consolas", "Menlo", "Droid Sans Mono", "Sarasa Fixed SC", monospace, sans-serif;
}

/* 对话框 */
dialog {
    min-width: 300px;
    min-height: 200px;
    max-width: 80%;
    max-height: 80%;
    border: 1px solid var(--color-grey);
    padding: 0;
    box-shadow: 0 4px 20px var(--color-grey);
    overflow: hidden;
    display: none;
    resize: both;
    position: fixed;
}

dialog[open] {
    display: flex;
    flex-direction: column;
}

dialog::backdrop {
    background: transparent;
}

dialog .header {
    background-color: var(--color-theme);
    color: var(--color-contrast-text);
    padding: 0;
    font-size: 24px;
    display: flex;
    justify-content: space-between;
}

dialog .header .header-title {
    padding: 4px;
    margin: 0;
    font-size: 22px;
}

dialog .header-controls button {
    background-color: var(--color-theme);
    color: var(--color-contrast-text);
    border: none;
    height: 100%;
}

dialog .header-controls button:hover {
    color: var(--color-theme);
    background-color: var(--color-contrast-text);
}

dialog .body {
    margin-bottom: auto;
    overflow-y: auto;
}

dialog .controls {
    background-color: var(--color-box-background);
    padding: 3px 13px 3px 3px;
    display: flex;
    justify-content: flex-end;
    gap: 5px;
}

/* 各种导入 */
input, textarea, select {
    background-color: var(--color-box-background);
    border: none;
    font-size: 16px;
    border: 1px solid var(--color-grey);
    font-family: "sans", sans-serif;
}

input:hover, textarea:hover, select:hover {
    border: 1px solid var(--color-theme);
    background-color: var(--color-theme-shallow);
}

input:active, textarea:active, select:active {
    border: 1px solid var(--color-theme);
    background-color: var(--color-theme-shallow);
}

input.tool-input,
select.tool-input,
textarea.tool-input {
    display: inline-block;
    margin: 10px 10px;
    width: 40vw;
    height: 30px;
}

select.tool-input {
    display: inline-block;
    margin-left: 10px;
    width: 40vw;
}

option:checked {
    background-color: var(--color-theme);
    color: var(--color-contrast-text);
}

form div.line {
    display: flex;
    align-items: center;
    gap: 5px;
    justify-content: space-around;

    label {
        max-width: 7vw;
    }

    input, select, textarea {
        flex: 1;
    }
} 

form label {
    width: 10vw;
    display: inline-block;
    text-align: right;
    margin: 5px auto;
    padding: 3px auto;
}

form label:hover {
    font-weight: bolder;
}


section {
    margin: 20px 0;
    padding: 10px;
    color: var(--color-text);
}

/* Spoiler (样式1) (线条型)*/
div.spoiler-header {
    color: var(--color-text);
    border-bottom: 1px solid var(--color-hr);
}

div.spoiler-header * {
    display: inline-block;
    padding: 0;
    margin: 3px;
    font-size: 23px;
    color: var(--color-text);
}

div.spoiler-header button {
    border: none;
    background-color: transparent;
}

div.spoiler-header button:hover {
    background-color: var(--color-theme-shallow);
}

section.spoiler-content {
    background-color: transparent;
    padding: 0px;
    display: none;
    transition: display 0.5s ease-in-out;
}

section.spoiler-content.active {
    display: block;
    margin-bottom: 20px;
}

/* Spoiler (样式2) (box型) */
section.spoiler div.spoiler-header {
    display: inline-block;
    padding: 0;
    margin: 3px;
    font-size: 23px;
    color: var(--color-text);
    border: none;
}

section.spoiler div.spoiler-header button {
    border: none;
    background-color: transparent;
}

section.spoiler div.spoiler-header button:hover {
    background-color: var(--color-theme-shallow);
}

section.spoiler {
    background-color: var(--color-white);
    border-radius: 10px;
}

section.spoiler div.spoiler-content {
    display: none;
}

section.spoiler div.spoiler-content.active {
    display: block;
    margin-bottom: 20px;
}

/* box */
.box {
    background-color: var(--color-white);
    border-radius: 10px;
}

/* 表格 */
/* 普通表格样式 - 黑色线条边框，表头使用主题浅色背景 */
table {
    width: 100%;
    border-collapse: collapse;
    font-family: inherit;
}

/* 表格单元格统一样式 */
th,
td {
    border: 1px solid #000000;
    /* 黑色线条边框 */
    padding: 10px 12px;
    text-align: left;
    vertical-align: top;
}

/* 表头样式 */
th {
    background-color: var(--color-theme-shallow);
    font-weight: 600;
    border: 1px solid #000000;
}

/* 可选：为表格添加外层边框（使表格整体有边框感） */
table {
    border: 1px solid #000000;
}

article p {
    text-indent: 2em;
}

/* flex布局 */
.flex {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
}