/* ============ 宣纸版（浅色主题）：html.ink-mode 生效，由 js/ink-theme.js 切换 ============
 * 宣纸底 + 浓淡墨 + 朱砂红；深色版 WebGL 背景不改动，只是隐藏，换成 js/ink-bg.js 的水墨流体。 */
html.ink-mode {
  --bg: #f3ede1; --bg-2: #ebe3d3;
  --amber: #b8332a; --amber-hi: #8f2a22; --amber-deep: #7a1f18; --ember: #b8332a;
  --txt: #1d1a17; --txt-dim: #5a534c; --read: #2b2723; --read-dim: #4a443e;
  --line: rgba(29,26,23,.16); --card: rgba(255,252,245,.6);
  --accent: #1d1a17;
  --ink-paper: #f3ede1; --ink: #1d1a17; --ink-2: #5a534c; --ink-3: #8a837a; --cinnabar: #b8332a;
  color-scheme: light;
}
html.ink-mode body {
  background-color: var(--ink-paper) !important; color: var(--ink);
  background-image:
    radial-gradient(1200px 700px at 12% -10%, rgba(29,26,23,.07), transparent 60%),
    radial-gradient(900px 600px at 110% 110%, rgba(29,26,23,.08), transparent 60%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .11  0 0 0 0 .1  0 0 0 0 .09  0 0 0 .06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>") !important;
  background-attachment: fixed;
}
/* 盖住 WebGL 光晕与暗色光斑 */
html.ink-mode #bg, html.ink-mode canvas#bg, html.ink-mode .detail-glow, html.ink-mode .hero-glow, html.ink-mode .bg-glow { opacity: 0 !important; }

/* 标题换宋体，更有书卷气 */
html.ink-mode h1, html.ink-mode h2, html.ink-mode h3, html.ink-mode .hero-title, html.ink-mode .sec-head h2 {
  font-family: 'Noto Serif SC', 'Songti SC', 'STSong', serif !important; letter-spacing: .04em;
}
html.ink-mode .hero-title, html.ink-mode .hero-title em, html.ink-mode .sec-head h2, html.ink-mode .sec-head h2 em,
html.ink-mode .detail-hero h1, html.ink-mode .code {
  background: none !important; -webkit-text-fill-color: currentColor !important; color: var(--ink) !important; text-shadow: none !important; animation: none !important;
}
html.ink-mode .hero-title em, html.ink-mode .sec-head h2 em, html.ink-mode .detail-hero h1 span { color: var(--cinnabar) !important; }

/* 玻璃卡片 → 宣纸卡片 */
html.ink-mode .glass, html.ink-mode .profile-card, html.ink-mode .sys-card, html.ink-mode .media-card,
html.ink-mode .module-card, html.ink-mode .plat-card, html.ink-mode .work-card, html.ink-mode .news-card {
  background: rgba(255,252,245,.84) !important; border-color: rgba(29,26,23,.14) !important;
  box-shadow: 0 1px 0 rgba(255,255,255,.6) inset, 0 10px 28px rgba(60,40,20,.08) !important;
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
}
html.ink-mode .glass::before, html.ink-mode .profile-card::before, html.ink-mode .sys-card::before, html.ink-mode .media-card::before,
html.ink-mode .module-card::before, html.ink-mode .plat-card::before, html.ink-mode .work-card::before { display: none !important; }
html.ink-mode .news-card:hover, html.ink-mode .plat-card:hover, html.ink-mode .sys-card:hover { border-color: var(--cinnabar) !important; }

/* 顶栏、导航、标签、按钮 */
html.ink-mode .topbar, html.ink-mode .detail-topbar { background: linear-gradient(to bottom, rgba(var(--ink-halo, 243,237,225),.92), rgba(var(--ink-halo, 243,237,225),0)) !important; border-color: var(--line) !important; }
html.ink-mode .status-chip, html.ink-mode .lang-switch { background: rgba(255,252,245,.8) !important; border-color: var(--line) !important; color: var(--ink-2) !important; }
html.ink-mode .lang-switch { border-color: rgba(184,51,42,.4) !important; }
html.ink-mode .lang-switch button { color: var(--amber) !important; }   /* 宣纸版的强调色是朱红（--amber 在这里被改成 #b8332a） */
html.ink-mode .lang-switch button:hover { color: var(--amber-hi) !important; }
html.ink-mode .lang-switch button.is-active { background: var(--ink) !important; color: var(--ink-paper) !important; box-shadow: none !important; }
html.ink-mode .tag-list li, html.ink-mode .sys-tags span, html.ink-mode .tag { color: var(--ink-2) !important; border-color: rgba(29,26,23,.22) !important; background: transparent !important; }
html.ink-mode .btn, html.ink-mode .btn-news-all, html.ink-mode .btn-primary, html.ink-mode .hero-cta a, html.ink-mode .news-pages a {
  color: var(--ink) !important; background: transparent !important; border-color: var(--ink) !important; text-shadow: none !important; box-shadow: none !important;
}
html.ink-mode .btn:hover, html.ink-mode .btn-news-all:hover, html.ink-mode .hero-cta a:hover, html.ink-mode .news-pages a:hover { background: var(--ink) !important; color: var(--ink-paper) !important; }
/* 左侧导航：本来是浅灰 + 55% 透明，宣纸版傍晚 / 夜里压暗后会看不见，这里加深、加厚光晕 */
html.ink-mode .sidenav a, html.ink-mode .sidenav em { color: var(--ink-2) !important; }
html.ink-mode .sidenav a em { opacity: .9 !important; }
html.ink-mode .sidenav a::before { border-color: var(--ink-2) !important; }
html.ink-mode .sidenav a { text-shadow: 0 0 .25em rgba(var(--ink-halo, 243,237,225),1), 0 0 .7em rgba(var(--ink-halo, 243,237,225),.95), 0 0 1.4em rgba(var(--ink-halo, 243,237,225),.8) !important; }
html.ink-mode .sidenav a.is-active em, html.ink-mode .sidenav a.active em { color: var(--cinnabar) !important; }
html.ink-mode .logo-img { filter: invert(1) brightness(.2); }
html.ink-mode .logo-avatar { background: conic-gradient(from 0deg, var(--cinnabar), transparent 40%, var(--ink) 70%, var(--cinnabar)) !important; }
html.ink-mode .logo-avatar-core { background: var(--ink-paper) !important; color: var(--cinnabar) !important; }

html.ink-mode .hc-capsule { background: rgba(255,252,245,.92) !important; border-color: rgba(29,26,23,.2) !important; color: var(--ink) !important; box-shadow: 0 8px 24px rgba(60,40,20,.12) !important; }
html.ink-mode .hc-bubble { background: var(--ink) !important; color: var(--ink-paper) !important; }
html.ink-mode .hc-bubble::after { border-top-color: var(--ink) !important; }

/* ---- 第二轮修正 ---- */
/* 首页大标题：去掉原来的金色描边、发光、流光 */
html.ink-mode .hero-title, html.ink-mode .hero-title em { -webkit-text-stroke: 0 !important; }
html.ink-mode .hero-sub { color: var(--ink-2) !important; text-shadow: none !important; filter: none !important; }
html.ink-mode .hero-chip { background: rgba(255,252,245,.8) !important; color: var(--cinnabar) !important; border-color: rgba(184,51,42,.3) !important; backdrop-filter: none !important; }
html.ink-mode .scroll-hint { color: var(--ink-2) !important; text-shadow: 0 0 .3em rgba(var(--ink-halo, 243,237,225),1), 0 0 .9em rgba(var(--ink-halo, 243,237,225),.9) !important; }
/* 飞行器是深色版的元素，宣纸版不要 */
/* 系统区翻页按钮 */
html.ink-mode .sys-page-btn { color: var(--ink) !important; background: rgba(255,252,245,.8) !important; border-color: rgba(29,26,23,.3) !important; box-shadow: none !important; text-shadow: none !important; }
html.ink-mode .sys-page-btn:hover:not(:disabled) { background: var(--ink) !important; color: var(--ink-paper) !important; }
/* 文章页按钮 */
html.ink-mode .hc-art-btn { color: var(--ink-paper) !important; background: var(--cinnabar) !important; box-shadow: none !important; }
html.ink-mode .hc-art-btn.is-ghost { color: var(--ink) !important; background: transparent !important; border-color: rgba(29,26,23,.35) !important; }
html.ink-mode .hc-art-btn.is-ghost:hover { background: rgba(29,26,23,.06) !important; }
/* 个人档案头像气泡 */
html.ink-mode .avatar-hi { background: var(--ink) !important; color: var(--ink-paper) !important; }
/* 对话框：宣纸化 */
html.ink-mode .hc-panel { background: #f7f2e8 !important; border-color: rgba(29,26,23,.18) !important; box-shadow: 0 24px 60px rgba(60,40,20,.18) !important; }
html.ink-mode .hc-head-bar { border-color: rgba(29,26,23,.1) !important; }
html.ink-mode .hc-title b { color: var(--ink) !important; }
html.ink-mode .hc-msg { color: var(--ink) !important; }
html.ink-mode .hc-msg.is-bot { background: rgba(255,255,255,.7) !important; border-color: rgba(29,26,23,.12) !important; }
html.ink-mode .hc-msg.is-user { background: var(--cinnabar) !important; color: #fbf6ee !important; }
html.ink-mode .hc-msg a { color: var(--cinnabar) !important; border-color: rgba(184,51,42,.4) !important; }
html.ink-mode .hc-msg b, html.ink-mode .hc-msg strong { color: var(--ink) !important; }   /* 回复里的加粗标题：深色版是浅米白（--hc-txt），宣纸白底上看不见 */
html.ink-mode .hc-msg.is-user b, html.ink-mode .hc-msg.is-user strong { color: inherit !important; }
html.ink-mode .hc-chips button { color: var(--ink) !important; background: transparent !important; border-color: rgba(29,26,23,.25) !important; }
html.ink-mode .hc-chips button.is-tour, html.ink-mode .hc-send { background: var(--cinnabar) !important; color: #fbf6ee !important; }
html.ink-mode .hc-form { background: rgba(255,255,255,.7) !important; border-color: rgba(29,26,23,.18) !important; }
html.ink-mode .hc-input { color: var(--ink) !important; }
html.ink-mode .hc-tour { background: #f7f2e8 !important; color: var(--ink) !important; border-color: rgba(29,26,23,.18) !important; }
html.ink-mode .hc-tour::after { border-top-color: #f7f2e8 !important; }

/* ---- 背景画布：水墨流体 + 锦鲤（js/ink-bg.js、js/ink-koi.js 创建，只在宣纸版显示） ---- */
#ink-bg, #ink-ripple, #ink-koi { position: fixed; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; display: none; }
html.ink-mode #ink-bg, html.ink-mode #ink-ripple, html.ink-mode #ink-koi { display: block; }
html.ink-mode #bg { visibility: hidden; }

/* ---- 右上角太极切换按钮（两种主题都显示） ---- */
.ink-toggle { width: 34px; height: 34px; flex: none; display: inline-grid; place-items: center; padding: 0; cursor: pointer;
  border-radius: 999px; border: 1px solid rgba(255,154,60,.22); background: rgba(3,3,3,.6); color: #e8e2d9; --ink-dot: #0d0a07;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); transition: transform .5s cubic-bezier(.2,.8,.2,1), color .25s, border-color .25s; }
.ink-toggle svg { width: 18px; height: 18px; display: block; }
.ink-toggle:hover { color: #ff9a3c; border-color: rgba(255,154,60,.5); transform: rotate(180deg); }
.ink-toggle:focus-visible { outline: 2px solid #ff9a3c; outline-offset: 2px; }
html.ink-mode .ink-toggle { background: rgba(255,252,245,.85) !important; border-color: rgba(29,26,23,.2) !important; color: var(--ink) !important; --ink-dot: #f3ede1; }
html.ink-mode .ink-toggle:hover { color: var(--cinnabar) !important; border-color: var(--cinnabar) !important; }
@media (max-width: 640px) { .ink-toggle { width: 30px; height: 30px; } .ink-toggle svg { width: 16px; height: 16px; } }

/* ---- 切换过场：一滴墨从按钮处晕开 ---- */
.ink-wipe { position: fixed; inset: 0; z-index: 9999; pointer-events: none;
  clip-path: circle(0 at var(--x) var(--y)); transition: clip-path .62s cubic-bezier(.6,0,.3,1), opacity .6s ease; }
.ink-wipe.to-ink { background: radial-gradient(circle at var(--x) var(--y), #efe7d8, #f3ede1 60%); }
.ink-wipe.to-dark { background: radial-gradient(circle at var(--x) var(--y), #1c1c22, #050505 60%); }
.ink-wipe.is-in { clip-path: circle(150vmax at var(--x) var(--y)); }
.ink-wipe.is-out { opacity: 0; }


/* ---- 文字留白：墨和锦鲤从字底下经过时，给字一圈宣纸色光晕，保证看得清 ---- */
html.ink-mode body { text-shadow: 0 0 .1em rgba(var(--ink-halo, 243,237,225),.95), 0 0 .4em rgba(var(--ink-halo, 243,237,225),.9) !important; }
html.ink-mode .lang-switch button.is-active, html.ink-mode .hc-msg.is-user, html.ink-mode .hc-send, html.ink-mode .hc-bubble,
html.ink-mode .avatar-hi, html.ink-mode .hc-art-btn:not(.is-ghost), html.ink-mode .hc-chips button.is-tour,
html.ink-mode .btn:hover, html.ink-mode .btn-news-all:hover, html.ink-mode .hero-cta a:hover, html.ink-mode .news-pages a:hover,
html.ink-mode .sys-page-btn:hover, html.ink-mode .hc-panel * { text-shadow: none !important; }
html.ink-mode .hero-title, html.ink-mode h1, html.ink-mode h2 { text-shadow: 0 0 .06em rgba(var(--ink-halo, 243,237,225),.9), 0 0 .25em rgba(var(--ink-halo, 243,237,225),.8) !important; }

/* 手机：顶栏多了太极按钮，文章页把 HIMIAO 字标收起只留头像，"返回"不换行 */
.detail-back { white-space: nowrap; }
@media (max-width: 440px) {
  .detail-topbar .logo { font-size: 0 !important; gap: 0 !important; letter-spacing: 0 !important; }
  .detail-topbar .logo .logo-avatar-core { font-size: 12px; }
  .detail-topbar .logo .logo-img { display: none; }
}

/* ================= 页面切换过场（View Transitions，js/page-fx.js 负责封面 / 标题配对） ================= */
@view-transition { navigation: auto; }
@media (prefers-reduced-motion: reduce) { @view-transition { navigation: none; } }
/* 深色版：旧页轻微缩小变虚淡出，新页从略大处淡入（2026-09-28 按反馈放慢一倍，原来太快看不清） */
::view-transition-old(root) { animation: vt-out .7s cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation: vt-in .9s .15s cubic-bezier(0,0,.2,1) both; }
@keyframes vt-out { to { opacity: 0; transform: scale(.985); filter: blur(6px); } }
@keyframes vt-in { from { opacity: 0; transform: scale(1.015); } }
/* 宣纸版：新页面从点击处像墨一样晕开 */
html.ink-mode::view-transition-old(root) { animation: vt-hold 1.5s linear both; }
@property --vt-r { syntax: '<length>'; inherits: false; initial-value: 0px; }
html.ink-mode::view-transition-new(root) {
  animation: vt-ink 1.5s cubic-bezier(.65,0,.35,1) both;
  /* 边缘向外柔和晕开，像墨渗进宣纸，而不是一条硬圆线 */
  -webkit-mask-image: radial-gradient(circle at var(--vt-x, 50%) var(--vt-y, 50%), #000 var(--vt-r), rgba(0,0,0,.55) calc(var(--vt-r) + 50px), transparent calc(var(--vt-r) + 140px));
          mask-image: radial-gradient(circle at var(--vt-x, 50%) var(--vt-y, 50%), #000 var(--vt-r), rgba(0,0,0,.55) calc(var(--vt-r) + 50px), transparent calc(var(--vt-r) + 140px));
}
@keyframes vt-hold { to { opacity: 1; } }
@keyframes vt-ink {
  from { --vt-r: 0px; filter: blur(10px); }
  60% { filter: blur(2px); }
  to { --vt-r: 150vmax; filter: blur(0); }
}
/* 封面、标题从卡片飞到文章页 */
::view-transition-group(vt-cover), ::view-transition-group(vt-title) { animation-duration: 1.1s; animation-timing-function: cubic-bezier(.45,0,.15,1); }
::view-transition-old(vt-cover), ::view-transition-new(vt-cover) { height: 100%; object-fit: cover; }
html.ink-mode::view-transition-group(vt-cover), html.ink-mode::view-transition-group(vt-title) { animation-duration: 1.3s; }

/* ================= 左下角小栏：许愿 / 水声 / 天气 / 池边人数（各模块往 #pondHud 里放） ================= */
#pondHud { display: none; }
html.ink-mode #pondHud { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; position: fixed; left: 22px; bottom: 22px; z-index: 70; }
html.ink-mode .pond-sound, html.ink-mode .pond-brush, html.ink-mode .pond-wish, html.ink-mode .pond-myfish { display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px 5px 8px; border-radius: 999px; border: 1px solid rgba(29,26,23,.18); background: rgba(255,252,245,.85); color: var(--ink-2);
  font: 500 12px/1 'Noto Serif SC', 'Songti SC', serif; letter-spacing: .08em; cursor: pointer; text-shadow: none !important; }
html.ink-mode .pond-sound svg, html.ink-mode .pond-brush svg, html.ink-mode .pond-wish svg, html.ink-mode .pond-myfish svg { width: 16px; height: 16px; }
html.ink-mode .pond-sound[aria-pressed="true"], html.ink-mode .pond-brush[aria-pressed="true"] { color: var(--cinnabar); border-color: rgba(184,51,42,.35); }
html.ink-mode .pond-sound:hover, html.ink-mode .pond-brush:hover, html.ink-mode .pond-wish:hover, html.ink-mode .pond-myfish:hover { border-color: var(--cinnabar); }
html.ink-mode .pond-sound:focus-visible, html.ink-mode .pond-brush:focus-visible, html.ink-mode .pond-wish:focus-visible { outline: 2px solid var(--cinnabar); outline-offset: 2px; }
html.ink-mode .pond-count, html.ink-mode .pond-weather, html.ink-mode .pond-wish-note { pointer-events: none; font: 500 12px/1.4 'Noto Serif SC', 'Songti SC', serif; letter-spacing: .12em; color: var(--ink-2);
  text-shadow: 0 0 .3em rgba(var(--ink-halo, 243,237,225),.95), 0 0 .8em rgba(var(--ink-halo, 243,237,225),.9) !important; }
html.ink-mode .pond-weather { font-size: 11px; letter-spacing: .06em; color: var(--ink-3); }
html.ink-mode #pondHud [hidden] { display: none !important; }
@media (max-width: 640px) {
  html.ink-mode #pondHud { left: 14px; bottom: 14px; gap: 6px; }
  html.ink-mode .pond-sound, html.ink-mode .pond-brush, html.ink-mode .pond-wish, html.ink-mode .pond-myfish { font-size: 11px; padding: 4px 9px 4px 7px; }
  html.ink-mode .pond-count { font-size: 11px; }
}

html.ink-mode .pond-wish[aria-disabled="true"] { opacity: .5; cursor: default; }
html.ink-mode .pond-wish-note { color: var(--cinnabar); }

/* ================= 深色版星空：此刻几人在看星星（js/star-fx.js） ================= */
.star-count { position: fixed; left: 22px; bottom: 22px; z-index: 70; pointer-events: none;
  font: 500 11px/1.4 'JetBrains Mono', ui-monospace, monospace; letter-spacing: .14em; color: rgba(255,190,110,.72); text-shadow: 0 0 8px rgba(0,0,0,.8); }
html.ink-mode .star-count, .star-count[hidden] { display: none; }
@media (max-width: 640px) { .star-count { left: 14px; bottom: 14px; font-size: 10px; } }

/* ================= 宣纸版开场「墨生太极」 =================
   0.6-2.0s 一滴墨在纸上方聚成水珠、拉长 → 2.02-2.36s 坠落 → 2.36s 落纸：浓墨核心和淡灰水痕一起洇开（水痕跑得快，边缘是宣纸的纤维）、溅出四个微点
   → 3.15-4.35s 墨转起来，圆墨斑卷成太极的一瓣 → 4.25s 「缪」朱砂印落在白瓣的鱼眼上 → 4.55-5.8s HIMIAO 逐字从水痕里写清楚
   → 6.2-7.0s 墨被水泡开、纸化成水，下面的锦鲤池浮上来。全部 transform / opacity（字的清晰过程用了 filter，只有六个字）。
   #splash 加 .spk-go 启动（index.html startSplash 的 ink 分支同时对齐所有动画的 startTime）。 */
html.ink-mode #splash { background: transparent; }    /* 纸由 .spk 自己画：结尾纸淡出时才能露出下面的锦鲤池 */
html.ink-mode #splash .sp2, html.ink-mode #splash .splash-vignette { display: none !important; }   /* 深色版的地球开场在宣纸版不要 */
.spk { display: none; position: absolute; inset: 0; z-index: 2; overflow: hidden; background: #f3ede1; --D: min(40vh, 64vw); --ink: #1d1a17; }
html.ink-mode #splash .spk { display: block; }
.spk-paper { position: absolute; inset: 0; background: url(../img/ink-splash-paper.webp) repeat; background-size: 384px 384px; opacity: .9; }
.spk-light { position: absolute; inset: 0; opacity: 0; background: radial-gradient(70% 55% at 38% 30%, rgba(255,252,244,.9), rgba(255,250,240,0) 70%); }
.spk-ink { position: absolute; left: 50%; top: 46%; width: 0; height: 0; }
.spk-ink > * { position: absolute; left: 0; top: 0; }
.spk-drop { width: 18px; height: 27px; fill: var(--ink); top: -30vh; transform: translate(-50%, -100%) scale(0); transform-origin: 50% 0; }
.spk-halo, .spk-blot, .spk-taiji { width: calc(var(--D) / .6); height: calc(var(--D) / .6); max-width: none; opacity: 0; transform: translate(-50%, -50%); will-change: transform; }
.spk-swirl { width: 0; height: 0; transform: rotate(-160deg); }
.spk-swirl > img { position: absolute; left: 0; top: 0; }   /* 两张图都以旋转中心为原点叠放，不能进文档流 */
.spk-splat { display: block; width: 4px; height: 4px; border-radius: 50%; background: var(--ink); opacity: 0; transform: translate(-50%, -50%); }
.spk-seal { width: calc(var(--D) * .15); height: calc(var(--D) * .15); top: calc(var(--D) * .25); display: grid; place-items: center; opacity: 0;
  background: #b8332a; color: #f7efe4; border-radius: 4px; font: 700 calc(var(--D) * .085)/1 'Noto Serif SC', 'Songti SC', 'STSong', serif;
  box-shadow: inset 0 0 0 2px rgba(247,239,228,.85), inset 0 0 0 4px #b8332a, 0 0 8px rgba(184,51,42,.35); transform: translate(-50%, -50%) rotate(-6deg) scale(1.8); }
.spk-word { top: calc(var(--D) * .5 + 5vh); white-space: nowrap; transform: translate(-50%, 0); color: var(--ink);
  font: 500 clamp(26px, 5vw, 56px)/1 'Noto Serif SC', 'Songti SC', 'STSong', serif; letter-spacing: .5em; margin-right: -.5em; }
.spk-word span { display: inline-block; opacity: 0; filter: blur(10px); transform: translateX(calc((var(--i) - 2.5) * .35em)); }
@media (max-width: 640px) { .spk { --D: min(34vh, 66vw); } .spk-drop { width: 12px; height: 18px; top: -26vh; } .spk-word { top: calc(var(--D) * .5 + 4vh); } }
/* 时间轴 */
#splash.spk-go .spk-light { animation: spkLight 1.8s .1s ease-out forwards; }
#splash.spk-go .spk-drop  { animation: spkDropForm 1.4s .6s cubic-bezier(.2,.7,.2,1) both, spkDropFall .34s 2.02s cubic-bezier(.55,0,1,.55) forwards; }
#splash.spk-go .spk-blot  { animation: spkBlot 1.6s 2.36s cubic-bezier(.08,.75,.2,1) forwards, spkBlotOut .8s 3.5s ease-in forwards; }
#splash.spk-go .spk-halo  { animation: spkHalo 2.2s 2.36s cubic-bezier(.05,.7,.15,1) forwards, spkHaloOut .8s 6.2s ease-in forwards; }
#splash.spk-go .spk-splat { animation: spkSplat .45s 2.36s cubic-bezier(.1,.7,.3,1) forwards; }
#splash.spk-go .spk-swirl { animation: spkSwirl 1.2s 3.15s cubic-bezier(.3,.05,.2,1) both, spkInkOut .8s 6.2s ease-in forwards; }
#splash.spk-go .spk-taiji { animation: spkTaijiIn .9s 3.35s ease-out forwards; }
#splash.spk-go .spk-seal  { animation: spkSeal .38s 4.25s cubic-bezier(.3,1.4,.5,1) forwards, spkSealOut .6s 6.25s ease-in forwards; }
#splash.spk-go .spk-word span { animation: spkLetter 1.1s calc(4.55s + var(--i) * .09s) cubic-bezier(.2,.7,.2,1) forwards; }
#splash.spk-go .spk-word  { animation: spkWordOut .6s 6.2s ease-in forwards; }
#splash.spk-go .spk       { animation: spkPaperOut .7s 6.3s ease-in-out forwards; }
@keyframes spkLight    { to { opacity: .7; } }
@keyframes spkDropForm { 0% { transform: translate(-50%,-100%) scale(0); } 55% { transform: translate(-50%,-100%) scale(1); } 100% { transform: translate(-50%,-100%) scale(1, 1.3); } }
@keyframes spkDropFall { 0% { opacity: 1; transform: translate(-50%,-100%) scale(1, 1.3); } 96% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, 30vh) scale(.85, 1.5); } }
@keyframes spkBlot     { 0% { opacity: 1; transform: translate(-50%,-50%) scale(.04); } 100% { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
@keyframes spkBlotOut  { to { opacity: 0; } }
@keyframes spkHalo     { 0% { opacity: 0; transform: translate(-50%,-50%) scale(.05); } 10% { opacity: 1; } 100% { opacity: 1; transform: translate(-50%,-50%) scale(1.15); } }
@keyframes spkHaloOut  { from { opacity: 1; transform: translate(-50%,-50%) scale(1.15); } to { opacity: 0; transform: translate(-50%,-50%) scale(1.7); } }
@keyframes spkSplat    { 0% { opacity: 1; transform: translate(-50%,-50%) scale(1.2); } 100% { opacity: .85; transform: translate(calc(-50% + cos(var(--a) * 1rad) * var(--d) * var(--D) * .5), calc(-50% + sin(var(--a) * 1rad) * var(--d) * var(--D) * .3)) scale(.5); } }
@keyframes spkSwirl    { from { transform: rotate(-160deg); } to { transform: rotate(0deg); } }
@keyframes spkTaijiIn  { 0% { opacity: 0; transform: translate(-50%,-50%) scale(.96); } 100% { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
@keyframes spkInkOut   { from { opacity: 1; transform: rotate(0deg) scale(1); } to { opacity: 0; transform: rotate(6deg) scale(1.12); } }
@keyframes spkSeal     { 0% { opacity: 0; transform: translate(-50%,-50%) rotate(-10deg) scale(1.8); } 70% { opacity: .96; transform: translate(-50%,-50%) rotate(-6deg) scale(.93); } 100% { opacity: .96; transform: translate(-50%,-50%) rotate(-6deg) scale(1); } }
@keyframes spkSealOut  { from { opacity: .96; transform: translate(-50%,-50%) rotate(-6deg) scale(1); } to { opacity: 0; transform: translate(-50%,-50%) rotate(-6deg) scale(1.06); } }
@keyframes spkLetter   { 0% { opacity: 0; filter: blur(10px); transform: translateX(calc((var(--i) - 2.5) * .35em)); } 100% { opacity: 1; filter: blur(0); transform: none; } }
@keyframes spkWordOut  { from { opacity: 1; transform: translate(-50%, 0); } to { opacity: 0; transform: translate(-50%, -6px); } }
@keyframes spkPaperOut { from { opacity: 1; } to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  html.ink-mode #splash .spk * { animation: none !important; }
  .spk-drop { display: none; } .spk-halo { opacity: 1; transform: translate(-50%,-50%) scale(1.15); } .spk-taiji { opacity: 1; } .spk-swirl { transform: none; }
  .spk-seal { opacity: .96; transform: translate(-50%,-50%) rotate(-6deg); } .spk-word span { opacity: 1; filter: none; transform: none; }
}

/* 新闻配图说明：文章页内联样式写死了深色半透明底（给深色版用），宣纸版换成浅宣纸底 + 墨字，否则字看不清 */
html.ink-mode .news-cover { background: rgba(251,247,239,.92); border-color: rgba(29,26,23,.14); }
html.ink-mode .news-cover figcaption { color: #4a443e; border-top-color: rgba(29,26,23,.12); background: transparent; }

/* 终端是深色窗口：宣纸版给全站文字加的宣纸色光晕在这里会变成重影，去掉 */
html.ink-mode .mt-root, html.ink-mode .mt-root * { text-shadow: none !important; }

/* 左下角的天气、池边人数：原来是浅灰小字直接压在水墨上，灰色墨团上看不清——加一层半透明宣纸底，字色加深 */
html.ink-mode .pond-count { color: var(--ink) !important; }   /* 池边人数：纯文字，用最深的墨色保证看得清 */

/* 有底色的卡片 / 面板里，字不压在水墨上，不需要宣纸色光晕（反而让字边发虚像重影）；只有直接压在水面上的字才保留光晕 */
html.ink-mode :is(.glass, .sys-card, .module-card, .news-card, .honor-card, .profile-card, .plat-card, .media-card, .hc-panel, .hc-bubble, .sc-win, .qian-card, .myfish-pop),
html.ink-mode :is(.glass, .sys-card, .module-card, .news-card, .honor-card, .profile-card, .plat-card, .media-card, .hc-panel, .hc-bubble, .sc-win, .qian-card, .myfish-pop) * { text-shadow: none !important; }

/* 内页（新闻 / 手记 / 系统介绍 / Now）：静态宣纸底——纸纹 + 四角淡墨，不跑水墨流体和锦鲤（js/ink-theme.js 给 html 加 .ink-still） */
html.ink-mode.ink-still body {
  background-color: var(--ink-paper) !important;
  background-image: url(/img/ink-wash.webp), url(/img/ink-splash-paper.webp) !important;
  background-size: cover, 384px 384px !important; background-position: center, 0 0 !important;
  background-repeat: no-repeat, repeat !important; background-attachment: fixed, fixed !important;
  background-blend-mode: normal, multiply !important;
}
