MediaWiki:Common.css: Difference between revisions

From HUIJIA FUN
m Edit
Sync with zh: move page components into section 8 (title block, rec-* cards, chapter track, Coming Soon) driven by component tokens with Archive Zone defaults; .vgr-demo exclusion for doc examples
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
@import url('https://fonts.googleapis.com/css2?family=Rubik+80s+Fade&display=swap');
/* =====================================================================
* HUIJIA FUN (EN) - MediaWiki:Common.css (applies to all skins)
* Design language: VGR Design System - v2
*
* v2: Main Page cards, comments and profile pages are written from scratch for this site;
*    all pink is gone; no resources are loaded from other wikis, and no other site
*    is named in these comments.
*
* Attribution:
*  - Moegirlpedia MediaWiki:Gadget-site-styles.css (CC BY-NC-SA 3.0): spoiler blackout, info boxes
*  - Wikipedia MediaWiki:Common.css (CC BY-SA): hlist, navbox, navbar, collapseButton
* ===================================================================== */


* Copyright: CC-BY-SA


/* Some codes are from https://otomad.wiki/MediaWiki:Common.css */
/* =====================================================================
* 1. Fonts
* ===================================================================== */


/* Font */
/* Pre-Diphic Mono: the in-world language of the VGR series.
  The font file lives on huijia.fun. Browsers only load a cross-origin font when the server
  sends an Access-Control-Allow-Origin header, so /fonts/ on huijia.fun must allow
  https://en.huijia.fun (or upload the same file under en.huijia.fun/fonts/ and point here). */
@font-face {
@font-face {
    font-family: 'Yuesong';
  font-family: "Pre-Diphic Mono";
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/Yuesong.woff2') format('woff2');
  src: url("https://huijia.fun/fonts/PreDiphicMono-1.1.woff2") format("woff2");
  font-display: swap;
}
/* !important: theme templates set fonts with !important on sidebars, headings, tables, etc.; without it .pd loses */
.pd {
  font-family: "Pre-Diphic Mono", sans-serif !important;
  font-feature-settings: "rlig" 1, "ccmp" 1 !important;
  line-height: 1;
}
}


@font-face {
/* {{PD}} vertical text: Module:PreDiphic splits the text into fixed-length columns (.pd-col);
    font-family: 'Huiwen';
  columns run left to right and wrap to a new row at the right edge of the content, no scrollbar */
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/汇文明朝体.woff2') format('woff2');
.pd-cols {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: flex-start;
  vertical-align: top;
  max-width: 100%;
  column-gap: 0.25em;
  row-gap: 0.75em;
}
/* Each column stays within the visible window height (minus header and margins); the
  height parameter overrides this cap. 100svh = visible height with the mobile address bar
  shown, matching the column logic in Common.js; browsers without svh fall back to 100vh. */
.pd-col {
  writing-mode: vertical-lr;
  max-height: calc(100vh - 120px);
  max-height: calc(100svh - 120px);
}
}


@font-face {
/* Single vertical span (the typer page's "Copy as HTML" output): top-aligned, within window height */
    font-family: 'GuZhangHei';
.pd-v {
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/瀞之故障黑体H2.woff2') format('woff2');
  writing-mode: vertical-lr;
  vertical-align: top;
  max-height: calc(100vh - 120px);
  max-height: calc(100svh - 120px);
}
}


/* Huiwen Mincho: work titles and chapter titles (--font-display).
  The file name is percent-encoded so this file stays ASCII-only. */
@font-face {
@font-face {
     font-family: 'Dianzhensong';
     font-family: 'Huiwen';
     src: url('https://static.wikia.nocookie.net/backrooms/images/0/0d/%E7%82%B9%E9%98%B5%E5%AE%8B%E5%AD%97.woff2/revision/latest?cb=20230402095639&format=original&path-prefix=zh') format('woff2');
     src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/%E6%B1%87%E6%96%87%E6%98%8E%E6%9C%9D%E4%BD%93.woff2') format('woff2');
    font-display: swap;
}
}


/* Yuesong: line 3 of the old file was missing its opening comment mark, so this rule
  never took effect. Kept now that it is fixed; delete it once no page uses it. */
@font-face {
@font-face {
  font-family: '7397';
    font-family: 'Yuesong';
  src: url('https://soka.cafe/images/c/cf/7397.ttf') format('truetype');
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/Yuesong.woff2') format('woff2');
    font-display: swap;
}
}


/* Modify the maximum height in expanded state */
/* Retired fonts: two hotlinked fonts (one from another wiki's file server, one from a
.mw-collapsible.mw-collapsed
  Fandom image server), plus GuZhangHei and Rubik 80s Fade, which the VGR Design System
{
  no longer uses. If a page still needs one, upload the font file to this site first. */
    max-height: none;
}


/* Mouse touch */
/* Material Icons (Google, Apache 2.0): .md icons in info boxes, the upload page, etc.
.custom-link
  The loli.net mirror keeps them loading for visitors in mainland China. */
{
@font-face {
     text-decoration: none;
    font-family: 'Material Icons';
     color: none;
    font-style: normal;
    font-weight: 400;
     font-display: block;
     src: url(https://gstatic.loli.net/s/materialicons/v140/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
}
 
.md, .md-lg, .md-md, .md-sm, .material-icons {
.custom-link:hover
    font-family: 'Material Icons';
{
    font-style: normal;
     text-decoration: underline;
    font-weight: normal;
     color: blue;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
     text-transform: none;
     white-space: nowrap;
    direction: ltr;
    display: inline-block;
    user-select: none;
    font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
}
}
.md-lg { font-size: 60px; }
.md-md { font-size: 30px; }
.md-sm { font-size: 10px; }


/* Word breaking */
p {
  word-break: normal;
}


/* Column */
/* =====================================================================
#left-column
* 2. VGR tokens (site default = Archive Zone "paper" palette)
{
*    Theme templates (Theme-HJ, Theme-STR, Theme-VGR...) only reset a few of these.
  float: left;
* ===================================================================== */
  width: 49%;
:root {
}
    --paper: #F3F5F1;
    --paper-raised: #FFFFFF;
    --paper-sunk: #E7ECE5;
    --ink: #16211B;
    --ink-muted: #4C5A51;
    --rule: #C9D3CA;
    --rule-strong: #7E8B81;
    --heading-bar: #C8D8C8;
    --dot: #A3B1A8;
    --accent: #025F32;
    --accent-fill: #025F32;
    --on-accent: #FFFFFF;
    --accent-tint: #DCEBD9;
    --link: #0B6B3A;
    --link-new: #A8432F;
    --focus: #002F9C;


#right-column
    --font-display: Huiwen, "Source Serif 4", "Noto Serif SC", "Source Han Serif SC", serif;
{
    --font-serif: "Source Serif 4", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
  float: right;
    --font-sans: "Source Sans 3", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  width: 49%;
    --font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;
}


#left-column-full
    --radius-xs: 2px;
{
    --radius-sm: 4px;
  float: left;
  width: 50%;
}


#right-column-full
    /* Primary-color variables read by the skin and extensions: all point to Huijia Green */
{
    --color-primary: var(--accent);
  float: right;
    --color-progressive: var(--accent);
  width: 50%;
    --background-color-progressive: var(--accent-fill);
    --border-color-progressive: var(--accent);
}
}


#middle-column-full
html.skin-theme-clientpref-night {
{
    --paper: #111613;
  float: middle;
    --paper-raised: #18201B;
  width: 50%;
    --paper-sunk: #0C100E;
    --ink: #E4EBE5;
    --ink-muted: #A2B0A6;
    --rule: #2A352E;
    --rule-strong: #667A6C;
    --heading-bar: #2F4033;
    --dot: #2A352E;
    --accent: #C1E1A6;
    --accent-fill: #3B7E3D;
    --accent-tint: #1C2B21;
    --link: #8FD3A8;
    --link-new: #F0907E;
    --focus: #8FB0FF;
}
}


#left-column-0.3
body { accent-color: var(--accent); }
{
  float: left;
  width: 29%;
}


#left-column-0.7
{
  float: left;
  width: 69%;
}


#right-column-0.3
/* =====================================================================
{
* 3. General utilities
  float: left;
* ===================================================================== */
  width: 29%;
}


#right-column-0.7
.mw-collapsible.mw-collapsed { max-height: none; }
{
  float: left;
  width: 69%;
}


p { word-break: normal; }


/* 以下代码均从https://otomad.wiki/MediaWiki:Common.css复制 */
cite { font-style: normal; }


/* 加载Material icons */
.res-img img { max-width: 100%; height: auto; }
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url(https://gstatic.loli.net/s/materialicons/v140/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}


.material-icons, .md, .md-lg, .md-md, .md-sm {
/* Custom link: underline on hover */
  font-family: 'Material Icons';
.custom-link { text-decoration: none; color: inherit; }
  font-weight: normal;
.custom-link:hover { text-decoration: underline; color: var(--link); }
  font-style: normal;
  font-size: 24px;  /* Preferred icon size */
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;
  user-select: none;


  /* Support for all WebKit browsers. */
/* Two-column layouts
   -webkit-font-smoothing: antialiased;
  In the old #left-column-0.3 the "." was read as a class selector, so those rules never
   /* Support for Safari and Chrome. */
  matched. The escaped form below matches id="left-column-0.3" without changing any page. */
  text-rendering: optimizeLegibility;
#left-column        { float: left;  width: 49%; }
#right-column      { float: right; width: 49%; }
#left-column-full   { float: left;  width: 50%; }
#right-column-full  { float: right; width: 50%; }
#middle-column-full { margin: 0 auto; width: 50%; }
#left-column-0\.3  { float: left; width: 29%; }
#left-column-0\.7   { float: left;  width: 69%; }
#right-column-0\.3  { float: right; width: 29%; }
#right-column-0\.7  { float: right; width: 69%; }


  /* Support for Firefox. */
@media screen and (max-width: 850px) {
  -moz-osx-font-smoothing: grayscale;
     #left-column, #right-column,
 
    #left-column-full, #right-column-full, #middle-column-full,
  /* Support for IE. */
    #left-column-0\.3, #left-column-0\.7,
  font-feature-settings: 'liga';
     #right-column-0\.3, #right-column-0\.7,
}
    #user-page-left, #user-page-right {
.md-lg {
        float: none;
     font-size: 60px;
        width: 100%;
}
    }
.md-md {
    font-size: 30px;
}
.md-sm {
    font-size: 10px;
}
 
/* Main Page CSS */
body.page-Main_Page #firstHeading,
body.page-Main_Page li#ca-talk,  
body.page-Main_Page li#ca-watch,  
body.page-Main_Page li#ca-unwatch,
body.page-Main_Page li#ca-history,  
body.page-Main_Page li#ca-nstab-main,  
body.page-Main_Page li#ca-viewsource,
body.page-Main_Page #catlinks-sidebar,  
body.page-Main_Page #mw-normal-catlinks,  
body.page-Main_Page #ca-view {
    display: none !important;
}
 
body.page-Main_Page #firstHeading {
    display: none !important;
}
 
body.page-Main_Page #siteSub {
     display: none;
}
 
.page-留言板 #mw-wrapper #flowthread {
margin-top: 0;
display: flex;
flex-wrap: wrap;
flex-direction: column-reverse;
margin: 24px 0 4px;
}
 
.page-留言板 #mw-wrapper #flowthread .comment-paginator {
border: 0;
display: flex;
justify-content: flex-end;
}
}


.page-留言板 #mw-wrapper #flowthread .comment-paginator span {
/* Main Page: hide the page title, page tabs, variant menu and category bar */
display: flex;
body.page-Main_Page #firstHeading,
border: 0;
body.page-Main_Page #siteSub,
width: 36px;
body.page-Main_Page li#ca-talk,
height: 36px;
body.page-Main_Page li#ca-watch,
padding: 0;
body.page-Main_Page li#ca-unwatch,
margin: 0;
body.page-Main_Page li#ca-history,
text-align: center;
body.page-Main_Page li#ca-nstab-main,
align-items: center;
body.page-Main_Page li#ca-viewsource,
justify-content: center;
body.page-Main_Page li#ca-view,
font-size: 14px;
body.page-Main_Page #p-variants,
border-radius: 0;
body.page-Main_Page #p-variants-desktop-label,
background-color: #fafafa;
body.page-Main_Page #catlinks-sidebar,
box-shadow: inset 0px 10px 4px -4px rgba(0, 0, 0, 0.04);
body.page-Main_Page #mw-normal-catlinks { display: none !important; }
}


.page-留言板 #mw-wrapper #flowthread .comment-paginator span[current] {
/* Scroll-to-top / bottom buttons */
color: white;
img#scrollUpButton, img#scrollDownButton { transition: transform 200ms; }
background-color: #fb7299;
img#scrollUpButton:hover { transform: scale(1.1); }
box-shadow: 0 2px 4px rgba(240, 110, 142, 0.6);
img#scrollUpButton:active { transform: scale(.95); }
font-weight: bold;
img#scrollDownButton:hover { transform: rotate(180deg) scale(1.1) !important; }
border-radius: 4px !important;
img#scrollDownButton:active { transform: rotate(180deg) scale(.95) !important; }
}


.page-留言板 #mw-wrapper #flowthread .comment-paginator span:first-child{
/* Repost badge */
border-radius: 4px 0 0 4px;
.repost-circle {
}
 
.page-留言板 #mw-wrapper #flowthread .comment-paginator span:last-child{
border-radius: 0 4px 4px 0;
}
 
.res-img img {
max-width:100%;
height:auto;
}
 
/* 链接列表的转载标记 */
.repost-circle{
     display: inline-block;
     display: inline-block;
     margin-left: 5px;
     margin-left: 5px;
    border: solid 1px;
     padding: 3px 6px;
    border-radius: 100px;
     padding: 3px;
     font-size: 12px;
     font-size: 12px;
     line-height: 1;
     line-height: 1;
     color: #e06386;
     color: var(--accent);
     border: 1px #e06386 solid;
     border: 1px solid var(--accent);
    border-radius: var(--radius-xs);
}
}
.repost-circle a.external{
.repost-circle a.external {
     background: none!important;
     background: none !important;
     padding-right: 0px!important;
     padding-right: 0 !important;
     color: #e06386!important;
     color: var(--accent) !important;
    box-sizing: border-box!important;
}
}


/* 本段内容来自萌娘百科 https://zh.moegirl.org.cn/MediaWiki:Gadget-site-styles.css 感谢贡献!*/
 
/* 版权协定:知识共享 署名-非商业性使用-相同方式共享 3.0 */
/* =====================================================================
/* 黑幕模板配合CSS */
* 4. Spoiler blackout (adapted from Moegirlpedia)
/* 把这几行单独拎出来写,否则会被Firefox合并到“.heimu a”这条规则,然后又被上面的“点过外链不变色”规则override */
* ===================================================================== */
.heimu,
.heimu,
.heimu rt {
.heimu rt { background-color: #252525; }
    background-color: #252525;
}
span.heimu a.external,
span.heimu a.external,
span.heimu a.external:visited,
span.heimu a.external:visited,
span.heimu a.extiw,
span.heimu a.extiw,
span.heimu a.extiw:visited {
span.heimu a.extiw:visited { color: #252525; }
    color: #252525;
}
.heimu,
.heimu,
.heimu a,
.heimu a,
a .heimu,
a .heimu,
.heimu a.new {
.heimu a.new { color: #252525; text-shadow: none; }
    color: #252525;
    text-shadow: none;
}
body:not(.heimu_toggle_on) .heimu:hover,
body:not(.heimu_toggle_on) .heimu:hover,
body:not(.heimu_toggle_on) .heimu:active,
body:not(.heimu_toggle_on) .heimu:active,
body:not(.heimu_toggle_on) .heimu.off {
body:not(.heimu_toggle_on) .heimu.off { transition: color .13s linear; color: #FFFFFF; }
    transition: color .13s linear;
    color: white;
}
body:not(.heimu_toggle_on) .heimu:hover a,
body:not(.heimu_toggle_on) .heimu:hover a,
body:not(.heimu_toggle_on) a:hover .heimu,
body:not(.heimu_toggle_on) a:hover .heimu,
body:not(.heimu_toggle_on) .heimu.off a,
body:not(.heimu_toggle_on) .heimu.off a,
body:not(.heimu_toggle_on) a:hover .heimu.off {
body:not(.heimu_toggle_on) a:hover .heimu.off { transition: color .13s linear; color: #8FD3A8; }
    transition: color .13s linear;
    color: lightblue;
}
body:not(.heimu_toggle_on) .heimu.off .new,
body:not(.heimu_toggle_on) .heimu.off .new,
body:not(.heimu_toggle_on) .heimu.off .new:hover,
body:not(.heimu_toggle_on) .heimu.off .new:hover,
body:not(.heimu_toggle_on) .new:hover .heimu.off,
body:not(.heimu_toggle_on) .new:hover .heimu.off,
body:not(.heimu_toggle_on) .heimu:hover .new {
body:not(.heimu_toggle_on) .heimu:hover .new { transition: color .13s linear; color: #F0907E; }
    transition: color .13s linear;
 
    color: #FCC;
 
}
/* =====================================================================
/* info类模板 */
* 5. Info boxes
* ===================================================================== */
.infoBox {
.infoBox {
     margin: 10px auto;
     margin: 10px auto;
     width: 80%;
     width: 80%;
     box-shadow: 0 1px 3px 0px rgb(0 0 0 / 20%);
     border: 1px solid var(--rule);
     border-radius: 4px;
     border-top: 2px solid var(--accent);
}
     background: var(--paper-raised);
@media screen and (max-width: 850px) {
.infoBox {
float: unset !important;
     width: 100% !important;
    clear: both;
}}
.infoBox a, p{
    word-break: normal;
}
}
.infoBox a { word-break: normal; }
.infoBoxTitle {
.infoBoxTitle {
     margin: 3px auto;
     margin: 3px auto;
     padding: 6px 0 0 0;
     padding: 6px 0 0;
     text-align: center;
     text-align: center;
     font-weight: 700;
     font-weight: 700;
    color: var(--ink);
}
}
.infoBoxIcon {
.infoBoxIcon { display: table-cell; padding: 2px 0 2px .5em; vertical-align: middle; color: var(--accent); }
    display: table-cell;
.infoBoxText { display: table-cell; padding: .25em .5em .25em 1.3em; width: 100%; vertical-align: middle; }
    padding: 2px 0 2px .5em;
.infoBoxContent { border: 0; background: var(--paper-sunk); }
    vertical-align: middle;
.infoBoxBelow { margin: 0 auto; padding: 0; text-align: center; }
 
@media screen and (max-width: 850px) {
    .infoBox { float: unset !important; width: 100% !important; clear: both; }
    .infobox { width: 100%; margin: 0 0 2em; }
}
}
.infoBoxText {
@media screen and (min-width: 851px) {
     display: table-cell;
     .infobox { width: 300px; margin: 1em 0 30px 30px; }
    padding: .25em .5em .25em 1.3em;
    width: 100%;
    vertical-align: middle;
}
}
.infoBoxContent {
 
     border: 1px solid #ddd;
.fieldset {
     border-left-width: 0;
     border: 1px solid var(--rule);
    background: #fbfbfb;
     border-radius: var(--radius-sm);
}
     padding: 0.35em 1.625em 0.75em;
.infoBoxBelow {
    margin: 0 auto;
     padding: 0;
    text-align: center;
}
/* wikitable green */
table.wikitable-green {
    background: #c9f6e1
}
.wikitable-green th {
    background: #13ec93
}
.wikitable-green td {
    background: #f3f3f3
}
}


/* Upload page: info box layout fix */
.mw-special-Upload i.md { display: flex; }
.mw-special-Upload .infoBoxText li { margin-top: 6px; margin-bottom: 0; }




/* 教程链接列表 */
/* =====================================================================
/* 目前全部移动到 https://otomad.wiki/Template:链接列表/style.css 下
* 6. Tables
.tutorial-links {
* ===================================================================== */
width: 100%;
table.wikitable {
margin-bottom: 6px;
    width: 100%;
    margin: 1em 0;
    background: var(--paper-raised);
    color: var(--ink);
    border: none;
    border-top: 2px solid var(--accent);
    border-bottom: 1px solid var(--rule-strong);
    border-collapse: collapse;
    font-family: var(--font-sans);
    font-size: 0.95em;
}
}
.tutorial-links>tbody>tr>td:first-child {
table.wikitable > tr > th,
text-align: center;
table.wikitable > * > tr > th {
width: 35px;
    background: transparent;
    color: var(--accent);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: left;
    padding: 10px 12px;
    border: none;
    border-bottom: 1px solid var(--rule-strong);
}
}
.tutorial-links>tbody>tr>td:first-child>span {
table.wikitable > tr > td,
border: 1px #e06386 solid;
table.wikitable > * > tr > td {
border-radius: 4px;
    color: var(--ink);
color: #e06386;
    padding: 9px 12px;
font-size: 12px;
    line-height: 1.6;
height: 14px;
    border: none;
padding: 2px 4px;
    border-bottom: 1px solid var(--rule);
    vertical-align: top;
}
}
.tutorial-links>tbody>tr>td:nth-child(2) {
table.wikitable > tbody > tr:last-of-type > td { border-bottom: none; }
padding-left: 6px;
table.wikitable > tbody > tr:hover td { background: var(--accent-tint); }
 
/* Light green table (old class name kept, now reads the variables) */
table.wikitable-green { background: var(--accent-tint); }
.wikitable-green th { background: var(--accent-fill); color: var(--on-accent); }
.wikitable-green td { background: var(--paper-raised); }
 
@media screen and (max-width: 768px) {
    table.wikitable { display: block; overflow-x: auto; }
}
}
.tutorial-links>tbody>tr>td:nth-child(3) {
font-size: 12px;
color: grey;
text-align: right;
}
*/


/*scrollUpButton样式*/
img#scrollUpButton, img#scrollDownButton {
    transition: transform 200ms;
}
img#scrollUpButton:hover {
    transform: scale(1.1);
}
img#scrollUpButton:active {
    transform: scale(.95);
}
img#scrollDownButton:hover {
    transform: rotate(180deg)scale(1.1) !important;
}
img#scrollDownButton:active {
    transform: rotate(180deg)scale(.95) !important;
}


/* 从https://zh.wikipedia.org/wiki/MediaWiki:Common.css引入的样式 */
/* =====================================================================
/* Style for horizontal lists (separator following item) */
* 7. hlist / navbox / navbar (adapted from Wikipedia)
.hlist dl,
* ===================================================================== */
.hlist ol,
.hlist dl, .hlist ol, .hlist ul { margin: 0; }
.hlist ul {
.hlist dd, .hlist dt, .hlist li { display: inline; margin: 0; }
    margin: 0;
.hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul,
}
.hlist dd,
.hlist dt,
.hlist li {
    display: inline;
    margin: 0;
}
/* Display nested lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
.hlist dl dl, .hlist dl ol, .hlist dl ul,
.hlist dl dl, .hlist dl ol, .hlist dl ul,
.hlist ol dl, .hlist ol ol, .hlist ol ul,
.hlist ol dl, .hlist ol ol, .hlist ol ul,
.hlist ul dl, .hlist ul ol, .hlist ul ul {
.hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; }
display: inline;
.hlist dt:after { content: ": "; }
}
.hlist dd:after, .hlist li:after { content: " \00B7 "; font-weight: bold; }
/* Generate interpuncts */
.hlist dd:last-child:after, .hlist dt:last-child:after, .hlist li:last-child:after { content: none; }
.hlist dt:after {
.hlist dd.nopunct:after, .hlist dt.nopunct:after, .hlist li.nopunct:after { content: none; }
    content: " :";
.hlist dl dl:before, .hlist ol ol:before, .hlist ul ul:before { content: " ("; }
}
.hlist dl dl:after, .hlist ol ol:after, .hlist ul ul:after { content: ")"; }
.hlist dd:after,
.hlist.hnum ol li { counter-increment: level1; }
.hlist li:after {
.hlist.hnum ol li:before { content: counter(level1) " "; }
    content: " · ";
.hlist.hnum ol ol li { counter-increment: level2; }
    font-weight: bold;
.hlist.hnum ol ol li:before { content: counter(level2) " "; }
}
 
.hlist dd:last-child:after,
/* The old file defined a blue-violet navbox and then overrode it with pink; merged into one set */
.hlist dt:last-child:after,
.navbox {
.hlist li:last-child:after {
     width: 100%;
    content: none;
}
/* for IE 8 */
.hlist dd.nopunct:after,
.hlist dt.nopunct:after,
.hlist li.nopunct:after {
    content: none;
}
/* Add parens around nested lists */
.hlist dl dl:before,
.hlist ol ol:before,
.hlist ul ul:before {
    content: "(";
}
.hlist dl dl:after,
.hlist ol ol:after,
.hlist ul ul:after {
    content: ")";
}
/* Put numbers in ordered lists */
.hlist.hnum ol li {
    counter-increment: level1;
}
.hlist.hnum ol li:before {
    content: counter(level1) " ";
}
.hlist.hnum ol ol li {
    counter-increment: level2;
}
.hlist.hnum ol ol li:before {
    content: counter(level2) " ";
}
/* Default style for navigation boxes */
.navbox {                     /* Navbox container style */
    border: 1px solid #a2a9b1;
     width: 100%;  
     margin: auto;
     margin: auto;
     clear: both;
     clear: both;
Line 467: Line 393:
     text-align: center;
     text-align: center;
     padding: 1px;
     padding: 1px;
    border: 1px solid var(--rule);
    border-top: 2px solid var(--accent);
    background: var(--paper-raised);
}
}
.navbox-inner,
.navbox-inner, .navbox-subgroup { width: 100%; }
.navbox-subgroup {
.navbox-subgroup { background: var(--paper-raised); }
     width: 100%;
.navbox-list { border-color: var(--paper-raised); }
.navbox th, .navbox-title, .navbox-abovebelow { text-align: center; padding-left: 1em; padding-right: 1em; }
.navbox th, .navbox-title { background: var(--accent-tint); color: var(--ink); }
.navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title { background: var(--paper-sunk); color: var(--ink); }
.navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background: var(--paper); }
th.navbox-group { white-space: nowrap; text-align: right; }
.navbox-even { background: var(--paper); }
.navbox-odd { background: transparent; }
table.navbox + table.navbox { margin-top: -1px; }
.navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul,
.navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { padding: 0.125em 0; }
.navbox .hlist dd, .navbox .hlist dt, .navbox .hlist li { white-space: nowrap; }
.navbox .hlist dd dl, .navbox .hlist dt dl, .navbox .hlist li ol, .navbox .hlist li ul { white-space: normal; }
ol + table.navbox, ul + table.navbox { margin-top: 0.5em; }
 
.navbar { display: inline; font-weight: normal; }
.navbar ul { display: inline; white-space: nowrap; }
.navbar li { word-spacing: -0.125em; }
.navbar.mini li abbr[title] { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; }
.navbox .navbar { display: block; }
.navbox-title .navbar { float: left; text-align: left; margin-right: 0.5em; width: 8em; }
 
.collapseButton { float: right; font-weight: normal; margin-left: 0.5em; text-align: right; width: auto; }
.navbox .collapseButton { width: 8em; }
 
@media screen and (max-width: 850px) {
    th.navbox-group { white-space: normal; }
     th.navbox-group div { line-height: 1.3em; width: 10px; margin: 10px 0; }
}
}
.navbox th,
 
.navbox-title,
 
.navbox-abovebelow {
/* =====================================================================
     text-align: center;       /* Title and above/below styles */
* 8. Page components (VGR Design System)
     padding-left: 1em;
*    Usable on any page; their look is set by the "component tokens" below.
     padding-right: 1em;
*    The defaults here are the Archive Zone (paper) look; Theme-STR and Theme-VGR only reset these tokens,
*    so the same markup automatically takes on each zone's look under a different theme.
*
*    Components:
*      .vgr-title-block (-cn / -en / -sub / -tagline)  hub title block; pages with one hide the default title and TOC
*      #rec-anchors / .rec-anchors                    anchor bar at the top
*      .rec-section                                    section (only adjusts heading spacing)
*      .rec-grid + .rec-grid-2 / .rec-grid-4            entry grid
*      .rec-card (.rec-card-title) / .rec-link          card with description / compact link
*      .rec-subhead                                    small label above a group of cards (not a real heading, not in the TOC)
*      .rec-intro                                      epigraph or series introduction (Kai script, left rule)
*      .novel-track / .novel-chap (.chap-no / -pd / -title / -desc, .chap-upcoming)  horizontal chapter track
*      .rec-soon                                      Coming Soon placeholder
*      .work-full                                      cover image floated right
*    The old mini-block / mini-block-list / mini-block-title classes still work.
* ===================================================================== */
 
/* ---------- 8.0 Component tokens (defaults = Archive Zone) ---------- */
:root {
     --c-radius: 0;                                   /* corners of cards, anchor buttons and the title block */
    --c-mark: "■";                                  /* zone mark: Archive ■ / Worldview ◈ / Canon ∴ */
    --c-label-font: var(--font-sans);                /* small labels (rec-subhead, chapter numbers, Coming Soon) */
    --c-label-size: 12px;
    --c-label-weight: 700;
    --c-label-spacing: 0.12em;
    --c-soon-style: normal;                          /* font style of Coming Soon (italic in the Canon Zone) */
     --c-intro-border: 3px solid var(--accent);      /* left rule of the epigraph */
    --c-title-bg: radial-gradient(var(--dot) 0px, transparent 1px) 0 0 / 20px 20px, var(--paper-sunk);
    --c-title-top: 2px solid var(--accent);          /* top rule of the title block */
    --c-title-shadow: none;                          /* title block lintel (Canon Zone only) */
    --c-title-ink: var(--ink);
    --c-title-en-ink: var(--accent);
    --c-chap-bg: var(--paper-raised);                /* chapter card background */
    --c-chap-bg-hover: var(--paper-sunk);
    --c-chap-top: 2px solid var(--accent);
     --c-chap-lintel: transparent;                   /* second thin lintel line on chapter cards (Canon Zone only) */
}
}
th.navbox-group {            /* Group style */
 
     white-space: nowrap;
/* ---------- 8.1 Legacy class names: mini-block (still used by Main Page subtemplates; delete once everything uses rec-*) ---------- */
     /* @noflip */
.mini-block {
     text-align: right;
     box-sizing: border-box;
    width: 100%;
     padding: 16px;
    margin-top: 8px;
     background: var(--paper-raised);
    border: 1px solid var(--rule);
}
}
.navbox,
.mini-block p { margin: 0 0 1em; }
.navbox-subgroup {
.mini-block p:last-child { margin: 0; }
    background: #fdfdfd;     /* Background color */
.mini-block-container { display: flex; gap: 8px; width: 100%; box-sizing: border-box; }
}
.mini-block-container ul { margin: 0; padding: 0; }
.navbox-list {
.mini-block-container li { list-style: none; margin: 0; }
    border-color: #fdfdfd;   /* Must match background color */
.mini-block-container li a { display: block; padding: .4em .4em; color: var(--ink); }
}
.mini-block-container li a:hover { color: var(--accent); }
.navbox th,
.mini-block-title { font-family: var(--font-serif); font-size: 24px; font-weight: 600; color: var(--ink); }
.navbox-title {
@media screen and (max-width: 850px) {
    background: #ccccff;     /* Level 1 color */
     .mini-block-container { flex-direction: column; }
}
.navbox-abovebelow,
th.navbox-group,
.navbox-subgroup .navbox-title {
    background: #ddddff;     /* Level 2 color */
}
.navbox-subgroup .navbox-group,
.navbox-subgroup .navbox-abovebelow {
    background: #e6e6ff;     /* Level 3 color */
}
.navbox-even {
    background: #f7f7f7;     /* Even row striping */
}
.navbox-odd {
    background: transparent; /* Odd row striping */
}
table.navbox + table.navbox {  /* Single pixel border between adjacent navboxes */
    margin-top: -1px;         /* (doesn't work for IE6, but that's okay)       */
}
.navbox .hlist td dl,
.navbox .hlist td ol,
.navbox .hlist td ul,
.navbox td.hlist dl,
.navbox td.hlist ol,
.navbox td.hlist ul {
    padding: 0.125em 0;       /* Adjust hlist padding in navboxes */
}
.navbox .hlist dd,
.navbox .hlist dt,
.navbox .hlist li {
    white-space: nowrap;      /* Nowrap list items in navboxes */
}
.navbox .hlist dd dl,
.navbox .hlist dt dl,
.navbox .hlist li ol,
.navbox .hlist li ul {
     white-space: normal;      /* But allow parent list items to be wrapped */
}
ol + table.navbox,
ul + table.navbox {
    margin-top: 0.5em;       /* Prevent lists from clinging to navboxes */
}
}


/* Default styling for Navbar template */
/* ---------- 8.2 Title block: pages that have one hide the default title and TOC (screen readers still read the title)
.navbar {
  A title block inside .vgr-demo (examples on theme doc pages) does not trigger the hiding ---------- */
     display: inline;
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) h1.firstHeading,
     font-weight: normal;
#content:has(.vgr-title-block:not(.vgr-demo *)) h1.firstHeading {
}
     position: absolute !important;
.navbar ul {
     width: 1px; height: 1px;
     display: inline;
    overflow: hidden;
     clip-path: inset(50%);
     white-space: nowrap;
     white-space: nowrap;
    margin: 0 !important; padding: 0 !important;
}
}
.navbar li {
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) #toc,
    word-spacing: -0.125em;
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) .toc,
}
#content:has(.vgr-title-block:not(.vgr-demo *)) #toc,
.navbar.mini li abbr[title] {
#content:has(.vgr-title-block:not(.vgr-demo *)) .toc { display: none !important; }
    font-variant: small-caps;
    border-bottom: none;
    text-decoration: none;
    cursor: inherit;
}
/* Navbar styling when nested in navbox */
.navbox .navbar {
    display: block;
}
.navbox-title .navbar {
    /* @noflip */
    float: left;
    /* @noflip */
    text-align: left;
    /* @noflip */
    margin-right: 0.5em;
    width: 8em;
}


/* 'show'/'hide' buttons created dynamically by the CollapsibleTables javascript
.vgr-title-block {
  in [[MediaWiki:Common.js]] are styled here so they can be customised. */
     box-sizing: border-box;
.collapseButton {      
     text-align: center;
     /* @noflip */
     padding: 48px 16px 32px;
     float: right;
     margin: 0 0 24px;
     font-weight: normal;
     border: 1px solid var(--rule);
     /* @noflip */
    border-top: var(--c-title-top);
     margin-left: 0.5em;
     border-radius: var(--c-radius);
     /* @noflip */
     box-shadow: var(--c-title-shadow);
     text-align: right;
     background: var(--c-title-bg);
     width: auto;
}
}
/* In navboxes, the show/hide button balances the v·d·e links
.vgr-title-cn {
  from [[Template:Navbar]], so they need to be the same width. */
    font-family: var(--font-display);
.navbox .collapseButton {
    font-size: clamp(34px, 6vw, 58px);
     width: 8em;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.12em;
    color: var(--c-title-ink);
    margin-bottom: 0.3em;
     text-wrap: balance;
}
}
/*个人资料设置页*/
.vgr-title-en {
.profile-tab{
    font-family: var(--font-latin, "Cormorant Garamond"), "Noto Serif SC", serif;
background-color: unset;
    font-size: 18px;
padding: 9px 10px 10px;
    font-weight: 500;
font-size: 16px;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--c-title-en-ink);
    margin-bottom: 1em;
}
}
.profile-tab-on a:visited{
.vgr-title-sub {
color: #000 !important;
    font-family: var(--font-body, var(--font-serif));
    font-size: 16px;
    color: var(--ink-muted);
    letter-spacing: 0.04em;
}
}
.profile-tab a:visited{
.vgr-title-sub a:not(.new) {
color: #000 !important;
    color: var(--link) !important;
    text-decoration: none !important;
    border-bottom: 1px solid var(--rule-strong);
}
}
.profile-tab-on a, .profile-tab a{
.vgr-title-sub a:not(.new):hover { border-bottom-color: var(--link); }
color: #000;
.vgr-title-sub i { font-style: italic; color: var(--ink); }
.vgr-title-tagline {
    font-family: var(--font-scripture, "LXGW WenKai Screen", KaiTi, serif);
    font-size: 15px;
    line-height: 1.8;
    color: var(--ink-muted);
    letter-spacing: 0.04em;
    max-width: 36em;
    margin: 24px auto 0;
}
}
.profile-tab-on{
/* Divider: "— zone mark —" */
background-color: unset;
.vgr-title-tagline::before {
padding: 9px 10px 10px;
    content: var(--c-mark);
font-size: 16px;
    display: block;
border-bottom: solid 2px #FB7299;
    width: 12em;
}
    margin: 0 auto 16px;
.eye-container .title{
    font-family: var(--font-sans);
color: #000;
    font-size: 12px;
font-size: 14px;
    line-height: 1;
}
    color: var(--accent);
.eye-container{
    background:
box-shadow: none;
        linear-gradient(var(--rule-strong), var(--rule-strong)) left center / calc(50% - 16px) 1px no-repeat,
opacity: 1.0;
        linear-gradient(var(--rule-strong), var(--rule-strong)) right center / calc(50% - 16px) 1px no-repeat;
}
/*提示框*/
.mw-notification{
border: none;
border-radius: 4px;
box-shadow: 0 0 12px rgb(0 0 0 / 15%);
}
/*修复和修改infobox*/
@media screen and (max-width: 850px){
.infobox{
width: 100%;
margin: 0em 0em 2em;
}}
@media screen and (min-width: 851px){
.infobox{
width: 300px;
margin: 1em 0 30px 30px;
}}
.infoBoxContent{
border: 0;
border-radius: 4px;
}
}


.fieldset{
/* ---------- 8.3 Anchor bar ---------- */
border: 1px solid #c7c7c7;
#rec-anchors, .rec-anchors {
border-radius: 4px;
    display: flex;
padding: 0.35em 1.625em 0.75em;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin: 16px 0 32px;
}
}
textarea {
/* MediaWiki wraps the lines of links in a <p>; take that layer out of layout so the gap applies to each link */
border-radius: 4px;
#rec-anchors > p, .rec-anchors > p { display: contents; }
box-shadow: none;
#rec-anchors a, .rec-anchors a {
background-color: transparent;
    display: inline-block;
border: 1px solid var(--border-color-base--darker);
    padding: 5px 16px;
     outline: none;
    border: 1px solid var(--rule-strong);
}
    border-radius: var(--c-radius);
textarea:hover {
     color: var(--ink) !important;
border: 1px solid #fb7299;
    font-family: var(--font-body, var(--font-serif));
background: transparent;
    font-size: 15px;
}
    letter-spacing: 0.06em;
textarea:focus-visible {
     text-decoration: none !important;
box-shadow: inset 0 0 0 1px #fb7299;
     border: 1px solid #fb7299;
     background: transparent;
     background: transparent;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
}
/*导航盒*/
#rec-anchors a:hover, .rec-anchors a:hover {
.navbox th, .navbox-title {
    background: var(--accent-tint);
background: #FCA6BF;
    border-color: var(--accent);
}
}
.navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title {
 
background: #FDBFD0;
/* ---------- 8.4 Sections: since MediaWiki 1.43 headings are wrapped in .mw-heading, so both structures are covered ---------- */
.rec-section > h2,
.rec-section > .mw-heading2 { margin-top: 48px !important; }
 
/* ---------- 8.5 Entry grid and cards ---------- */
.rec-grid,
.rec-grid.mini-block-list,
.rec-grid.mini-block-container {
    display: grid;
    gap: 12px;
    margin: 0.8em 0 1.2em;
}
}
.navbox-subgroup .navbox-group,
.rec-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.navbox-subgroup .navbox-abovebelow {
.rec-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
background: #FED7E2;
@media screen and (max-width: 850px) {
    .rec-grid-2 { grid-template-columns: 1fr; }
    .rec-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
}
.navbox-even {
 
background: #FFF0F4;
/* Card with description: one line on the left. Selectors include .mini-block to beat the legacy styles above */
.rec-card,
.mini-block.rec-card {
    box-sizing: border-box;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 8px 0 8px 14px;
    background: none;
    border: none;
    border-left: 2px solid var(--rule-strong);
    border-radius: 0;
    box-shadow: none;
    transition: border-color 0.2s ease;
}
}
.navbox{
.rec-card:hover { border-left-color: var(--accent); }
border: 0;
.rec-card-title,
.rec-card .mini-block-title {
    display: block;
    font-family: var(--font-serif);
    font-size: 17px;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
}
/* 资料卡 */
.rec-card-title a:not(.new),
#profile-toggle-button{
.rec-card .mini-block-title a:not(.new) { color: var(--ink) !important; }
background-color: #fb7299;
.rec-card-title a:not(.new):hover,
border-radius: 2px;
.rec-card .mini-block-title a:not(.new):hover { color: var(--accent) !important; }
padding: 5px 10px;
/* Themes color body text through #mw-content p, so this needs the same specificity to turn muted */
transition: box-shadow 200ms,transform 200ms;
.rec-card, .rec-card p,
box-shadow: 0 4px 4px rgb(251 114 153 / 30%);
#mw-content .rec-card, #mw-content .rec-card p {
    font-size: 15px;
    line-height: 1.8;
    color: var(--ink-muted);
}
}
#profile-toggle-button a {
.rec-card p { margin: 0; }
font-weight: bold;
 
}
/* Compact link */
#profile-toggle-button:hover {
.rec-link,
box-shadow: 0 9px 9px rgb(251 114 153 / 30%);
.mini-block.rec-link {
}
    box-sizing: border-box;
#profile-toggle-button:active {
    width: auto;
box-shadow: 0 0 0 rgb(251 114 153 / 30%);
    min-width: 0;
transform: scale(.95);
    margin: 0;
background-color: #bd5774;
     padding: 7px 0 7px 14px;
}
     background: none;
#profile-toggle-button:focus, #profile-toggle-button:focus-visible, #profile-toggle-button:focus-within {
box-shadow: inset 0 0 0 1px #fb7299, inset 0 0 0 2px #fff;
outline: 1px solid transparent;
}
.profile-on{
background-color: #fff6c3;
padding: 5px 10px 5px 10px;
border-radius: 4px;
border: none;
}
/*按钮动画*/
.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button{
transition: background-color 100ms,color 100ms,border-color 100ms,box-shadow 100ms,transform 200ms
}
/*圆形头像*/
#profile-image img{
     border-radius: 50%;
     padding: 4px;
     border: none;
     border: none;
     width: 75px;
     border-left: 2px solid var(--rule);
    border-radius: 0;
    box-shadow: none;
    transition: border-color 0.2s ease;
}
}
.c-avatar img{
.rec-link a:not(.new) { color: var(--ink) !important; }
border-radius: 50%;
.rec-link:hover { border-left-color: var(--accent); }
.rec-link p, .rec-card .mini-block-title + p { margin: 0; }
 
/* ---------- 8.6 Small labels and epigraphs ---------- */
.rec-subhead {
    font-family: var(--c-label-font);
    font-size: var(--c-label-size);
    font-weight: var(--c-label-weight);
    letter-spacing: var(--c-label-spacing);
    text-transform: uppercase;
    color: var(--accent);
    margin: 24px 0 8px;
}
}
.profile-info img {
.rec-intro,
     border-radius: 50%;
#mw-content .rec-intro {
    font-family: var(--font-scripture, "LXGW WenKai Screen", KaiTi, serif);
    font-size: 16px;
    line-height: 1.9;
    color: var(--ink);
    text-align: left;
    margin: 8px 0 24px;
    padding: 4px 0 4px 16px;
     border-left: var(--c-intro-border);
}
}
/*解决cite定位内文字显示为斜体的问题*/
 
cite {
/* ---------- 8.7 Horizontal chapter track ---------- */
font-style: normal;
.novel-track {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding: 4px 2px 16px;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-color: var(--rule-strong) var(--paper-sunk);
}
}
/* 首页dpl列表相关样式 */
.novel-track::-webkit-scrollbar { height: 6px; }
.mini-block {
.novel-track::-webkit-scrollbar-track { background: var(--paper-sunk); }
    width: 100%;
.novel-track::-webkit-scrollbar-thumb { background: var(--rule-strong); }
    min-width: 20%;
.novel-track::-webkit-scrollbar-thumb:hover { background: var(--accent); }
    padding: 16px;
 
    margin-top: 8px;
/* Chapter card: the background and the lintel gap share --c-chap-bg and change together on hover, so no seam shows between the lines */
    box-shadow: 0 3px 6px rgba(0,0,0,0.04);
.novel-chap {
    border: 1px solid; border-color: rgba(0,0,0,0.05);
    --chap-bg: var(--c-chap-bg);
    border-radius: 8px;
    flex: 0 0 232px;
    word-break: normal;
    scroll-snap-align: start;
    box-sizing: border-box;
}
.mini-block p {
margin: 0 0 1em 0;
}
.mini-block p:last-child {
margin: 0;
}
.mini-block-container {
    width: 100%;
     display: flex;
     display: flex;
     justify-content: space-between;
     flex-direction: column;
    gap: 8px;
     box-sizing: border-box;
     box-sizing: border-box;
    padding: 16px;
    background: var(--chap-bg);
    border: 1px solid var(--rule);
    border-top: var(--c-chap-top);
    border-radius: var(--c-radius);
    box-shadow:
        inset 0 4px 0 var(--chap-bg),
        inset 0 5px 0 var(--c-chap-lintel);
    transition: border-color 0.2s ease;
}
}
.mini-block-list a{
.novel-chap:hover {
color: #212121;
    --chap-bg: var(--c-chap-bg-hover);
    border-color: var(--rule-strong);
    border-top-color: var(--accent);
}
}
.mini-block-list a.new{
.novel-chap .chap-no {
color: #212121;
    font-family: var(--c-label-font);
    font-size: var(--c-label-size);
    font-weight: var(--c-label-weight);
    letter-spacing: var(--c-label-spacing);
    color: var(--accent);
    margin: 4px 0 6px;
}
}
.mini-block-list a:hover{
.novel-chap .chap-pd {
color: #00aeec;
    font-family: var(--font-latin, "Cormorant Garamond"), "Noto Serif SC", serif;
    font-style: italic;
    font-size: 15px;
    color: var(--ink-muted);
}
}
.mini-block-list li a:hover {
.novel-chap .chap-title {
     color: #212121;
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.45;
    letter-spacing: 0.04em;
     color: var(--ink);
    margin: 2px 0 8px;
}
}
.mini-block-container li{
.novel-chap .chap-title a:not(.new) { color: var(--ink) !important; }
    border-radius: 4px;
.novel-chap .chap-title a:not(.new):hover { color: var(--accent) !important; }
    margin: 0;
.novel-chap .chap-desc {
     list-style: none;
     font-size: 14px;
     cursor: pointer;
     line-height: 1.75;
     transition: background cubic-bezier(0.22,0.58,0.12,0.98) 0.4s;
     color: var(--ink-muted);
}
}
.mini-block-title {
.novel-chap.chap-upcoming,
font-size: 24px;
.novel-chap.chap-upcoming:hover {
font-weight: 500;
    border: 1px dashed var(--rule-strong);
    box-shadow: none;
    background: transparent;
    justify-content: center;
    align-items: center;
    text-align: center;
    color: var(--ink-muted);
}
}
@media screen and (min-width: 851px) {
 
.mini-block-container li:hover {
/* ---------- 8.8 Coming Soon placeholder: zone mark above ---------- */
    background: #0000000d;
.rec-soon {
}
    border: 1px dashed var(--rule-strong);
.mini-block-container li:hover a {
    border-radius: var(--c-radius);
transform: translateX(5px);
    font-family: var(--c-label-font);
}
    font-style: var(--c-soon-style);
    font-size: 16px;
    letter-spacing: 0.1em;
    padding: 28px;
    text-align: center;
    color: var(--ink-muted);
}
}
.mini-block-container ul {
.rec-soon::before {
     margin: 0;
     content: var(--c-mark);
     padding: 0;
     display: block;
}
    font-family: var(--font-sans);
.mini-block-container li a {
     font-style: normal;
     padding: .5em .4em;
     font-size: 12px;
     display: inline-block;
     color: var(--accent);
     width: 100%;
     margin-bottom: 8px;
     transition: transform cubic-bezier(0.22,0.58,0.12,0.98) 0.4s;
}
}
/* ---------- 8.9 Cover image floated right ---------- */
.work-full { overflow: hidden; }
.work-full #image { float: right; width: 200px; margin: 0 0 10px 16px; }
/* ---------- 8.10 Phones (≤850px) ---------- */
@media screen and (max-width: 850px) {
@media screen and (max-width: 850px) {
     .mini-block {
     .vgr-title-block { padding: 32px 12px 24px; }
        align-self: stretch;
    .vgr-title-en { font-size: 15px; letter-spacing: 0.16em; }
        width: auto;
     .novel-chap { flex-basis: 78%; }
    }
     .work-full #image { float: none; width: 100%; max-width: 280px; margin: 0 0 12px; }
     .mini-block-container {
    flex-direction: column;
     }
}
}




/*针对移动端用户页的竖向排列*/
/* =====================================================================
@media screen and (max-width: 850px){
* 9. Forms, notifications, profile pages
#user-page-left {
* ===================================================================== */
     width: 100%;
textarea {
     float: none;}
    border-radius: var(--radius-sm);
#user-page-right {
    box-shadow: none;
     width: 100%;
    background-color: transparent;
     float: none;
     border: 1px solid var(--rule-strong);
    }
     outline: none;
}
textarea:hover { border-color: var(--accent); }
textarea:focus-visible {
     border-color: var(--accent);
     box-shadow: 0 0 0 2px var(--focus);
}
}


/*移动端导航栏子级标题竖向排列*/
.mw-notification {
@media screen and (max-width: 850px){
    border: 1px solid var(--rule);
th.navbox-group {
     border-top: 2px solid var(--accent);
white-space: normal;
     border-radius: 0;
}
     box-shadow: 0 6px 18px -10px rgba(2, 95, 50, 0.35);
th.navbox-group div {
     line-height: 1.3em;
     width: 10px;
     margin: 10px 0;
}
}
}


/* 留言板FlowThread隐藏热门 */
.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
.page-留言板 .comment-container-top {
    transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
display: none;
}
}


/* 上传文件InfoBox排版增强修复 */
/* Profile pages (SocialProfile): colors and shapes only; layout is left to the extension */
.mw-special-Upload i.md {
.profile-tab-on { border-bottom: 2px solid var(--accent); }
display: flex;
.profile-tab a, .profile-tab-on a { color: var(--ink) !important; }
}
#profile-toggle-button {
.mw-special-Upload .infoBoxText li {
    background-color: var(--accent-fill);
margin-top: 6px;
    border-radius: var(--radius-sm);
margin-bottom: 0;
    padding: 5px 10px;
}
}
#profile-toggle-button a { color: var(--on-accent); }
#profile-toggle-button:hover { background-color: #3B7E3D; }
.profile-on { background-color: var(--accent-tint); border-radius: var(--radius-sm); }
#profile-image img,
.c-avatar img,
.profile-info img { border-radius: 50%; }


/* 设置原生html组件的颜色 */
body {
accent-color: #ea6b8f;
}


/* 现代化FlowThread主题 */
/* =====================================================================
* 10. Comments (FlowThread): site colors only; layout is left to the extension
* ===================================================================== */
#flowthread .comment-submit {
#flowthread .comment-submit {
font-family: inherit;
    color: var(--on-accent);
color: white;
    background-color: var(--accent-fill);
border: 0;
    border: 0;
background-color: #fb7299;
    text-shadow: none;
background-color: var(--color-primary);
text-shadow: none;
top: 0;
right: 0;
border-radius: 0 0 var(--border-radius--small) 0;
}
}
 
#flowthread .comment-submit:hover { background-color: #3B7E3D; }
#flowthread .comment-toolbar {
#flowthread .comment-toolbar {
height: 36px;
    background-color: var(--paper-sunk);
border: 0;
    border-color: var(--rule);
border-top: 1px solid var(--border-color-base--darker);
background-color: #f8f9fa;
background-color: var(--color-surface-2);
border-radius: 0 0 var(--border-radius--small) var(--border-radius--small);
margin-bottom: 0;
}
}
#flowthread .comment-replybox > .comment-body { border-color: var(--rule-strong); }
#flowthread .comment-user,
#flowthread .comment-user a { color: var(--ink-muted); }
#flowthread .comment-like[liked],
#flowthread .comment-report[reported] { color: var(--accent); }


#flowthread .comment-thread {
 
border: 0;
/* =====================================================================
padding: 0;
* 11. Notice box {{Notice}}: .vgr-notice
*    All colors read the theme variables, so it works under Theme-HJ / Theme-STR / Theme-VGR.
*    Default = zone color; is-warning = pending / warning; is-danger = spoiler / error.
*    There is always a text label on the left, so color is never the only signal.
* ===================================================================== */
.vgr-notice {
    --notice-c: var(--zone-accent, var(--accent));
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 6px 16px;
    box-sizing: border-box;
    max-width: 100%;
    margin: 1em 0;
    padding: 12px 16px;
    background: var(--paper-sunk);
    color: var(--ink);
    border: 1px solid var(--rule);
    border-top: 2px solid var(--notice-c);
    border-radius: 0;
}
}
/* Amber: mixed with the current text color, so it darkens on light themes and lightens on dark ones */
.vgr-notice.is-warning { --notice-c: color-mix(in srgb, #C98A1B 60%, var(--ink)); }
/* Red: each theme's red-link color */
.vgr-notice.is-danger { --notice-c: var(--link-new); }


#flowthread .comment-avatar {
.vgr-notice-side {
border-radius: 100%;
    display: flex;
overflow: hidden;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 3em;
    padding-top: 3px;
}
}
.vgr-notice-tag {
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    line-height: 1.4;
    white-space: nowrap;
    color: var(--notice-c);
}
.vgr-notice-icon { line-height: 1; color: var(--notice-c); }
.vgr-notice-icon .md,
.vgr-notice-icon .md-lg,
.vgr-notice-icon .md-md,
.vgr-notice-icon .material-icons { font-size: 26px; }
.vgr-notice-icon img { max-width: 32px; height: auto; }


#flowthread .comment-text {
.vgr-notice-main { min-width: 0; }
font-size: inherit;
.vgr-notice-title {
    font-family: var(--font-serif);
    font-size: 16px;
    font-weight: 600;
    line-height: 1.6;
    color: var(--ink);
}
#mw-content .vgr-notice-body,
#mw-content .vgr-notice-body p,
.vgr-notice-body,
.vgr-notice-body p {
    margin: 0;
    font-size: 14px;
    line-height: 1.8;
    color: var(--ink-muted);
}
.vgr-notice-body > p + p { margin-top: 0.5em; }
.vgr-notice-below {
    grid-column: 1 / -1;
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px solid var(--rule);
    font-size: 13px;
    color: var(--ink-muted);
}
}


#flowthread .comment-user, .comment-user a {
font-size: inherit;
color: var(--color-base--subtle);
}


#flowthread .comment-footer {
/* =====================================================================
font-size: 14px;
* 12. Infobox {{Infobox}}: .vgr-infobox
*    The fact table on the right of an article. All colors read the theme variables;
*    square corners, no shadow; full width on phones.
* ===================================================================== */
table.vgr-infobox {
    float: right;
    clear: right;
    width: 300px;
    margin: 0 0 1em 1.5em;
    border-collapse: collapse;
    background: var(--paper-raised);
    color: var(--ink);
    border: 1px solid var(--rule);
    border-top: 2px solid var(--zone-accent, var(--accent));
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
}
}
 
table.vgr-infobox th.vgr-infobox-title {
#flowthread .flowthread-btn-wikitext,
    padding: 10px 12px;
#flowthread .flowthread-btn-preview {
    text-align: center;
width: 36px;
    font-family: var(--font-serif);
height: 36px;
    font-size: 18px;
margin: 0;
    font-weight: 600;
box-shadow: none;
    letter-spacing: 0.04em;
background-color: transparent;
    color: var(--ink);
border-radius: 100%;
    background: var(--accent-tint);
border: 0 !important;
}
}
 
table.vgr-infobox .vgr-infobox-media td {
#flowthread .flowthread-btn-preview {
    padding: 12px;
transform: translateX(-100%);
    text-align: center;
}
}
 
table.vgr-infobox .vgr-infobox-media img { max-width: 100%; height: auto; }
#flowthread .flowthread-btn-wikitext.on+.flowthread-btn-preview {
.vgr-infobox-desc {
transform: none;
    margin-top: 6px;
    font-size: 13px;
    color: var(--ink-muted);
}
}
 
table.vgr-infobox th[scope="row"] {
#flowthread .flowthread-btn-wikitext:hover,
    width: 5.5em;
#flowthread .flowthread-btn-preview:hover {
    padding: 7px 8px 7px 12px;
background-color: var(--background-color-quiet--hover);
    text-align: left;
    vertical-align: top;
    white-space: nowrap;
    font-size: 13px;
    font-weight: 600;
    color: var(--ink-muted);
    background: transparent;
    border-top: 1px solid var(--rule);
}
}
 
table.vgr-infobox td {
#flowthread .comment-submit {
    padding: 7px 12px 7px 8px;
height: inherit;
    vertical-align: top;
    border-top: 1px solid var(--rule);
}
}
 
table.vgr-infobox .vgr-infobox-media td { border-top: none; }
#flowthread .comment-replybox > .comment-body {
table.vgr-infobox td p { margin: 0; }
border: 1px solid var(--border-color-base--darker);
/* {{Infobox2}}: group subheadings */
border-radius: var(--border-radius--small);
table.vgr-infobox .vgr-infobox-group th {
padding-left: 0;
    padding: 6px 12px;
margin-left: 60px;
    text-align: left;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    color: var(--zone-accent, var(--accent));
    background: var(--paper-sunk);
    border-top: 1px solid var(--rule);
}
}
 
@media screen and (max-width: 850px) {
#flowthread .comment-replybox > .comment-body:has(textarea:focus-visible) {
    table.vgr-infobox {
border-color: var(--color-primary);
        float: none;
        width: 100%;
        margin: 0 0 1.5em;
    }
}
}


#flowthread .comment-replybox > .comment-body textarea, #flowthread .comment-preview {
background-color: transparent;
border: 0;
box-shadow: none;
}


#flowthread .comment-post,
/* =====================================================================
#flowthread .comment-container > .comment-thread {
* 13. Click-to-load video and audio (video and audio widgets): .vgr-media
padding: 12px 0;
*    Before the click there is only a button and no request is made; the player is created on click.
* ===================================================================== */
.vgr-media-load {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 8px 16px;
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.04em;
    color: var(--on-accent);
    background: var(--accent-fill);
    border: none;
    border-radius: var(--radius-sm, 2px);
    cursor: pointer;
    transition: background-color 0.15s ease;
}
}
 
.vgr-media-load:hover { background: #3B7E3D; }
#flowthread .comment-reply::before,
.vgr-media-load:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
#flowthread .comment-like::before,
/* Play triangle drawn with borders, no icon font needed */
#flowthread .comment-report::before,
.vgr-media-icon {
#flowthread .comment-delete::before {
    width: 0;
display: inline-block;
    height: 0;
background-image: none;
    border-style: solid;
direction: ltr;
    border-width: 6px 0 6px 10px;
font-family: 'Material Icons';
    border-color: transparent transparent transparent currentColor;
font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-height: 1;
text-align: center;
text-indent: 0;
text-rendering: optimizeLegibility;
text-transform: none;
user-select: none;
vertical-align: middle;
white-space: nowrap;
word-wrap: normal;
width: 18px;
height: 18px;
color: black;
font-size: 18px;
opacity: var(--opacity-icon-base);
border-radius: 100%;
}
}


#flowthread .comment-reply::before {
/* Video: holds a 16:9 slot before loading; after loading it uses the video's own ratio */
content: 'reply';
.vgr-media-video {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    aspect-ratio: 16 / 9;
    margin: 0 0 1em;
    background: var(--paper-sunk);
    border: 1px solid var(--rule);
}
}
#flowthread .comment-like::before {
.vgr-media-video.is-loaded {
content: 'favorite';
    display: block;
    aspect-ratio: auto;
    background: #000;
    border: none;
}
}
#flowthread .comment-report::before {
.vgr-media-video video {
content: 'flag';
    display: block;
    width: 100%;
    height: auto;
    max-height: 80vh;
}
}
#flowthread .comment-delete::before {
 
content: 'delete';
/* Audio: small inline button; a caption can follow it directly */
.vgr-media-audio {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    max-width: 100%;
    margin: 4px 8px 4px 0;
}
}
#flowthread .comment-like[liked],
.vgr-media-audio .vgr-media-load {
#flowthread .comment-report[reported] {
    padding: 5px 12px;
color: var(--color-primary);
    font-size: 13px;
}
}
#flowthread .comment-like[liked]::before,
.vgr-media-audio .vgr-media-icon { border-width: 5px 0 5px 8px; }
#flowthread .comment-report[reported]::before {
.vgr-media-audio audio {
opacity: 1;
    height: 36px;
color: var(--color-primary);
    max-width: 100%;
}
}

Latest revision as of 10:35, 13 October 2026

/* =====================================================================
 * HUIJIA FUN (EN) - MediaWiki:Common.css (applies to all skins)
 * Design language: VGR Design System - v2
 *
 * v2: Main Page cards, comments and profile pages are written from scratch for this site;
 *     all pink is gone; no resources are loaded from other wikis, and no other site
 *     is named in these comments.
 *
 * Attribution:
 *   - Moegirlpedia MediaWiki:Gadget-site-styles.css (CC BY-NC-SA 3.0): spoiler blackout, info boxes
 *   - Wikipedia MediaWiki:Common.css (CC BY-SA): hlist, navbox, navbar, collapseButton
 * ===================================================================== */


/* =====================================================================
 * 1. Fonts
 * ===================================================================== */

/* Pre-Diphic Mono: the in-world language of the VGR series.
   The font file lives on huijia.fun. Browsers only load a cross-origin font when the server
   sends an Access-Control-Allow-Origin header, so /fonts/ on huijia.fun must allow
   https://en.huijia.fun (or upload the same file under en.huijia.fun/fonts/ and point here). */
@font-face {
  font-family: "Pre-Diphic Mono";
  src: url("https://huijia.fun/fonts/PreDiphicMono-1.1.woff2") format("woff2");
  font-display: swap;
}
/* !important: theme templates set fonts with !important on sidebars, headings, tables, etc.; without it .pd loses */
.pd {
  font-family: "Pre-Diphic Mono", sans-serif !important;
  font-feature-settings: "rlig" 1, "ccmp" 1 !important;
  line-height: 1;
}

/* {{PD}} vertical text: Module:PreDiphic splits the text into fixed-length columns (.pd-col);
   columns run left to right and wrap to a new row at the right edge of the content, no scrollbar */
.pd-cols {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: flex-start;
  vertical-align: top;
  max-width: 100%;
  column-gap: 0.25em;
  row-gap: 0.75em;
}
/* Each column stays within the visible window height (minus header and margins); the
   height parameter overrides this cap. 100svh = visible height with the mobile address bar
   shown, matching the column logic in Common.js; browsers without svh fall back to 100vh. */
.pd-col {
  writing-mode: vertical-lr;
  max-height: calc(100vh - 120px);
  max-height: calc(100svh - 120px);
}

/* Single vertical span (the typer page's "Copy as HTML" output): top-aligned, within window height */
.pd-v {
  writing-mode: vertical-lr;
  vertical-align: top;
  max-height: calc(100vh - 120px);
  max-height: calc(100svh - 120px);
}

/* Huiwen Mincho: work titles and chapter titles (--font-display).
   The file name is percent-encoded so this file stays ASCII-only. */
@font-face {
    font-family: 'Huiwen';
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/%E6%B1%87%E6%96%87%E6%98%8E%E6%9C%9D%E4%BD%93.woff2') format('woff2');
    font-display: swap;
}

/* Yuesong: line 3 of the old file was missing its opening comment mark, so this rule
   never took effect. Kept now that it is fixed; delete it once no page uses it. */
@font-face {
    font-family: 'Yuesong';
    src: url('https://cdn.jsdelivr.net/gh/channelwey/ZeroFont@main/Yuesong.woff2') format('woff2');
    font-display: swap;
}

/* Retired fonts: two hotlinked fonts (one from another wiki's file server, one from a
   Fandom image server), plus GuZhangHei and Rubik 80s Fade, which the VGR Design System
   no longer uses. If a page still needs one, upload the font file to this site first. */

/* Material Icons (Google, Apache 2.0): .md icons in info boxes, the upload page, etc.
   The loli.net mirror keeps them loading for visitors in mainland China. */
@font-face {
    font-family: 'Material Icons';
    font-style: normal;
    font-weight: 400;
    font-display: block;
    src: url(https://gstatic.loli.net/s/materialicons/v140/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
.md, .md-lg, .md-md, .md-sm, .material-icons {
    font-family: 'Material Icons';
    font-style: normal;
    font-weight: normal;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    white-space: nowrap;
    direction: ltr;
    display: inline-block;
    user-select: none;
    font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
}
.md-lg { font-size: 60px; }
.md-md { font-size: 30px; }
.md-sm { font-size: 10px; }


/* =====================================================================
 * 2. VGR tokens (site default = Archive Zone "paper" palette)
 *    Theme templates (Theme-HJ, Theme-STR, Theme-VGR...) only reset a few of these.
 * ===================================================================== */
:root {
    --paper: #F3F5F1;
    --paper-raised: #FFFFFF;
    --paper-sunk: #E7ECE5;
    --ink: #16211B;
    --ink-muted: #4C5A51;
    --rule: #C9D3CA;
    --rule-strong: #7E8B81;
    --heading-bar: #C8D8C8;
    --dot: #A3B1A8;
    --accent: #025F32;
    --accent-fill: #025F32;
    --on-accent: #FFFFFF;
    --accent-tint: #DCEBD9;
    --link: #0B6B3A;
    --link-new: #A8432F;
    --focus: #002F9C;

    --font-display: Huiwen, "Source Serif 4", "Noto Serif SC", "Source Han Serif SC", serif;
    --font-serif: "Source Serif 4", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
    --font-sans: "Source Sans 3", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
    --font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;

    --radius-xs: 2px;
    --radius-sm: 4px;

    /* Primary-color variables read by the skin and extensions: all point to Huijia Green */
    --color-primary: var(--accent);
    --color-progressive: var(--accent);
    --background-color-progressive: var(--accent-fill);
    --border-color-progressive: var(--accent);
}

html.skin-theme-clientpref-night {
    --paper: #111613;
    --paper-raised: #18201B;
    --paper-sunk: #0C100E;
    --ink: #E4EBE5;
    --ink-muted: #A2B0A6;
    --rule: #2A352E;
    --rule-strong: #667A6C;
    --heading-bar: #2F4033;
    --dot: #2A352E;
    --accent: #C1E1A6;
    --accent-fill: #3B7E3D;
    --accent-tint: #1C2B21;
    --link: #8FD3A8;
    --link-new: #F0907E;
    --focus: #8FB0FF;
}

body { accent-color: var(--accent); }


/* =====================================================================
 * 3. General utilities
 * ===================================================================== */

.mw-collapsible.mw-collapsed { max-height: none; }

p { word-break: normal; }

cite { font-style: normal; }

.res-img img { max-width: 100%; height: auto; }

/* Custom link: underline on hover */
.custom-link { text-decoration: none; color: inherit; }
.custom-link:hover { text-decoration: underline; color: var(--link); }

/* Two-column layouts
   In the old #left-column-0.3 the "." was read as a class selector, so those rules never
   matched. The escaped form below matches id="left-column-0.3" without changing any page. */
#left-column        { float: left;  width: 49%; }
#right-column       { float: right; width: 49%; }
#left-column-full   { float: left;  width: 50%; }
#right-column-full  { float: right; width: 50%; }
#middle-column-full { margin: 0 auto; width: 50%; }
#left-column-0\.3   { float: left;  width: 29%; }
#left-column-0\.7   { float: left;  width: 69%; }
#right-column-0\.3  { float: right; width: 29%; }
#right-column-0\.7  { float: right; width: 69%; }

@media screen and (max-width: 850px) {
    #left-column, #right-column,
    #left-column-full, #right-column-full, #middle-column-full,
    #left-column-0\.3, #left-column-0\.7,
    #right-column-0\.3, #right-column-0\.7,
    #user-page-left, #user-page-right {
        float: none;
        width: 100%;
    }
}

/* Main Page: hide the page title, page tabs, variant menu and category bar */
body.page-Main_Page #firstHeading,
body.page-Main_Page #siteSub,
body.page-Main_Page li#ca-talk,
body.page-Main_Page li#ca-watch,
body.page-Main_Page li#ca-unwatch,
body.page-Main_Page li#ca-history,
body.page-Main_Page li#ca-nstab-main,
body.page-Main_Page li#ca-viewsource,
body.page-Main_Page li#ca-view,
body.page-Main_Page #p-variants,
body.page-Main_Page #p-variants-desktop-label,
body.page-Main_Page #catlinks-sidebar,
body.page-Main_Page #mw-normal-catlinks { display: none !important; }

/* Scroll-to-top / bottom buttons */
img#scrollUpButton, img#scrollDownButton { transition: transform 200ms; }
img#scrollUpButton:hover { transform: scale(1.1); }
img#scrollUpButton:active { transform: scale(.95); }
img#scrollDownButton:hover { transform: rotate(180deg) scale(1.1) !important; }
img#scrollDownButton:active { transform: rotate(180deg) scale(.95) !important; }

/* Repost badge */
.repost-circle {
    display: inline-block;
    margin-left: 5px;
    padding: 3px 6px;
    font-size: 12px;
    line-height: 1;
    color: var(--accent);
    border: 1px solid var(--accent);
    border-radius: var(--radius-xs);
}
.repost-circle a.external {
    background: none !important;
    padding-right: 0 !important;
    color: var(--accent) !important;
}


/* =====================================================================
 * 4. Spoiler blackout (adapted from Moegirlpedia)
 * ===================================================================== */
.heimu,
.heimu rt { background-color: #252525; }
span.heimu a.external,
span.heimu a.external:visited,
span.heimu a.extiw,
span.heimu a.extiw:visited { color: #252525; }
.heimu,
.heimu a,
a .heimu,
.heimu a.new { color: #252525; text-shadow: none; }
body:not(.heimu_toggle_on) .heimu:hover,
body:not(.heimu_toggle_on) .heimu:active,
body:not(.heimu_toggle_on) .heimu.off { transition: color .13s linear; color: #FFFFFF; }
body:not(.heimu_toggle_on) .heimu:hover a,
body:not(.heimu_toggle_on) a:hover .heimu,
body:not(.heimu_toggle_on) .heimu.off a,
body:not(.heimu_toggle_on) a:hover .heimu.off { transition: color .13s linear; color: #8FD3A8; }
body:not(.heimu_toggle_on) .heimu.off .new,
body:not(.heimu_toggle_on) .heimu.off .new:hover,
body:not(.heimu_toggle_on) .new:hover .heimu.off,
body:not(.heimu_toggle_on) .heimu:hover .new { transition: color .13s linear; color: #F0907E; }


/* =====================================================================
 * 5. Info boxes
 * ===================================================================== */
.infoBox {
    margin: 10px auto;
    width: 80%;
    border: 1px solid var(--rule);
    border-top: 2px solid var(--accent);
    background: var(--paper-raised);
}
.infoBox a { word-break: normal; }
.infoBoxTitle {
    margin: 3px auto;
    padding: 6px 0 0;
    text-align: center;
    font-weight: 700;
    color: var(--ink);
}
.infoBoxIcon { display: table-cell; padding: 2px 0 2px .5em; vertical-align: middle; color: var(--accent); }
.infoBoxText { display: table-cell; padding: .25em .5em .25em 1.3em; width: 100%; vertical-align: middle; }
.infoBoxContent { border: 0; background: var(--paper-sunk); }
.infoBoxBelow { margin: 0 auto; padding: 0; text-align: center; }

@media screen and (max-width: 850px) {
    .infoBox { float: unset !important; width: 100% !important; clear: both; }
    .infobox { width: 100%; margin: 0 0 2em; }
}
@media screen and (min-width: 851px) {
    .infobox { width: 300px; margin: 1em 0 30px 30px; }
}

.fieldset {
    border: 1px solid var(--rule);
    border-radius: var(--radius-sm);
    padding: 0.35em 1.625em 0.75em;
}

/* Upload page: info box layout fix */
.mw-special-Upload i.md { display: flex; }
.mw-special-Upload .infoBoxText li { margin-top: 6px; margin-bottom: 0; }


/* =====================================================================
 * 6. Tables
 * ===================================================================== */
table.wikitable {
    width: 100%;
    margin: 1em 0;
    background: var(--paper-raised);
    color: var(--ink);
    border: none;
    border-top: 2px solid var(--accent);
    border-bottom: 1px solid var(--rule-strong);
    border-collapse: collapse;
    font-family: var(--font-sans);
    font-size: 0.95em;
}
table.wikitable > tr > th,
table.wikitable > * > tr > th {
    background: transparent;
    color: var(--accent);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: left;
    padding: 10px 12px;
    border: none;
    border-bottom: 1px solid var(--rule-strong);
}
table.wikitable > tr > td,
table.wikitable > * > tr > td {
    color: var(--ink);
    padding: 9px 12px;
    line-height: 1.6;
    border: none;
    border-bottom: 1px solid var(--rule);
    vertical-align: top;
}
table.wikitable > tbody > tr:last-of-type > td { border-bottom: none; }
table.wikitable > tbody > tr:hover td { background: var(--accent-tint); }

/* Light green table (old class name kept, now reads the variables) */
table.wikitable-green { background: var(--accent-tint); }
.wikitable-green th { background: var(--accent-fill); color: var(--on-accent); }
.wikitable-green td { background: var(--paper-raised); }

@media screen and (max-width: 768px) {
    table.wikitable { display: block; overflow-x: auto; }
}


/* =====================================================================
 * 7. hlist / navbox / navbar (adapted from Wikipedia)
 * ===================================================================== */
.hlist dl, .hlist ol, .hlist ul { margin: 0; }
.hlist dd, .hlist dt, .hlist li { display: inline; margin: 0; }
.hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul,
.hlist dl dl, .hlist dl ol, .hlist dl ul,
.hlist ol dl, .hlist ol ol, .hlist ol ul,
.hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; }
.hlist dt:after { content: ": "; }
.hlist dd:after, .hlist li:after { content: " \00B7 "; font-weight: bold; }
.hlist dd:last-child:after, .hlist dt:last-child:after, .hlist li:last-child:after { content: none; }
.hlist dd.nopunct:after, .hlist dt.nopunct:after, .hlist li.nopunct:after { content: none; }
.hlist dl dl:before, .hlist ol ol:before, .hlist ul ul:before { content: " ("; }
.hlist dl dl:after, .hlist ol ol:after, .hlist ul ul:after { content: ")"; }
.hlist.hnum ol li { counter-increment: level1; }
.hlist.hnum ol li:before { content: counter(level1) " "; }
.hlist.hnum ol ol li { counter-increment: level2; }
.hlist.hnum ol ol li:before { content: counter(level2) " "; }

/* The old file defined a blue-violet navbox and then overrode it with pink; merged into one set */
.navbox {
    width: 100%;
    margin: auto;
    clear: both;
    font-size: 88%;
    text-align: center;
    padding: 1px;
    border: 1px solid var(--rule);
    border-top: 2px solid var(--accent);
    background: var(--paper-raised);
}
.navbox-inner, .navbox-subgroup { width: 100%; }
.navbox-subgroup { background: var(--paper-raised); }
.navbox-list { border-color: var(--paper-raised); }
.navbox th, .navbox-title, .navbox-abovebelow { text-align: center; padding-left: 1em; padding-right: 1em; }
.navbox th, .navbox-title { background: var(--accent-tint); color: var(--ink); }
.navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title { background: var(--paper-sunk); color: var(--ink); }
.navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background: var(--paper); }
th.navbox-group { white-space: nowrap; text-align: right; }
.navbox-even { background: var(--paper); }
.navbox-odd { background: transparent; }
table.navbox + table.navbox { margin-top: -1px; }
.navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul,
.navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { padding: 0.125em 0; }
.navbox .hlist dd, .navbox .hlist dt, .navbox .hlist li { white-space: nowrap; }
.navbox .hlist dd dl, .navbox .hlist dt dl, .navbox .hlist li ol, .navbox .hlist li ul { white-space: normal; }
ol + table.navbox, ul + table.navbox { margin-top: 0.5em; }

.navbar { display: inline; font-weight: normal; }
.navbar ul { display: inline; white-space: nowrap; }
.navbar li { word-spacing: -0.125em; }
.navbar.mini li abbr[title] { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; }
.navbox .navbar { display: block; }
.navbox-title .navbar { float: left; text-align: left; margin-right: 0.5em; width: 8em; }

.collapseButton { float: right; font-weight: normal; margin-left: 0.5em; text-align: right; width: auto; }
.navbox .collapseButton { width: 8em; }

@media screen and (max-width: 850px) {
    th.navbox-group { white-space: normal; }
    th.navbox-group div { line-height: 1.3em; width: 10px; margin: 10px 0; }
}


/* =====================================================================
 * 8. Page components (VGR Design System)
 *    Usable on any page; their look is set by the "component tokens" below.
 *    The defaults here are the Archive Zone (paper) look; Theme-STR and Theme-VGR only reset these tokens,
 *    so the same markup automatically takes on each zone's look under a different theme.
 *
 *    Components:
 *      .vgr-title-block (-cn / -en / -sub / -tagline)   hub title block; pages with one hide the default title and TOC
 *      #rec-anchors / .rec-anchors                     anchor bar at the top
 *      .rec-section                                    section (only adjusts heading spacing)
 *      .rec-grid + .rec-grid-2 / .rec-grid-4            entry grid
 *      .rec-card (.rec-card-title) / .rec-link          card with description / compact link
 *      .rec-subhead                                    small label above a group of cards (not a real heading, not in the TOC)
 *      .rec-intro                                      epigraph or series introduction (Kai script, left rule)
 *      .novel-track / .novel-chap (.chap-no / -pd / -title / -desc, .chap-upcoming)   horizontal chapter track
 *      .rec-soon                                       Coming Soon placeholder
 *      .work-full                                      cover image floated right
 *    The old mini-block / mini-block-list / mini-block-title classes still work.
 * ===================================================================== */

/* ---------- 8.0 Component tokens (defaults = Archive Zone) ---------- */
:root {
    --c-radius: 0;                                   /* corners of cards, anchor buttons and the title block */
    --c-mark: "■";                                   /* zone mark: Archive ■ / Worldview ◈ / Canon ∴ */
    --c-label-font: var(--font-sans);                /* small labels (rec-subhead, chapter numbers, Coming Soon) */
    --c-label-size: 12px;
    --c-label-weight: 700;
    --c-label-spacing: 0.12em;
    --c-soon-style: normal;                          /* font style of Coming Soon (italic in the Canon Zone) */
    --c-intro-border: 3px solid var(--accent);       /* left rule of the epigraph */
    --c-title-bg: radial-gradient(var(--dot) 0px, transparent 1px) 0 0 / 20px 20px, var(--paper-sunk);
    --c-title-top: 2px solid var(--accent);          /* top rule of the title block */
    --c-title-shadow: none;                          /* title block lintel (Canon Zone only) */
    --c-title-ink: var(--ink);
    --c-title-en-ink: var(--accent);
    --c-chap-bg: var(--paper-raised);                /* chapter card background */
    --c-chap-bg-hover: var(--paper-sunk);
    --c-chap-top: 2px solid var(--accent);
    --c-chap-lintel: transparent;                    /* second thin lintel line on chapter cards (Canon Zone only) */
}

/* ---------- 8.1 Legacy class names: mini-block (still used by Main Page subtemplates; delete once everything uses rec-*) ---------- */
.mini-block {
    box-sizing: border-box;
    width: 100%;
    padding: 16px;
    margin-top: 8px;
    background: var(--paper-raised);
    border: 1px solid var(--rule);
}
.mini-block p { margin: 0 0 1em; }
.mini-block p:last-child { margin: 0; }
.mini-block-container { display: flex; gap: 8px; width: 100%; box-sizing: border-box; }
.mini-block-container ul { margin: 0; padding: 0; }
.mini-block-container li { list-style: none; margin: 0; }
.mini-block-container li a { display: block; padding: .4em .4em; color: var(--ink); }
.mini-block-container li a:hover { color: var(--accent); }
.mini-block-title { font-family: var(--font-serif); font-size: 24px; font-weight: 600; color: var(--ink); }
@media screen and (max-width: 850px) {
    .mini-block-container { flex-direction: column; }
}

/* ---------- 8.2 Title block: pages that have one hide the default title and TOC (screen readers still read the title)
   A title block inside .vgr-demo (examples on theme doc pages) does not trigger the hiding ---------- */
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) h1.firstHeading,
#content:has(.vgr-title-block:not(.vgr-demo *)) h1.firstHeading {
    position: absolute !important;
    width: 1px; height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    margin: 0 !important; padding: 0 !important;
}
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) #toc,
.mw-body:has(.vgr-title-block:not(.vgr-demo *)) .toc,
#content:has(.vgr-title-block:not(.vgr-demo *)) #toc,
#content:has(.vgr-title-block:not(.vgr-demo *)) .toc { display: none !important; }

.vgr-title-block {
    box-sizing: border-box;
    text-align: center;
    padding: 48px 16px 32px;
    margin: 0 0 24px;
    border: 1px solid var(--rule);
    border-top: var(--c-title-top);
    border-radius: var(--c-radius);
    box-shadow: var(--c-title-shadow);
    background: var(--c-title-bg);
}
.vgr-title-cn {
    font-family: var(--font-display);
    font-size: clamp(34px, 6vw, 58px);
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.12em;
    color: var(--c-title-ink);
    margin-bottom: 0.3em;
    text-wrap: balance;
}
.vgr-title-en {
    font-family: var(--font-latin, "Cormorant Garamond"), "Noto Serif SC", serif;
    font-size: 18px;
    font-weight: 500;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--c-title-en-ink);
    margin-bottom: 1em;
}
.vgr-title-sub {
    font-family: var(--font-body, var(--font-serif));
    font-size: 16px;
    color: var(--ink-muted);
    letter-spacing: 0.04em;
}
.vgr-title-sub a:not(.new) {
    color: var(--link) !important;
    text-decoration: none !important;
    border-bottom: 1px solid var(--rule-strong);
}
.vgr-title-sub a:not(.new):hover { border-bottom-color: var(--link); }
.vgr-title-sub i { font-style: italic; color: var(--ink); }
.vgr-title-tagline {
    font-family: var(--font-scripture, "LXGW WenKai Screen", KaiTi, serif);
    font-size: 15px;
    line-height: 1.8;
    color: var(--ink-muted);
    letter-spacing: 0.04em;
    max-width: 36em;
    margin: 24px auto 0;
}
/* Divider: "— zone mark —" */
.vgr-title-tagline::before {
    content: var(--c-mark);
    display: block;
    width: 12em;
    margin: 0 auto 16px;
    font-family: var(--font-sans);
    font-size: 12px;
    line-height: 1;
    color: var(--accent);
    background:
        linear-gradient(var(--rule-strong), var(--rule-strong)) left center / calc(50% - 16px) 1px no-repeat,
        linear-gradient(var(--rule-strong), var(--rule-strong)) right center / calc(50% - 16px) 1px no-repeat;
}

/* ---------- 8.3 Anchor bar ---------- */
#rec-anchors, .rec-anchors {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin: 16px 0 32px;
}
/* MediaWiki wraps the lines of links in a <p>; take that layer out of layout so the gap applies to each link */
#rec-anchors > p, .rec-anchors > p { display: contents; }
#rec-anchors a, .rec-anchors a {
    display: inline-block;
    padding: 5px 16px;
    border: 1px solid var(--rule-strong);
    border-radius: var(--c-radius);
    color: var(--ink) !important;
    font-family: var(--font-body, var(--font-serif));
    font-size: 15px;
    letter-spacing: 0.06em;
    text-decoration: none !important;
    background: transparent;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}
#rec-anchors a:hover, .rec-anchors a:hover {
    background: var(--accent-tint);
    border-color: var(--accent);
}

/* ---------- 8.4 Sections: since MediaWiki 1.43 headings are wrapped in .mw-heading, so both structures are covered ---------- */
.rec-section > h2,
.rec-section > .mw-heading2 { margin-top: 48px !important; }

/* ---------- 8.5 Entry grid and cards ---------- */
.rec-grid,
.rec-grid.mini-block-list,
.rec-grid.mini-block-container {
    display: grid;
    gap: 12px;
    margin: 0.8em 0 1.2em;
}
.rec-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rec-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media screen and (max-width: 850px) {
    .rec-grid-2 { grid-template-columns: 1fr; }
    .rec-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Card with description: one line on the left. Selectors include .mini-block to beat the legacy styles above */
.rec-card,
.mini-block.rec-card {
    box-sizing: border-box;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 8px 0 8px 14px;
    background: none;
    border: none;
    border-left: 2px solid var(--rule-strong);
    border-radius: 0;
    box-shadow: none;
    transition: border-color 0.2s ease;
}
.rec-card:hover { border-left-color: var(--accent); }
.rec-card-title,
.rec-card .mini-block-title {
    display: block;
    font-family: var(--font-serif);
    font-size: 17px;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.rec-card-title a:not(.new),
.rec-card .mini-block-title a:not(.new) { color: var(--ink) !important; }
.rec-card-title a:not(.new):hover,
.rec-card .mini-block-title a:not(.new):hover { color: var(--accent) !important; }
/* Themes color body text through #mw-content p, so this needs the same specificity to turn muted */
.rec-card, .rec-card p,
#mw-content .rec-card, #mw-content .rec-card p {
    font-size: 15px;
    line-height: 1.8;
    color: var(--ink-muted);
}
.rec-card p { margin: 0; }

/* Compact link */
.rec-link,
.mini-block.rec-link {
    box-sizing: border-box;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 7px 0 7px 14px;
    background: none;
    border: none;
    border-left: 2px solid var(--rule);
    border-radius: 0;
    box-shadow: none;
    transition: border-color 0.2s ease;
}
.rec-link a:not(.new) { color: var(--ink) !important; }
.rec-link:hover { border-left-color: var(--accent); }
.rec-link p, .rec-card .mini-block-title + p { margin: 0; }

/* ---------- 8.6 Small labels and epigraphs ---------- */
.rec-subhead {
    font-family: var(--c-label-font);
    font-size: var(--c-label-size);
    font-weight: var(--c-label-weight);
    letter-spacing: var(--c-label-spacing);
    text-transform: uppercase;
    color: var(--accent);
    margin: 24px 0 8px;
}
.rec-intro,
#mw-content .rec-intro {
    font-family: var(--font-scripture, "LXGW WenKai Screen", KaiTi, serif);
    font-size: 16px;
    line-height: 1.9;
    color: var(--ink);
    text-align: left;
    margin: 8px 0 24px;
    padding: 4px 0 4px 16px;
    border-left: var(--c-intro-border);
}

/* ---------- 8.7 Horizontal chapter track ---------- */
.novel-track {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding: 4px 2px 16px;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-color: var(--rule-strong) var(--paper-sunk);
}
.novel-track::-webkit-scrollbar { height: 6px; }
.novel-track::-webkit-scrollbar-track { background: var(--paper-sunk); }
.novel-track::-webkit-scrollbar-thumb { background: var(--rule-strong); }
.novel-track::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* Chapter card: the background and the lintel gap share --c-chap-bg and change together on hover, so no seam shows between the lines */
.novel-chap {
    --chap-bg: var(--c-chap-bg);
    flex: 0 0 232px;
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    padding: 16px;
    background: var(--chap-bg);
    border: 1px solid var(--rule);
    border-top: var(--c-chap-top);
    border-radius: var(--c-radius);
    box-shadow:
        inset 0 4px 0 var(--chap-bg),
        inset 0 5px 0 var(--c-chap-lintel);
    transition: border-color 0.2s ease;
}
.novel-chap:hover {
    --chap-bg: var(--c-chap-bg-hover);
    border-color: var(--rule-strong);
    border-top-color: var(--accent);
}
.novel-chap .chap-no {
    font-family: var(--c-label-font);
    font-size: var(--c-label-size);
    font-weight: var(--c-label-weight);
    letter-spacing: var(--c-label-spacing);
    color: var(--accent);
    margin: 4px 0 6px;
}
.novel-chap .chap-pd {
    font-family: var(--font-latin, "Cormorant Garamond"), "Noto Serif SC", serif;
    font-style: italic;
    font-size: 15px;
    color: var(--ink-muted);
}
.novel-chap .chap-title {
    font-family: var(--font-display);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.45;
    letter-spacing: 0.04em;
    color: var(--ink);
    margin: 2px 0 8px;
}
.novel-chap .chap-title a:not(.new) { color: var(--ink) !important; }
.novel-chap .chap-title a:not(.new):hover { color: var(--accent) !important; }
.novel-chap .chap-desc {
    font-size: 14px;
    line-height: 1.75;
    color: var(--ink-muted);
}
.novel-chap.chap-upcoming,
.novel-chap.chap-upcoming:hover {
    border: 1px dashed var(--rule-strong);
    box-shadow: none;
    background: transparent;
    justify-content: center;
    align-items: center;
    text-align: center;
    color: var(--ink-muted);
}

/* ---------- 8.8 Coming Soon placeholder: zone mark above ---------- */
.rec-soon {
    border: 1px dashed var(--rule-strong);
    border-radius: var(--c-radius);
    font-family: var(--c-label-font);
    font-style: var(--c-soon-style);
    font-size: 16px;
    letter-spacing: 0.1em;
    padding: 28px;
    text-align: center;
    color: var(--ink-muted);
}
.rec-soon::before {
    content: var(--c-mark);
    display: block;
    font-family: var(--font-sans);
    font-style: normal;
    font-size: 12px;
    color: var(--accent);
    margin-bottom: 8px;
}

/* ---------- 8.9 Cover image floated right ---------- */
.work-full { overflow: hidden; }
.work-full #image { float: right; width: 200px; margin: 0 0 10px 16px; }

/* ---------- 8.10 Phones (≤850px) ---------- */
@media screen and (max-width: 850px) {
    .vgr-title-block { padding: 32px 12px 24px; }
    .vgr-title-en { font-size: 15px; letter-spacing: 0.16em; }
    .novel-chap { flex-basis: 78%; }
    .work-full #image { float: none; width: 100%; max-width: 280px; margin: 0 0 12px; }
}


/* =====================================================================
 * 9. Forms, notifications, profile pages
 * ===================================================================== */
textarea {
    border-radius: var(--radius-sm);
    box-shadow: none;
    background-color: transparent;
    border: 1px solid var(--rule-strong);
    outline: none;
}
textarea:hover { border-color: var(--accent); }
textarea:focus-visible {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px var(--focus);
}

.mw-notification {
    border: 1px solid var(--rule);
    border-top: 2px solid var(--accent);
    border-radius: 0;
    box-shadow: 0 6px 18px -10px rgba(2, 95, 50, 0.35);
}

.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
    transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms;
}

/* Profile pages (SocialProfile): colors and shapes only; layout is left to the extension */
.profile-tab-on { border-bottom: 2px solid var(--accent); }
.profile-tab a, .profile-tab-on a { color: var(--ink) !important; }
#profile-toggle-button {
    background-color: var(--accent-fill);
    border-radius: var(--radius-sm);
    padding: 5px 10px;
}
#profile-toggle-button a { color: var(--on-accent); }
#profile-toggle-button:hover { background-color: #3B7E3D; }
.profile-on { background-color: var(--accent-tint); border-radius: var(--radius-sm); }
#profile-image img,
.c-avatar img,
.profile-info img { border-radius: 50%; }


/* =====================================================================
 * 10. Comments (FlowThread): site colors only; layout is left to the extension
 * ===================================================================== */
#flowthread .comment-submit {
    color: var(--on-accent);
    background-color: var(--accent-fill);
    border: 0;
    text-shadow: none;
}
#flowthread .comment-submit:hover { background-color: #3B7E3D; }
#flowthread .comment-toolbar {
    background-color: var(--paper-sunk);
    border-color: var(--rule);
}
#flowthread .comment-replybox > .comment-body { border-color: var(--rule-strong); }
#flowthread .comment-user,
#flowthread .comment-user a { color: var(--ink-muted); }
#flowthread .comment-like[liked],
#flowthread .comment-report[reported] { color: var(--accent); }


/* =====================================================================
 * 11. Notice box {{Notice}}: .vgr-notice
 *     All colors read the theme variables, so it works under Theme-HJ / Theme-STR / Theme-VGR.
 *     Default = zone color; is-warning = pending / warning; is-danger = spoiler / error.
 *     There is always a text label on the left, so color is never the only signal.
 * ===================================================================== */
.vgr-notice {
    --notice-c: var(--zone-accent, var(--accent));
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 6px 16px;
    box-sizing: border-box;
    max-width: 100%;
    margin: 1em 0;
    padding: 12px 16px;
    background: var(--paper-sunk);
    color: var(--ink);
    border: 1px solid var(--rule);
    border-top: 2px solid var(--notice-c);
    border-radius: 0;
}
/* Amber: mixed with the current text color, so it darkens on light themes and lightens on dark ones */
.vgr-notice.is-warning { --notice-c: color-mix(in srgb, #C98A1B 60%, var(--ink)); }
/* Red: each theme's red-link color */
.vgr-notice.is-danger { --notice-c: var(--link-new); }

.vgr-notice-side {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 3em;
    padding-top: 3px;
}
.vgr-notice-tag {
    font-family: var(--font-sans);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    line-height: 1.4;
    white-space: nowrap;
    color: var(--notice-c);
}
.vgr-notice-icon { line-height: 1; color: var(--notice-c); }
.vgr-notice-icon .md,
.vgr-notice-icon .md-lg,
.vgr-notice-icon .md-md,
.vgr-notice-icon .material-icons { font-size: 26px; }
.vgr-notice-icon img { max-width: 32px; height: auto; }

.vgr-notice-main { min-width: 0; }
.vgr-notice-title {
    font-family: var(--font-serif);
    font-size: 16px;
    font-weight: 600;
    line-height: 1.6;
    color: var(--ink);
}
#mw-content .vgr-notice-body,
#mw-content .vgr-notice-body p,
.vgr-notice-body,
.vgr-notice-body p {
    margin: 0;
    font-size: 14px;
    line-height: 1.8;
    color: var(--ink-muted);
}
.vgr-notice-body > p + p { margin-top: 0.5em; }
.vgr-notice-below {
    grid-column: 1 / -1;
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px solid var(--rule);
    font-size: 13px;
    color: var(--ink-muted);
}


/* =====================================================================
 * 12. Infobox {{Infobox}}: .vgr-infobox
 *     The fact table on the right of an article. All colors read the theme variables;
 *     square corners, no shadow; full width on phones.
 * ===================================================================== */
table.vgr-infobox {
    float: right;
    clear: right;
    width: 300px;
    margin: 0 0 1em 1.5em;
    border-collapse: collapse;
    background: var(--paper-raised);
    color: var(--ink);
    border: 1px solid var(--rule);
    border-top: 2px solid var(--zone-accent, var(--accent));
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.6;
}
table.vgr-infobox th.vgr-infobox-title {
    padding: 10px 12px;
    text-align: center;
    font-family: var(--font-serif);
    font-size: 18px;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--ink);
    background: var(--accent-tint);
}
table.vgr-infobox .vgr-infobox-media td {
    padding: 12px;
    text-align: center;
}
table.vgr-infobox .vgr-infobox-media img { max-width: 100%; height: auto; }
.vgr-infobox-desc {
    margin-top: 6px;
    font-size: 13px;
    color: var(--ink-muted);
}
table.vgr-infobox th[scope="row"] {
    width: 5.5em;
    padding: 7px 8px 7px 12px;
    text-align: left;
    vertical-align: top;
    white-space: nowrap;
    font-size: 13px;
    font-weight: 600;
    color: var(--ink-muted);
    background: transparent;
    border-top: 1px solid var(--rule);
}
table.vgr-infobox td {
    padding: 7px 12px 7px 8px;
    vertical-align: top;
    border-top: 1px solid var(--rule);
}
table.vgr-infobox .vgr-infobox-media td { border-top: none; }
table.vgr-infobox td p { margin: 0; }
/* {{Infobox2}}: group subheadings */
table.vgr-infobox .vgr-infobox-group th {
    padding: 6px 12px;
    text-align: left;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    color: var(--zone-accent, var(--accent));
    background: var(--paper-sunk);
    border-top: 1px solid var(--rule);
}
@media screen and (max-width: 850px) {
    table.vgr-infobox {
        float: none;
        width: 100%;
        margin: 0 0 1.5em;
    }
}


/* =====================================================================
 * 13. Click-to-load video and audio (video and audio widgets): .vgr-media
 *     Before the click there is only a button and no request is made; the player is created on click.
 * ===================================================================== */
.vgr-media-load {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 8px 16px;
    font-family: var(--font-sans);
    font-size: 14px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.04em;
    color: var(--on-accent);
    background: var(--accent-fill);
    border: none;
    border-radius: var(--radius-sm, 2px);
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.vgr-media-load:hover { background: #3B7E3D; }
.vgr-media-load:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
/* Play triangle drawn with borders, no icon font needed */
.vgr-media-icon {
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 0 6px 10px;
    border-color: transparent transparent transparent currentColor;
}

/* Video: holds a 16:9 slot before loading; after loading it uses the video's own ratio */
.vgr-media-video {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    aspect-ratio: 16 / 9;
    margin: 0 0 1em;
    background: var(--paper-sunk);
    border: 1px solid var(--rule);
}
.vgr-media-video.is-loaded {
    display: block;
    aspect-ratio: auto;
    background: #000;
    border: none;
}
.vgr-media-video video {
    display: block;
    width: 100%;
    height: auto;
    max-height: 80vh;
}

/* Audio: small inline button; a caption can follow it directly */
.vgr-media-audio {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    max-width: 100%;
    margin: 4px 8px 4px 0;
}
.vgr-media-audio .vgr-media-load {
    padding: 5px 12px;
    font-size: 13px;
}
.vgr-media-audio .vgr-media-icon { border-width: 5px 0 5px 8px; }
.vgr-media-audio audio {
    height: 36px;
    max-width: 100%;
}