/* 墨仙录 · 水墨绘卷 */
:root{
  /* 固定颜料不随昼夜变色；主题朱砂仍由 --zhu 在各面板内覆盖。 */
  --seal-red:#b3302a; --seal-paper:#f3ead6; --paper-letter:#f7efe0; --panel-ink:#1c1814; --life-shadow:#6e221c; --life-glow:#d45548;
  --paper:#efe6d3; --paper-hi:#f7f1e3; --ink:#1b1814; --ink2:#38322b; --ink3:#6e6457; --ink4:#9a8f80;
  --zhu:var(--seal-red); --zhu-soft:rgba(179,48,42,.12); --qing:#3d5560;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px); --sal:env(safe-area-inset-left,0px); --sar:env(safe-area-inset-right,0px);
  --f-body:'MoWen','Songti SC','STSong','Noto Serif SC','Noto Serif CJK SC','Source Han Serif SC',serif;
  --f-head:'MoShu','MoWen','STKaiti','Kaiti SC',serif;
  --f-cao:'MoCao','MoShu','STKaiti',serif;
  --paper-img:none; --ease-ink:cubic-bezier(.22,.7,.18,1);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;overflow:hidden;background:var(--paper);overscroll-behavior:none}

/* ---------- 墨韵滚动条（全局） ---------- */
:root{
  --sb-thumb:rgba(40,32,24,.42);
  --sb-thumb-hover:rgba(40,32,24,.62);
  --sb-track:rgba(249,245,233,.35);
}
*{scrollbar-width:thin;scrollbar-color:var(--sb-thumb) transparent}
*::-webkit-scrollbar{width:5px;height:5px;background:transparent}
*::-webkit-scrollbar-button{display:none;width:0;height:0}
*::-webkit-scrollbar-corner{background:transparent}
*::-webkit-scrollbar-track{background:transparent;margin:4px 0}
*::-webkit-scrollbar-thumb{background:var(--sb-thumb);border-radius:99px;border:1px solid transparent;background-clip:padding-box;min-height:24px}
*::-webkit-scrollbar-thumb:hover{background:var(--sb-thumb-hover)}
/* 纸色面板：半透明纸轨 + 浓墨拇指，静止时近乎隐去 */
.sheet-body,.path-cer-body,.create-body,.log,.ev-main,.mj-main,.tab-body,.dan-body,.auc-body,
.bt-text,.map-panel,.map-list,.sect-wrap,.gf-list{
  scrollbar-width:thin;scrollbar-color:var(--sb-thumb) var(--sb-track);
}
.sheet-body::-webkit-scrollbar,.path-cer-body::-webkit-scrollbar,.create-body::-webkit-scrollbar,
.log::-webkit-scrollbar,.ev-main::-webkit-scrollbar,.mj-main::-webkit-scrollbar,
.tab-body::-webkit-scrollbar,.dan-body::-webkit-scrollbar,.auc-body::-webkit-scrollbar,
.bt-text::-webkit-scrollbar{
  width:5px;height:5px;
}
.sheet-body::-webkit-scrollbar-track,.path-cer-body::-webkit-scrollbar-track,.create-body::-webkit-scrollbar-track,
.log::-webkit-scrollbar-track,.ev-main::-webkit-scrollbar-track,.mj-main::-webkit-scrollbar-track,
.tab-body::-webkit-scrollbar-track,.dan-body::-webkit-scrollbar-track,.auc-body::-webkit-scrollbar-track,
.bt-text::-webkit-scrollbar-track{
  background:var(--sb-track);border-radius:99px;
}
.sheet-body::-webkit-scrollbar-thumb,.path-cer-body::-webkit-scrollbar-thumb,.create-body::-webkit-scrollbar-thumb,
.log::-webkit-scrollbar-thumb,.ev-main::-webkit-scrollbar-thumb,.mj-main::-webkit-scrollbar-thumb,
.tab-body::-webkit-scrollbar-thumb,.dan-body::-webkit-scrollbar-thumb,.auc-body::-webkit-scrollbar-thumb,
.bt-text::-webkit-scrollbar-thumb{
  background:var(--sb-thumb);border-radius:99px;
}
/* 暗色仪式面板：浅墨拇指 */
.path-cer-body{scrollbar-color:rgba(239,230,211,.35) rgba(0,0,0,.15)}
.path-cer-body::-webkit-scrollbar-track{background:rgba(0,0,0,.18)}
.path-cer-body::-webkit-scrollbar-thumb{background:rgba(239,230,211,.32)}
.path-cer-body::-webkit-scrollbar-thumb:hover{background:rgba(239,230,211,.5)}
/* 地图横滑保持无轨（手势区） */
.map-scroll{scrollbar-width:none}
.map-scroll::-webkit-scrollbar{display:none;width:0;height:0}
/* 日志默认隐轨，悬停/滚动时现墨条（叠层感） */
.log{scrollbar-width:thin;scrollbar-color:transparent transparent}
.log:hover,.log:focus-within,.log.is-scrolling{scrollbar-color:var(--sb-thumb) transparent}
.log::-webkit-scrollbar-thumb{background:transparent}
.log:hover::-webkit-scrollbar-thumb,.log:focus-within::-webkit-scrollbar-thumb,.log.is-scrolling::-webkit-scrollbar-thumb{background:var(--sb-thumb)}
body{font-family:var(--f-body);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;position:fixed;top:0;right:0;bottom:0;left:0;inset:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;touch-action:manipulation}
[hidden]{display:none!important}
.seal-font{font-family:var(--f-head)}

/* ---------- 纸 / 景 ---------- */
#paper{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:0;background-color:var(--paper);background-image:none;background-repeat:no-repeat;overflow:hidden;
  transition:background-color 2.8s var(--ease-ink)}
#paper canvas.xuan{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;display:block}
#paper-veil{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse 90% 70% at 50% 40%, var(--paper-tint, transparent), transparent 70%),
    radial-gradient(ellipse 80% 55% at 8% 92%, var(--paper-stain, rgba(90,60,30,.05)), transparent 55%),
    radial-gradient(ellipse 70% 50% at 94% 8%, var(--paper-stain2, rgba(70,50,35,.045)), transparent 50%),
    linear-gradient(180deg, var(--paper-realm, transparent), transparent 42%);
  opacity:1;transition:opacity 2.4s var(--ease-ink)}
#fiber{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:71;pointer-events:none;opacity:.07;
  background-image:var(--fiber-img);background-size:280px 280px}
#vignette{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;z-index:1;
  background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(92,68,40,.16) 88%,rgba(70,50,28,.32) 100%),
             linear-gradient(180deg,rgba(80,60,35,.10),transparent 9%,transparent 91%,rgba(80,60,35,.12))}
#scenery{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:1;pointer-events:none;overflow:hidden;transition:opacity 1.6s var(--ease-ink),transform 1.8s var(--ease-ink)}
.mtn{position:absolute;left:-15%;width:130%;will-change:transform}
.m1{top:22%;height:46%;animation:drift 70s ease-in-out infinite alternate}
.m2{top:34%;height:46%;animation:drift 55s ease-in-out -20s infinite alternate-reverse}
.m3{top:48%;height:42%;animation:drift 42s ease-in-out -8s infinite alternate}
.m4{top:70%;height:34%;animation:drift 34s ease-in-out -12s infinite alternate-reverse}
@keyframes drift{from{transform:translate3d(-2.2%,0,0)}to{transform:translate3d(2.2%,0,0)}}
.mist{position:absolute;left:0;width:200%;height:24%;background-image:var(--mist-img);background-size:50% 100%;background-repeat:repeat-x;will-change:transform;opacity:.95;-webkit-mask-image:linear-gradient(180deg,transparent,#000 50%,transparent);mask-image:linear-gradient(180deg,transparent,#000 50%,transparent)}
.mist1{top:38%;height:26%;animation:mist 95s linear infinite}
.mist2{top:56%;height:28%;animation:mist 70s linear -30s infinite reverse;opacity:1}
.mist3{top:72%;height:30%;animation:mist 55s linear -10s infinite}
@keyframes mist{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.sun{position:absolute;width:80px;height:80px;left:24%;top:27%;border-radius:50%;
  background:radial-gradient(circle at 46% 44%,rgba(190,58,46,.82),rgba(179,48,42,.62) 58%,rgba(179,48,42,0) 72%);transition:opacity 1.6s,transform 2s var(--ease-ink)}
body[data-screen=main] #scenery{opacity:.42;transform:translate3d(0,14%,0)}
body[data-screen=main] .sun,body[data-screen=main] .cranes,body[data-screen=main] .pine{opacity:0}
body[data-screen=create] #scenery{opacity:.5;transform:translate3d(0,18%,0)}
body[data-screen=create] .sun,body[data-screen=create] .cranes,body[data-screen=create] .pine{opacity:0}

/* ---------- 屏 ---------- */
#app{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:2}
.screen{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;padding:calc(var(--sat) + 14px) calc(var(--sar) + 16px) calc(var(--sab) + 12px) calc(var(--sal) + 16px);
  display:flex;flex-direction:column;max-width:640px;margin:0 auto}

/* 墨晕显字 */
.ink-ch{display:inline-block;opacity:0;animation:bleed 1.1s var(--ease-ink) both;animation-delay:calc(var(--i) * 24ms)}
@keyframes bleed{0%{opacity:0;transform:translate3d(0,3px,0) scale(1.08)}40%{opacity:.88}100%{opacity:1;transform:none}}
.bleed-in{animation:bleedBlock 1.4s var(--ease-ink) both}
@keyframes bleedBlock{0%{opacity:0;transform:scale(1.04)}100%{opacity:1;transform:none}}

/* ---------- 卷首 ---------- */
#scr-title{align-items:stretch}
.title-block{position:absolute;top:calc(var(--sat) + 7vh);right:calc(var(--sar) + 10%);display:flex;flex-direction:row-reverse;align-items:flex-start;gap:10px}
.title-side{display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:1.1em}
/* 竖排：不用 writing-mode（iOS WebKit 在竖排 + 合成层时会把字形左半裁掉），改为逐字纵向堆叠 */
.vt{display:flex;flex-direction:row-reverse;align-items:flex-start;gap:var(--vgap,.9em)}
.vcol{display:flex;flex-direction:column;align-items:center}
.vcol i{display:block;font-style:normal;width:1.4em;line-height:1.3;text-align:center;margin-bottom:var(--vls,.2em)}
.vcol i.sp{height:1.3em}
.title-v{display:flex;flex-direction:column;align-items:center;font-family:var(--f-head);font-weight:400;font-size:clamp(66px, min(18.2vw, 9.5vh), 100px);line-height:1.02;color:var(--ink);padding:0 .02em}
.tch{position:relative;display:block;width:1.08em;text-align:center}
.tch b{display:block;font-weight:400;opacity:0;text-shadow:0 0 1px rgba(27,24,20,.35)}
body.go .tch b{animation:brushIn 1.5s calc(var(--t0,1.1s) + var(--d) * .4s) cubic-bezier(.45,.05,.3,1) both;
  -webkit-mask-image:linear-gradient(168deg,#000 0,#000 40%,transparent 60%);mask-image:linear-gradient(168deg,#000 0,#000 40%,transparent 60%);
  -webkit-mask-size:100% 280%;mask-size:100% 280%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
@keyframes brushIn{
  0%{opacity:.0;-webkit-mask-position:0 100%;mask-position:0 100%;transform:translate3d(0,6px,0) scale(1.045)}
  16%{opacity:1}
  100%{opacity:1;-webkit-mask-position:0 0;mask-position:0 0;transform:none}}
/* 落笔洇开的淡墨晕 */
.tch::after{content:"";position:absolute;left:8%;right:8%;top:10%;bottom:10%;border-radius:45%;background:radial-gradient(closest-side,rgba(27,24,20,.10),rgba(27,24,20,0));opacity:0;transform:scale(.6);pointer-events:none}
body.go .tch::after{animation:wetHalo 2.6s calc(var(--t0,1.1s) + var(--d) * .4s + .2s) var(--ease-ink) both}
@keyframes wetHalo{0%{opacity:0;transform:scale(.6)}35%{opacity:1}100%{opacity:.35;transform:scale(1.25)}}
.title-sub{font-size:15px;--vls:.36em;color:var(--ink2);opacity:0}
body.go .title-sub{animation:fadeUp 1.6s 2.5s var(--ease-ink) both}
.seal{display:block}
.seal svg{display:block;width:100%;height:100%}
.seal-title{position:relative;width:46px;height:46px;opacity:0;transform:rotate(-4deg)}
.seal-title svg{position:relative}
.seal-halo{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;inset:-6px;border-radius:6px;background:radial-gradient(closest-side,rgba(179,48,42,.28),rgba(179,48,42,0));opacity:0}
body.go .seal-title{animation:stampPress 1.1s 3.1s both}
body.go .seal-halo{animation:sealHalo 1.6s 3.55s ease-out both}
@keyframes stampPress{
  0%{opacity:0;transform:translate3d(-6px,-26px,0) scale(1.9) rotate(-16deg)}
  45%{opacity:1;transform:translate3d(0,0,0) scale(.9) rotate(-4deg)}
  62%{transform:scale(.94) rotate(-4deg)}
  100%{opacity:.93;transform:scale(1) rotate(-4deg)}}
.seal-title::before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;inset:8px;border-radius:4px;background:rgba(30,20,10,.26);filter:blur(5px);opacity:0;transform:translate3d(1px,3px,0);z-index:-1;pointer-events:none}
body.go .seal-title::before{animation:sealShadow 1.1s 3.1s both}
@keyframes sealShadow{0%{opacity:.5}45%{opacity:.35}100%{opacity:0}}
@keyframes sealHalo{0%{opacity:0;transform:scale(.6)}30%{opacity:1}100%{opacity:0;transform:scale(1.9)}}
.title-poem{position:absolute;top:calc(var(--sat) + 3.4vh);left:calc(var(--sal) + 4.5%);font-size:13px;--vls:.04em;--vgap:.42em;color:var(--ink3);opacity:0;z-index:2}
.title-poem .vcol i{line-height:1.16}
body.go .title-poem{animation:fadeUp 2s 2.9s var(--ease-ink) both}
@keyframes fadeUp{from{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}
.title-menu{position:absolute;left:0;right:0;bottom:calc(var(--sab) + 3.5vh);display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;z-index:2;padding:0 16px;max-width:100%;box-sizing:border-box;--ink-d:4.25s}
/* 菜单本身不整块淡入。笔触在题印落定后再洇开，字跟在墨后面。 */
body.go .title-menu{opacity:1;transform:none;animation:none}
body.intro-done.go .title-menu{--ink-d:2.05s}
.title-menu-main{display:flex;flex-direction:column;align-items:center;gap:12px}
/* 底栏排布见文末 v32：两行对幅 / 宽屏一行。此处只留字号初值。 */
.title-menu-sub{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-items:stretch;align-items:stretch;gap:8px 20px;width:min(100%,348px);max-width:100%}
.title-menu .title-subbtn{padding:8px 8px 7px;min-width:0;min-height:44px}
.title-menu .title-subbtn .bb-text{font-size:17px;letter-spacing:.14em;padding-left:.14em}
.title-menu .title-subbtn small{font-size:12px;letter-spacing:.04em;margin-top:2px;color:var(--ink2)}
.title-menu .brush-btn.dim{opacity:.55}
/* 短屏：标题上移略收，菜单贴底，避免与竖排大字相撞 */
@media (max-height:780px){
  .title-block{top:calc(var(--sat) + 4.5vh)}
  .title-v{font-size:clamp(60px, min(16.6vw, 8.8vh), 88px)}
  .title-poem{top:calc(var(--sat) + 3vh)}
  .title-menu{bottom:calc(var(--sab) + 2.2vh);gap:10px}
  .title-menu-main{gap:10px}
  .title-menu .brush-btn:not(.title-subbtn){padding:12px 40px 10px;min-width:160px}
  .title-menu .brush-btn:not(.title-subbtn) .bb-text{font-size:26px}
}
@media (max-height:700px) and (max-width:480px){
  .title-block{top:calc(var(--sat) + 2.4vh);right:calc(var(--sar) + 7%)}
  .title-v{font-size:clamp(54px, min(15.4vw, 8.6vh), 72px)}
  .title-side{gap:10px;padding-top:.6em}
  .seal-title{width:38px;height:38px}
  .title-sub{font-size:13px}
  .title-poem{font-size:12px;top:calc(var(--sat) + 2.4vh);left:calc(var(--sal) + 3.5%)}
  .title-menu{bottom:calc(var(--sab) + 1.5vh);gap:8px}
  .title-menu-main{gap:8px}
  .title-menu .brush-btn:not(.title-subbtn){padding:10px 34px 9px;min-width:148px}
  .title-menu .brush-btn:not(.title-subbtn) .bb-text{font-size:24px}
  .title-menu .title-subbtn{padding:6px 6px 5px;min-height:38px}
  .title-menu .title-subbtn .bb-text{font-size:16px}
}

/* 笔刷按钮 */
.brush-btn{position:relative;display:flex;flex-direction:column;align-items:center;padding:14px 46px 12px;min-width:176px;color:var(--paper-hi);transition:transform .25s var(--ease-ink)}
.brush-btn .bb-ink{position:absolute;top:0;right:-6px;bottom:0;left:-6px;inset:0 -6px;background:var(--brush-img) center/100% 100% no-repeat;opacity:var(--ink-a,.94);transition:transform .5s var(--ease-ink),opacity .3s;--ink-a:.94}
.brush-btn .bb-text{position:relative;font-family:var(--f-head);font-size:30px;letter-spacing:.32em;padding-left:.32em;line-height:1.1}
.brush-btn small{position:relative;font-size:11px;letter-spacing:.4em;opacity:.7;margin-top:3px}
.brush-btn:active{transform:scale(.95)}
.brush-btn:active .bb-ink{transform:scale(1.06,1.18)}
#btn-continue{color:var(--ink)}
#btn-continue .bb-ink{background-image:var(--brush-img-light);--ink-a:1;opacity:1}
.brush-btn.small{padding:11px 30px 10px;min-width:140px;min-height:46px}
.brush-btn.small .bb-text{font-size:22px;letter-spacing:.24em;padding-left:.24em}
.brush-btn.light{color:var(--ink)}
.brush-btn.light .bb-ink{background-image:var(--brush-img-paper)}
.brush-btn:disabled{opacity:.35}
/* 卷首笔触：画布收在笔触盒内，起笔收笔不被遮罩或盒子切掉。洇开结束后遮罩铺满整盒。 */
.title-menu .brush-btn{overflow:visible}
.title-menu .bb-ink{--ink-a:1;transition:transform .9s var(--ease-silk);top:-22px;right:-40px;bottom:-22px;left:-40px;inset:-22px -40px;overflow:visible}
.title-menu .title-subbtn .bb-ink{top:-14px;right:-18px;bottom:-14px;left:-18px;inset:-14px -18px}
.title-menu .bb-ink .live-ink{left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:transparent}
.title-menu .bb-text{--ink-a:1}
.title-menu small{--ink-a:.7}
body.go .title-menu .bb-ink{
  -webkit-mask-image:linear-gradient(96deg,#000 0%,#000 46%,rgba(0,0,0,.5) 58%,transparent 72%);
  mask-image:linear-gradient(96deg,#000 0%,#000 46%,rgba(0,0,0,.5) 58%,transparent 72%);
  -webkit-mask-size:340% 260%;mask-size:340% 260%;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:100% 50%;mask-position:100% 50%;
  -webkit-mask-clip:no-clip;mask-clip:no-clip;
  animation:inkSoak .9s linear var(--ink-d) both}
body.go .title-menu-main .brush-btn:nth-child(2) .bb-ink{animation-delay:calc(var(--ink-d) + .14s)}
body.go .title-menu-sub .title-subbtn:nth-child(1) .bb-ink{animation-delay:calc(var(--ink-d) + .26s)}
body.go .title-menu-sub .title-subbtn:nth-child(2) .bb-ink{animation-delay:calc(var(--ink-d) + .38s)}
body.go .title-menu-sub .title-subbtn:nth-child(3) .bb-ink{animation-delay:calc(var(--ink-d) + .5s)}
body.go .title-menu-sub .title-subbtn:nth-child(4) .bb-ink{animation-delay:calc(var(--ink-d) + .62s)}
@keyframes inkSoak{
  0%{opacity:calc(var(--ink-a) * .12);-webkit-mask-position:100% 50%;mask-position:100% 50%}
  22%{opacity:calc(var(--ink-a) * .4);-webkit-mask-position:78% 50%;mask-position:78% 50%}
  48%{opacity:calc(var(--ink-a) * .68);-webkit-mask-position:52% 50%;mask-position:52% 50%}
  74%{opacity:calc(var(--ink-a) * .88);-webkit-mask-position:28% 50%;mask-position:28% 50%}
  100%{opacity:var(--ink-a);-webkit-mask-image:linear-gradient(#000,#000);mask-image:linear-gradient(#000,#000)}}
body.go .title-menu .bb-text,
body.go .title-menu small{
  opacity:0;
  animation:inkWord .62s cubic-bezier(.16,.84,.28,1) calc(var(--ink-d) + .36s) both,textBreath 6s var(--ease-breath) calc(var(--ink-d) + 1.1s) infinite}
body.go .title-menu-main .brush-btn:nth-child(2) .bb-text,
body.go .title-menu-main .brush-btn:nth-child(2) small{animation-delay:calc(var(--ink-d) + .48s),calc(var(--ink-d) + 1.2s)}
body.go .title-menu-sub .title-subbtn:nth-child(1) .bb-text,
body.go .title-menu-sub .title-subbtn:nth-child(1) small{animation-delay:calc(var(--ink-d) + .58s),calc(var(--ink-d) + 1.3s)}
body.go .title-menu-sub .title-subbtn:nth-child(2) .bb-text,
body.go .title-menu-sub .title-subbtn:nth-child(2) small{animation-delay:calc(var(--ink-d) + .7s),calc(var(--ink-d) + 1.42s)}
body.go .title-menu-sub .title-subbtn:nth-child(3) .bb-text,
body.go .title-menu-sub .title-subbtn:nth-child(3) small{animation-delay:calc(var(--ink-d) + .82s),calc(var(--ink-d) + 1.54s)}
body.go .title-menu-sub .title-subbtn:nth-child(4) .bb-text,
body.go .title-menu-sub .title-subbtn:nth-child(4) small{animation-delay:calc(var(--ink-d) + .94s),calc(var(--ink-d) + 1.66s)}
body.go .title-menu .brush-btn small{animation-delay:calc(var(--ink-d) + .46s),calc(var(--ink-d) + 1.15s)}
@keyframes inkWord{from{opacity:0}to{opacity:var(--ink-a)}}
@media (prefers-reduced-motion:reduce){
  body.go .title-menu .bb-ink,body.go .title-menu .bb-text,body.go .title-menu small{
    animation:inkFade .28s ease .12s both!important;
    -webkit-mask-image:none!important;mask-image:none!important}
}
@keyframes inkFade{from{opacity:0}to{opacity:var(--ink-a)}}

/* ---------- 入道 ---------- */
.create-head{display:flex;align-items:baseline;gap:12px;padding:2vh 4px 0}
.trial-banner{margin:6px 4px 0;font-size:13.5px;line-height:1.7;letter-spacing:.04em;color:var(--zhu)}
.trial-banner[hidden]{display:none!important}
.chapter{font-size:13px;letter-spacing:.4em;color:var(--zhu)}
.ch-title{font-family:var(--f-head);font-weight:400;font-size:40px;letter-spacing:.2em}
.create-body{flex:1;display:flex;flex-direction:column;align-items:center;padding-top:2vh;min-height:0;overflow-y:auto;overflow-x:hidden}
.field{display:block;width:min(100%,320px);position:relative}
.field-label{display:block;font-size:13px;letter-spacing:.5em;color:var(--ink3);margin-bottom:4px}
.name-row{display:flex;align-items:center;gap:10px}
#inp-name{flex:1;min-width:0;font-family:var(--f-head);font-size:34px;letter-spacing:.18em;color:var(--ink);background:transparent;border:0;outline:0;padding:4px 2px;min-height:46px;
  -webkit-user-select:text;user-select:text;border-radius:0}
#inp-name::placeholder{color:rgba(110,100,87,.45)}
.field-line{display:block;height:9px;margin-top:2px;background:var(--brush-line) center/100% 100% no-repeat;opacity:.85}
.mini-seal{flex:none;display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:44px;font-family:var(--f-head);font-size:16px;color:var(--zhu);background:var(--brush-img-zhu-l) center/100% 80% no-repeat;padding:5px 9px 3px;letter-spacing:.1em;line-height:1;transform:rotate(3deg);transition:transform .2s}
.mini-seal:active{transform:rotate(3deg) scale(.9)}
.stone-wrap{--st:min(44vw,180px);margin:5.5vh 0 3vh;flex:none}
.stone{position:relative;width:var(--st);height:var(--st)}
.stone-ink{position:absolute;top:-12%;right:-12%;bottom:-12%;left:-12%;inset:-12%;background:var(--blot-stone) center/contain no-repeat;opacity:.9}
.stone-glow{position:absolute;top:14%;right:14%;bottom:14%;left:14%;inset:14%;border-radius:50%;opacity:0;transition:opacity 1.2s,background 1.2s;mix-blend-mode:screen}
.stone.testing .stone-ink{animation:stoneSpin 2.4s var(--ease-ink)}
@keyframes stoneSpin{0%{transform:rotate(0) scale(1)}40%{transform:rotate(80deg) scale(1.06)}100%{transform:rotate(180deg) scale(1)}}
.stone-center{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;display:grid;place-items:center;font-family:var(--f-head);font-size:46px;color:rgba(239,230,211,.9);transition:all .8s}
.el{position:absolute;font-family:var(--f-head);font-size:22px;color:var(--ink3);transition:color .6s,transform .6s,text-shadow .6s;left:50%;top:50%;width:1.2em;margin:-.6em 0 0 -.6em;text-align:center;line-height:1.2em}
.el-0{transform:translate(calc(var(--st)*0),calc(var(--st)*-.5))}
.el-1{transform:translate(calc(var(--st)*.48),calc(var(--st)*-.155))}
.el-2{transform:translate(calc(var(--st)*.3),calc(var(--st)*.42))}
.el-3{transform:translate(calc(var(--st)*-.3),calc(var(--st)*.42))}
.el-4{transform:translate(calc(var(--st)*-.48),calc(var(--st)*-.155))}
.el.on{color:var(--c);text-shadow:0 0 12px var(--c)}
.el::after{content:'';position:absolute;left:50%;top:calc(100% + 4px);width:7px;height:7px;margin-left:-4px;border:1px solid currentColor;opacity:.45;box-sizing:border-box}
.el-0::after{transform:rotate(45deg)}
.el-1::after{width:2px;border:0;border-left:1px solid currentColor;border-right:1px solid currentColor;box-shadow:-3px 0 0 currentColor,3px 0 0 currentColor;margin-left:-1px}
.el-2::after{border-radius:50%}
.el-3::after{width:0;height:0;border:4px solid transparent;border-top:0;border-bottom:7px solid currentColor}
.el-4::after{border-top-width:2px;border-bottom-width:2px}
.el.on::after{opacity:1;background:currentColor;outline:1px solid var(--ink);outline-offset:3px}
.el-1.on::after,.el-3.on::after{background:transparent}
.lg-result{width:min(100%,340px);text-align:center;min-height:150px}
.lg-name{font-family:var(--f-head);font-size:36px;letter-spacing:.2em;padding-left:.2em;min-height:46px;color:var(--ink)}
.lg-name .lg-el{color:var(--zhu);font-size:.5em;margin-right:.3em;letter-spacing:.06em;vertical-align:.25em}
.lg-flavor{font-size:15.5px;line-height:1.95;color:var(--ink2);text-align:justify;margin-top:6px}
.lg-flavor.dim{color:var(--ink3);text-align:center}
.lg-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;margin-top:10px;font-size:13px;color:var(--ink2);letter-spacing:.08em}
.wx-scale,.wx-note{flex:1 0 100%}
.wx-scale{display:flex;flex-direction:column;align-items:center;gap:3px}
.wx-scale b{font-weight:400;color:var(--ink);font-size:15px;letter-spacing:.12em}
.wx-scale em{font-style:normal;font-size:12px;color:var(--ink2);letter-spacing:.14em}
.wx-rule{display:flex;gap:0;margin-top:2px}
.wx-rule i{font-style:normal;min-width:1.2em;text-align:center;font-size:12px;line-height:1.4;color:var(--ink2);border-bottom:1px solid rgba(27,24,20,.28);padding:1px 0 3px}
.wx-rule i.on{color:var(--zhu);border-bottom:2px solid var(--zhu)}
.wx-note{margin:2px 0 0;font-size:12px;line-height:1.65;color:var(--ink2);letter-spacing:.04em;text-align:center}
.lg-stats b{font-weight:400;color:var(--ink);font-size:16px}
.create-actions{display:flex;justify-content:center;gap:12px;padding-bottom:2vh;flex-wrap:wrap}
.create-actions .brush-btn:not(.primary){color:var(--ink)}
.create-actions .brush-btn:not(.primary) .bb-ink{background-image:var(--brush-img-light)}

/* ---------- 主界面 ---------- */
.hud{flex:none;padding:0 2px}
.hud-top{display:flex;align-items:center;gap:12px}
.realm-block{display:flex;align-items:baseline;gap:6px;flex:none}
.realm-stage-row{display:flex;align-items:center;gap:6px;flex:none}
.realm-name{font-family:var(--f-head);font-size:40px;line-height:1;letter-spacing:.06em}
.realm-stage{font-size:16px;color:var(--ink2);letter-spacing:.15em}
.trial-seal{flex:none;display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 5px 0 6px;
  font-family:var(--f-head);font-size:12px;letter-spacing:.14em;line-height:1;color:#f6f0e2;background:#9a332c;border-radius:2px;
  transform:rotate(-8deg);box-shadow:1px 1px 0 rgba(80,20,16,.28)}
.trial-seal[hidden]{display:none!important}
.who{flex:1;min-width:0;padding-left:12px;border-left:1px solid rgba(27,24,20,.18)}
.who-name{font-family:var(--f-head);font-size:20px;letter-spacing:.12em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who-sub{font-size:12px;color:var(--ink2);letter-spacing:.06em;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.next-line{margin:7px 2px 0;font-size:12px;line-height:1.45;letter-spacing:.06em;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (min-width:760px){
  .next-line{white-space:normal;overflow:visible;text-overflow:clip}
}
.menu-seal{width:44px;height:44px;padding:4px;box-sizing:border-box;flex:none;transform:rotate(4deg);opacity:.92;transition:transform .2s}
.menu-seal:active{transform:rotate(4deg) scale(.88)}
.menu-seal svg{width:100%;height:100%;display:block}
.bars{margin-top:12px;display:flex;flex-direction:column;gap:9px}
.bar{display:flex;align-items:center;gap:10px}
.bar-label{flex:none;font-size:12px;letter-spacing:.2em;color:var(--ink2);width:3em}
.bar-num{flex:none;font-size:12px;color:var(--ink2);min-width:6.5em;text-align:right;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.bar-track{position:relative;flex:1;height:11px}
.bar-bg,.bar-fill{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:var(--brush-bar) center/100% 100% no-repeat}
.bar-bg{opacity:.12}
.bar-fill{clip-path:inset(0 calc(100% - var(--p,0%)) 0 0);-webkit-clip-path:inset(0 calc(100% - var(--p,0%)) 0 0);transition:clip-path 1.2s var(--ease-ink),-webkit-clip-path 1.2s var(--ease-ink);opacity:.88}
.bar-fill.full{background-image:var(--brush-bar-zhu)}
.bar-tip{position:absolute;top:50%;left:var(--p,0%);width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:var(--ink);transition:left 1.2s var(--ease-ink);opacity:.0}
.incense{position:relative;flex:1;height:11px}
.stick{position:absolute;left:0;top:50%;height:9px;margin-top:-4.5px;width:var(--life,100%);right:auto;border-radius:1px;transition:width 1.2s var(--ease-ink);
  background:linear-gradient(90deg,rgba(255,248,236,.28),rgba(255,248,236,0) 62%),linear-gradient(90deg,#2c261f 0%,#5c4636 55%,#8a6a4e 100%)}
/* 寿元不足三分之一：墨色慢慢近朱砂，不闪。真正无多时再沉一笔，仍不跳。 */
.bar-life.thin .stick{background:linear-gradient(90deg,rgba(255,244,232,.2),rgba(255,236,220,0) 64%),linear-gradient(90deg,#3a3128 0%,#6d4e42 70%,#a45c4e 100%)}
.bar-life.thin .bar-num{color:#7a4036}
.bar-life.thin .ember{box-shadow:0 0 3px 1px rgba(164,84,68,.22)}
.incense::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;border-top:1px dotted rgba(110,100,87,.45)}
.ember{position:absolute;top:50%;left:var(--life,100%);width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#d8452f;box-shadow:0 0 6px 2px rgba(216,69,47,.45);transition:left 1.2s var(--ease-ink);animation:ember 2.2s ease-in-out infinite}
@keyframes ember{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}
.bar-life.low .bar-num{color:var(--zhu)}
.bar-life.low .stick{background:linear-gradient(90deg,rgba(255,228,216,.2),rgba(255,228,216,0) 52%),linear-gradient(90deg,#5c3832 0%,#8e4038 64%,#b84a40 100%)}
.chips{display:flex;justify-content:space-between;margin-top:11px;padding:7px 2px 0;border-top:1px solid rgba(27,24,20,.1)}
.chip{display:flex;align-items:baseline;gap:5px;font-size:12px;color:var(--ink3);letter-spacing:.08em}
.chip b{font-weight:400}
.chip em{font-style:normal;color:var(--ink);font-size:15px;letter-spacing:.04em}
.chip i{font-style:normal;color:var(--zhu);font-size:12px}
.chip.flash em{animation:chipFlash .9s}
@keyframes chipFlash{0%{color:var(--zhu);transform:scale(1.2)}100%{color:var(--ink);transform:none}}

/* 卷轴日志 */
.scroll{position:relative;flex:1;min-height:0;margin:12px 4px 6px;display:flex;flex-direction:column}
.roller{position:relative;flex:none;height:15px;margin:0 -10px;border-radius:7px;z-index:2;
  filter:drop-shadow(0 3px 4px rgba(30,20,10,.28)) drop-shadow(0 -1px 2px rgba(30,20,10,.12));
  background:linear-gradient(180deg,#5b4433 0%,#2d2119 35%,#1a130e 60%,#3c2d22 85%,#20170f 100%);box-shadow:0 2px 3px rgba(30,20,10,.35)}
.roller::before,.roller::after{content:"";position:absolute;top:-2px;width:14px;height:19px;border-radius:4px;
  background:linear-gradient(180deg,#e9e2cf,#c7bc9f 45%,#a59a7d 70%,#d8cfb8);box-shadow:0 1px 2px rgba(0,0,0,.3)}
.roller::before{left:-10px}.roller::after{right:-10px}
.scroll-paper{position:relative;flex:1;min-height:0;margin:0 2px;display:flex;flex-direction:column;
  --juan-h:clamp(110px,31vw,140px);
  background:linear-gradient(90deg,rgba(60,80,90,.10),rgba(60,80,90,0) 9px,rgba(60,80,90,0) calc(100% - 9px),rgba(60,80,90,.10)),
             linear-gradient(rgba(250,246,234,.80),rgba(250,246,234,.80)),var(--paper-img);background-size:auto,auto,256px;
  box-shadow:inset 0 6px 8px -6px rgba(40,30,20,.35),inset 0 -6px 8px -6px rgba(40,30,20,.35)}
.scroll-paper::after{content:"";position:absolute;left:9px;right:9px;bottom:0;height:38%;background:var(--mtn-img) center bottom/100% auto no-repeat;opacity:.13;pointer-events:none}
.scroll-paper::before{content:"";position:absolute;top:0;right:9px;bottom:0;left:9px;inset:0 9px;border-left:1px solid rgba(60,80,90,.16);border-right:1px solid rgba(60,80,90,.16);pointer-events:none}
.log{position:relative;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 24px 22px;scroll-behavior:smooth;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 16px),transparent);mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 16px),transparent)}
.entry{margin-bottom:18px;position:relative}
.entry-time{font-size:11.5px;letter-spacing:.24em;color:var(--zhu);margin-bottom:3px;opacity:.85}
.entry-title{font-family:var(--f-head);font-size:21px;letter-spacing:.14em;margin-bottom:2px}
.entry-text{font-size:16px;line-height:1.95;color:var(--ink);text-align:justify;letter-spacing:.02em}
.entry.sys .entry-text{color:var(--ink3);font-size:14.5px}
.entry.warn .entry-text{color:#7a2a22}
.entry.gold .entry-text{color:var(--ink)}
.entry.gold .entry-title{color:var(--zhu)}
.entry-tags{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:12px;color:var(--ink3);letter-spacing:.06em}
.entry-tags span.up{color:#2f4f45}.entry-tags span.down{color:#9a3a2e}
.entry-div{display:block;width:46%;height:7px;margin:0 auto 16px;color:var(--ink);opacity:.18}
.log > .entry-div:first-child{display:none}
.entry-div svg{display:block;width:100%;height:100%}
.entry.fresh{animation:none}

.status-line{flex:none;min-height:20px;height:auto;text-align:center;font-size:12px;line-height:20px;letter-spacing:.18em;color:var(--ink2);transition:opacity .4s}
.status-line.zhu{color:var(--zhu)}

/* 动作 */
.actions{flex:none;display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:6px 0 4px;position:relative}
.act{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:78px;overflow:hidden;transition:transform .2s var(--ease-ink),opacity .3s}
.act-ink{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-40px 0 0 -38px;background:var(--blot) center/contain no-repeat;opacity:.16;transition:transform .5s var(--ease-ink),opacity .5s}
.act:nth-child(2) .act-ink{background-image:var(--blot2)}.act:nth-child(3) .act-ink{background-image:var(--blot3)}.act:nth-child(4) .act-ink{background-image:var(--blot4)}
.act-t{position:relative;font-family:var(--f-head);font-size:25px;letter-spacing:.06em;line-height:1.1}
.act small{position:relative;font-size:12px;color:var(--ink2);letter-spacing:.12em;margin-top:2px}
.act:active{transform:scale(.92)}
.act:active .act-ink,.act.pulse .act-ink{opacity:.32;transform:scale(1.18) rotate(12deg)}
.act:disabled{opacity:.4}
.act.busy{opacity:.55}
.break-seal{position:absolute;left:50%;bottom:calc(var(--sab) + 112px);width:84px;height:84px;margin-left:-42px;z-index:5;animation:sealIn .7s cubic-bezier(.3,1.6,.5,1) both}
.break-seal svg{position:relative;width:100%;height:100%;display:block;transform:rotate(-3deg)}
.break-seal::before{content:"";position:absolute;top:-26px;right:-26px;bottom:-26px;left:-26px;inset:-26px;border-radius:50%;background:radial-gradient(circle,rgba(179,48,42,.35),rgba(179,48,42,0) 68%);animation:sealGlow 2.4s ease-in-out infinite}
.break-seal:active svg{transform:rotate(-3deg) scale(.9)}
@keyframes sealIn{0%{opacity:0;transform:scale(2.2) rotate(-12deg)}100%{opacity:1;transform:none}}
@keyframes sealGlow{0%,100%{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}
.ripple{position:fixed;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;pointer-events:none;z-index:50;
  background:radial-gradient(circle,rgba(27,24,20,.22),rgba(27,24,20,.08) 45%,rgba(27,24,20,0) 70%);animation:ripple .9s var(--ease-ink) forwards}
@keyframes ripple{from{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(1.6)}}

/* ---------- 奇遇横卷 ---------- */
.modal{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:calc(var(--sat) + 16px) calc(var(--sar) + 10px) calc(var(--sab) + 16px) calc(var(--sal) + 10px)}
.modal:not(.open){pointer-events:none}
.modal-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:radial-gradient(ellipse at 50% 50%,rgba(20,17,14,.38),rgba(20,17,14,.62));opacity:0;transition:opacity .6s}
.modal.open .modal-shade{opacity:1}
.hscroll{position:relative;width:min(100%,560px);max-height:100%;display:flex;align-items:stretch;--half:180px}
.hroller{position:relative;flex:none;width:17px;margin:-14px 0;border-radius:8px;z-index:3;
  background:linear-gradient(90deg,#5b4433 0%,#2d2119 35%,#1a130e 60%,#3c2d22 85%,#20170f 100%);box-shadow:2px 0 4px rgba(20,12,6,.4);
  transition:transform .95s var(--ease-ink)}
.hroller::before,.hroller::after{content:"";position:absolute;left:-2px;width:21px;height:14px;border-radius:4px;background:linear-gradient(90deg,#e9e2cf,#c7bc9f 45%,#a59a7d 70%,#d8cfb8)}
.hroller::before{top:-10px}.hroller::after{bottom:-10px}
.hroller.left{transform:translateX(var(--half))}
.hroller.right{transform:translateX(calc(var(--half) * -1))}
.hpaper{position:relative;flex:1;min-width:0;overflow:hidden;
  background:linear-gradient(180deg,rgba(60,80,90,.13),rgba(60,80,90,0) 12px,rgba(60,80,90,0) calc(100% - 12px),rgba(60,80,90,.13)),
             linear-gradient(rgba(249,245,233,.86),rgba(249,245,233,.86)),var(--paper-img);background-size:auto,auto,256px;
  clip-path:inset(0 50% 0 50%);-webkit-clip-path:inset(0 50% 0 50%);transition:clip-path .95s var(--ease-ink),-webkit-clip-path .95s var(--ease-ink);
  box-shadow:0 10px 30px rgba(0,0,0,.25);contain:paint}
.hpaper::after{content:"";position:absolute;left:0;right:0;bottom:0;height:42%;background:var(--mtn-img) center bottom/100% auto no-repeat;opacity:.16;pointer-events:none}
.hpaper-inner{position:relative;z-index:1}
.hpaper::before{content:"";position:absolute;top:12px;right:0;bottom:12px;left:0;inset:12px 0;border-top:1px solid rgba(60,80,90,.18);border-bottom:1px solid rgba(60,80,90,.18);pointer-events:none}
.modal.open .hpaper{clip-path:inset(0 0 0 0);-webkit-clip-path:inset(0 0 0 0)}
.modal.open .hroller{transform:none}
.hpaper-inner{display:flex;flex-direction:row-reverse;gap:10px;padding:26px 16px 22px 18px;max-height:calc(100vh - var(--sat) - var(--sab) - 40px);max-height:calc(100dvh - var(--sat) - var(--sab) - 40px);overflow:hidden}
.ev-side{flex:none;display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:4px}
.ev-title{font-family:var(--f-head);font-weight:400;font-size:30px;--vls:.08em;color:var(--ink)}
.seal-small{width:30px;height:30px;transform:rotate(5deg);opacity:.9}
.ev-main{flex:1;min-width:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:10px;border-right:1px solid rgba(27,24,20,.1)}
.ev-text{font-size:16.5px;line-height:2;text-align:justify;color:var(--ink);letter-spacing:.02em}
.foe-slip{position:relative;margin:12px 0 2px;padding:10px 36px 9px 12px;
  border:1px solid rgba(27,24,20,.16);
  background:linear-gradient(180deg,rgba(249,245,233,.62),rgba(249,245,233,.28));
  box-shadow:inset 0 0 0 1px rgba(255,252,245,.4)}
.foe-slip::before{content:"敌";position:absolute;right:8px;top:8px;width:22px;height:22px;line-height:20px;
  text-align:center;font-family:var(--f-head);font-size:13px;letter-spacing:.12em;color:var(--zhu);
  border:1px solid rgba(157,52,46,.45);transform:rotate(8deg);opacity:.8}
.foe-name{font-family:var(--f-head);font-size:18px;letter-spacing:.12em;color:var(--ink);line-height:1.35}
.foe-name em{font-style:normal;margin-left:8px;font-family:var(--f-body);font-size:12px;letter-spacing:.14em;color:var(--ink3)}
.foe-realm{margin-top:2px;font-size:14px;letter-spacing:.16em;color:var(--ink2)}
.foe-read{margin-top:1px;font-size:14px;letter-spacing:.08em;color:var(--zhu)}
.foe-rough{font-size:12.5px;letter-spacing:.08em;color:var(--ink3)}
.foe-slip.roster .foe-row{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline;padding:5px 0;border-bottom:1px solid rgba(27,24,20,.08)}
.foe-slip.roster .foe-row:last-child{border-bottom:0;padding-bottom:0}
.foe-slip.roster .foe-row b{font-weight:500;letter-spacing:.08em}
.foe-slip.roster .foe-row em{font-style:normal;color:var(--ink3);font-size:12px}
.foe-slip.roster .foe-row span{margin-left:auto;color:var(--zhu);font-size:13px;letter-spacing:.06em}
.foe-slip.roster .foe-row small{flex:none;width:100%;color:var(--ink3);font-size:12px;letter-spacing:.08em}
.manual-slip{position:relative;margin:14px 0 2px;padding:10px 36px 10px 12px;
  border:1px solid rgba(27,24,20,.16);
  background:linear-gradient(180deg,rgba(249,245,233,.72),rgba(249,245,233,.3));
  box-shadow:inset 0 0 0 1px rgba(255,252,245,.45)}
.manual-slip::before{content:"卷";position:absolute;right:8px;top:8px;width:22px;height:22px;line-height:20px;
  text-align:center;font-family:var(--f-head);font-size:13px;letter-spacing:.12em;color:var(--zhu);
  border:1px solid rgba(157,52,46,.45);transform:rotate(-6deg);opacity:.85}
.manual-kicker{font-size:12px;letter-spacing:.16em;color:var(--ink3)}
.manual-name{font-family:var(--f-head);font-size:18px;letter-spacing:.1em;color:var(--ink);line-height:1.4;margin-top:2px}
.manual-now,.manual-next{font-size:13.5px;letter-spacing:.04em;line-height:1.65;color:var(--ink2)}
.manual-next{color:var(--zhu)}
.manual-fade{font-size:12.5px;letter-spacing:.04em;line-height:1.6;color:var(--ink3)}
.manual-choices{margin-top:2px}
.gf-deep{margin-top:4px;font-size:12.5px;letter-spacing:.05em;line-height:1.65;color:var(--ink3)}
.ev-choices{margin-top:14px;display:flex;flex-direction:column}
.choice{position:relative;display:flex;align-items:baseline;justify-content:space-between;gap:10px;text-align:left;padding:13px 6px 12px 26px;font-size:17px;color:var(--ink);opacity:0;animation:fadeUp .7s var(--ease-ink) both}
.choice::before{content:"";position:absolute;left:4px;top:50%;width:12px;height:12px;margin-top:-6px;background:var(--blot) center/contain no-repeat;opacity:.75;transition:transform .3s}
.choice::after{content:"";position:absolute;left:24px;right:0;bottom:0;height:5px;background:var(--brush-line) center/100% 100% no-repeat;opacity:.16}
.choice small{flex:none;font-size:12px;color:var(--ink3);letter-spacing:.1em}
.choice:active{background:rgba(27,24,20,.05)}
.choice:active::before{transform:scale(1.5)}
.choice:disabled{opacity:.32!important}
.ev-choices.chosen .choice{animation:none;pointer-events:none;cursor:default}
.ev-choices.chosen .choice:not(.picked){opacity:.32;height:0;min-height:0;margin:0;padding-top:0;padding-bottom:0;overflow:hidden}
.ev-choices.chosen .choice.picked{color:var(--ink3);opacity:.72}
@keyframes inkShake{0%,100%{transform:none}25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
.ev-choices.ink-shake{animation:inkShake .45s var(--ease-ink)}
@media (prefers-reduced-motion:reduce){
  .ev-choices.ink-shake{animation:none;box-shadow:inset 0 0 0 1px rgba(179,48,42,.45)}
}
.ev-result{margin-top:10px}
.ev-result .r-text{font-size:16px;line-height:2;text-align:justify;color:var(--ink2)}
.ev-result .entry-tags{margin-top:8px;font-size:12.5px}
.ev-result .brush-btn{margin:18px auto 4px}

/* ---------- 抽屉 ---------- */
.sheet{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:25}
.sheet-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:rgba(20,17,14,.45);opacity:0;transition:opacity .4s}
.sheet.open .sheet-shade{opacity:1}
.sheet-panel{position:absolute;left:0;right:0;bottom:0;max-width:640px;margin:0 auto;max-height:72vh;max-height:72dvh;display:flex;flex-direction:column;
  padding:10px 22px calc(var(--sab) + 20px);border-radius:14px 14px 0 0;
  background:linear-gradient(rgba(249,245,233,.9),rgba(249,245,233,.9)),var(--paper-img);background-size:auto,256px;
  box-shadow:0 -8px 30px rgba(0,0,0,.25);transform:translate3d(0,105%,0);transition:transform .55s var(--ease-ink)}
.sheet.open .sheet-panel{transform:none}
.sheet-handle{width:44px;height:6px;margin:0 auto 10px;background:var(--brush-bar) center/100% 100% no-repeat;opacity:.3}
.sheet-title{font-family:var(--f-head);font-weight:400;font-size:28px;letter-spacing:.3em;text-align:center;margin-bottom:8px}
.sheet-body{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;flex:1;scrollbar-gutter:stable}
.item{display:flex;align-items:center;gap:14px;padding:14px 2px;border-bottom:1px solid rgba(27,24,20,.08)}
.item-name{font-family:var(--f-head);font-size:21px;letter-spacing:.1em}
.item-name em{font-style:normal;font-family:var(--f-body);font-size:13px;color:var(--zhu);margin-left:6px}
.item-desc{font-size:13px;color:var(--ink2);margin-top:2px;line-height:1.6}
.item-info{flex:1;min-width:0}
.item-use{flex:none;min-height:44px;min-width:64px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--f-head);font-size:17px;color:var(--zhu);background:var(--brush-img-zhu-l) center/100% 100% no-repeat;padding:6px 14px 4px;letter-spacing:.15em;transition:transform .2s var(--ease-ink),filter .2s}
.item-use:active{transform:scale(.94);filter:brightness(.92) saturate(1.3)}
.empty{text-align:center;color:var(--ink3);padding:26px 0;font-size:15px;letter-spacing:.2em}
.menu-list{display:flex;flex-direction:column;gap:6px;padding:4px 0 10px}
.menu-item{padding:15px 4px;text-align:center;font-size:17px;letter-spacing:.3em;border-bottom:1px solid rgba(27,24,20,.08)}
.menu-item.danger{color:var(--zhu)}
.menu-note{font-size:13px;line-height:1.9;color:var(--ink3);text-align:center;padding:6px 10px 0}

/* ---------- 破境 ---------- */
.bt{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;color:var(--paper-hi);
  padding:calc(var(--sat) + 16px) 22px calc(var(--sab) + 24px);gap:0}
.bt-shade{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;inset:-2px;background:radial-gradient(ellipse 85% 60% at 50% 45%,rgba(18,16,14,.72),rgba(12,10,9,.97) 70%,rgb(10,8,7) 100%);opacity:0;transition:opacity 1.1s .15s}
.bt.go .bt-shade{opacity:1}
.bt-ink{display:none}
.bt.sweep.reveal .bt-half{animation:bigInk .7s var(--ease-ink) forwards}
.bt.sweep .bt-big{clip-path:inset(0 100% 0 0)}
.bt.sweep.reveal .bt-big{animation:brushWipe .7s linear forwards}
.bt.brush-on .bt-big{position:absolute;left:0;right:0;top:13%;width:max-content;margin:0 auto;z-index:5;color:#1e1a16 !important;text-shadow:none !important}
.brush-paper{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:2;pointer-events:none;background-color:#efe6d3;background-image:var(--paper-img);background-size:256px;opacity:0}
.ink-pass.brush-pass{z-index:3}
@keyframes brushWipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.bt-stage{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;z-index:1}
.bt-ring{position:absolute;left:50%;top:42%;width:58vmin;height:58vmin;margin:-29vmin 0 0 -29vmin;border-radius:50%;border:1px solid rgba(239,230,211,.0);opacity:0}
.bt-ring-2{width:78vmin;height:78vmin;margin:-39vmin 0 0 -39vmin;border-style:dashed}
.bt.charge .bt-ring{animation:ring 1.6s ease-out infinite}
.bt.charge .bt-ring-2{animation:ring 2.2s ease-out .3s infinite}
@keyframes ring{0%{opacity:.0;transform:scale(1.4);border-color:rgba(239,230,211,.5)}30%{opacity:.8}100%{opacity:0;transform:scale(.2);border-color:rgba(239,230,211,.1)}}
.bt-lines{position:relative;z-index:2;min-height:3.2em;max-width:min(92vw,420px);text-align:center;font-size:15px;line-height:2;letter-spacing:.18em;color:rgba(239,230,211,.85)}
.bt-big{position:relative;z-index:2;height:1.2em;margin:8px 0 0;font-family:var(--f-cao);font-size:clamp(72px,22vw,140px);line-height:1.15;color:var(--paper-hi);white-space:nowrap;max-width:min(96vw,520px);width:max-content;min-width:2.2em}
.bt-sub{position:relative;z-index:2;margin-top:6px;font-size:12px;letter-spacing:.22em;color:rgba(212,176,106,.75);min-height:1.2em;opacity:0;transition:opacity .6s .3s;max-width:min(92vw,360px);text-align:center;padding:0 8px;box-sizing:border-box}
.bt.go .bt-sub{opacity:1}
.bt-half{position:absolute;left:50%;top:0;transform:translateX(-50%);opacity:0}
.bt-half.a{clip-path:polygon(0 0,100% 0,100% 44%,0 60%)}
.bt-half.b{clip-path:polygon(0 60%,100% 44%,100% 100%,0 100%)}
.bt.reveal .bt-half{animation:bigInk 1.6s var(--ease-ink) forwards}
@keyframes bigInk{0%{opacity:0;transform:translateX(-50%) scale(1.42)}55%{opacity:1;transform:translateX(-50%) scale(1.03)}100%{opacity:1;transform:translateX(-50%) scale(1)}}
.bt.fail.crack .bt-half.a{animation:crackA 1.2s cubic-bezier(.5,0,.6,1) forwards}
.bt.fail.crack .bt-half.b{animation:crackB 1.2s cubic-bezier(.5,0,.6,1) forwards}
@keyframes crackA{from{opacity:1;transform:translateX(-50%)}to{opacity:.25;transform:translate(-56%,-10px) rotate(-5deg)}}
@keyframes crackB{from{opacity:1;transform:translateX(-50%)}to{opacity:.25;transform:translate(-44%,14px) rotate(4deg)}}
.bt-stamp{position:relative;width:78px;height:78px;margin-top:6px;opacity:0}
.bt-stamp svg{width:100%;height:100%;display:block}
.bt.stamped .bt-stamp{animation:stampBig .6s cubic-bezier(.3,1.7,.5,1) forwards}
@keyframes stampBig{0%{opacity:0;transform:scale(3) rotate(-20deg)}100%{opacity:1;transform:rotate(-6deg)}}
.bt.fail .bt-stamp{filter:saturate(.45) brightness(.85)}
.bt-text{position:relative;z-index:2;width:100%;max-width:min(88vw,400px);margin-top:12px;font-size:15px;line-height:1.9;text-align:justify;color:rgba(239,230,211,.92);min-height:2.8em;max-height:22vh;overflow:auto;box-sizing:border-box;padding:0 4px}
.bt-close{position:relative;z-index:2;margin-top:12px;min-height:44px;flex-shrink:0}
.bt.leave{animation:btLeave 1s var(--ease-ink) forwards}
@keyframes btLeave{to{opacity:0;transform:scale(1.03)}}

/* ===== 破境分境视觉 · v0.13+ VFX ===== */
.bt-orb,.bt-infant,.bt-pillar,.bt-clouds,.bt-veins,.bt-bolts,.bt-stairs{position:absolute;left:50%;top:42%;pointer-events:none}
.bt-orb{width:0;height:0;opacity:0;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 0 rgba(214,170,90,0)}
.bt-infant{width:72px;height:96px;margin:-48px 0 0 -36px;opacity:0;background:radial-gradient(ellipse 55% 40% at 50% 28%,rgba(239,230,211,.55),transparent 70%),
  radial-gradient(ellipse 40% 50% at 50% 72%,rgba(239,230,211,.25),transparent 70%);filter:blur(.4px)}
.bt-pillar{width:10px;height:0;margin:0 0 0 -5px;opacity:0;background:linear-gradient(180deg,rgba(239,230,211,.0),rgba(239,230,211,.55) 30%,rgba(120,100,70,.35));
  box-shadow:0 0 24px rgba(214,170,90,.25);transform-origin:50% 100%;top:auto;bottom:38%}
.bt-veins{width:0;height:0;transform:translate(-50%,-50%)}
.bt-veins i{position:absolute;left:0;top:0;width:2px;height:42vmin;background:linear-gradient(180deg,rgba(120,140,110,0),rgba(120,140,110,.55),rgba(27,24,20,.8));
  transform:rotate(var(--a)) translateY(-8vmin);opacity:0;transform-origin:50% 0}
.bt-clouds{width:120vmax;height:70vmax;margin:-35vmax 0 0 -60vmax;top:28%}
.bt-clouds i{position:absolute;left:calc(8% + var(--i) * 16%);top:calc(10% + var(--i) * 8%);width:42vmax;height:18vmax;border-radius:50%;
  background:radial-gradient(ellipse,rgba(40,38,42,.55),rgba(20,18,22,0) 70%);opacity:0;filter:blur(8px)}
.bt-bolts{width:0;height:0;transform:translate(-50%,-50%)}
.bt-bolts i{position:absolute;width:3px;height:38vmin;left:0;top:0;background:linear-gradient(180deg,rgba(236,220,160,.95),rgba(120,140,200,.2));
  opacity:0;transform:rotate(calc(-25deg + var(--i) * 18deg)) translateY(-4vmin);filter:drop-shadow(0 0 6px rgba(200,210,255,.6));transform-origin:50% 0}
.bt-stairs{width:60vmin;height:50vmin;margin:-10vmin 0 0 -30vmin;top:48%}
.bt-stairs i{position:absolute;left:50%;width:calc(18% + var(--i) * 10%);height:3px;margin-left:calc(-9% - var(--i) * 5%);
  top:calc(var(--i) * 11%);background:linear-gradient(90deg,transparent,rgba(236,210,140,.55),transparent);opacity:0}
.bt-stairs i.bt-scroll{width:28vmin;height:42vmin;margin-left:-14vmin;top:calc(-8% + var(--i) * 6%);left:calc(35% + var(--i) * 12%);
  background:linear-gradient(180deg,rgba(239,230,211,.12),rgba(239,230,211,.04));box-shadow:inset 0 0 0 1px rgba(239,230,211,.15);border-radius:2px}

/* r0 筑基：石脉 · 青墨 */
.bt.r0 .bt-shade{background:radial-gradient(ellipse 85% 60% at 50% 48%,rgba(28,36,30,.75),rgba(12,14,12,.97) 72%,rgb(8,10,9) 100%)}
.bt.r0.charge .bt-veins i{animation:veinIn 1.4s var(--ease-ink) calc(var(--i) * .08s) forwards}
@keyframes veinIn{0%{opacity:0;height:8vmin}100%{opacity:.85;height:42vmin}}
.bt.r0.glory .bt-pillar{animation:pillarUp 1.1s var(--ease-ink) forwards}
@keyframes pillarUp{0%{opacity:0;height:0}100%{opacity:1;height:28vmin}}
.bt.r0.glory .bt-glow{background:radial-gradient(circle,rgba(140,160,120,.35),transparent 65%)}
.bt.r0.glory .bt-big{color:#e8efe4;text-shadow:0 0 18px rgba(140,160,120,.45)}
.bt.r0 .bt-ring{border-color:rgba(140,160,120,.35)}

/* r1 金丹：炉火 · 朱金 */
.bt.r1 .bt-shade{background:radial-gradient(ellipse 80% 55% at 50% 44%,rgba(70,32,18,.7),rgba(16,10,8,.97) 70%,rgb(10,8,6) 100%)}
.bt.r1.charge .bt-orb{animation:orbCharge 1.8s ease-in-out infinite;width:18vmin;height:18vmin;opacity:.55;
  background:radial-gradient(circle,rgba(255,200,120,.9),rgba(179,48,42,.45) 45%,transparent 70%)}
@keyframes orbCharge{0%,100%{transform:translate(-50%,-50%) scale(.85);filter:brightness(.9)}50%{transform:translate(-50%,-50%) scale(1.08);filter:brightness(1.25)}}
.bt.r1.glory .bt-orb{animation:orbBloom 1.2s var(--ease-ink) forwards;width:28vmin;height:28vmin}
@keyframes orbBloom{0%{opacity:.4;transform:translate(-50%,-50%) scale(.4)}60%{opacity:1}100%{opacity:.9;transform:translate(-50%,-50%) scale(1);box-shadow:0 0 60px 10px rgba(214,170,90,.45)}}
.bt.r1.glory .bt-rays{filter:sepia(.4) saturate(1.3)}
.bt.r1.glory .bt-big{color:#fff0d2;text-shadow:0 0 24px rgba(255,180,80,.65)}
.bt.r1 .bt-ring{border-color:rgba(214,140,70,.5)}
.bt.r1.charge .bt-ring{animation:ring 1.2s ease-out infinite}

/* r2 元婴：丹裂 · 紫金 */
.bt.r2 .bt-shade{background:radial-gradient(ellipse 85% 58% at 50% 42%,rgba(48,28,64,.72),rgba(12,10,16,.97) 70%,rgb(8,8,12) 100%)}
.bt.r2.charge .bt-orb{width:22vmin;height:22vmin;opacity:.5;background:radial-gradient(circle,rgba(236,200,140,.75),rgba(120,70,160,.4) 50%,transparent 72%);
  animation:orbCrack 1.5s steps(2) infinite}
@keyframes orbCrack{0%{filter:none;transform:translate(-50%,-50%) scale(1)}50%{filter:contrast(1.2);transform:translate(-50%,-50%) scale(1.04) rotate(1deg)}100%{filter:none;transform:translate(-50%,-50%) scale(.98)}}
.bt.r2.glory .bt-orb{animation:orbFade 1s var(--ease-ink) forwards}
@keyframes orbFade{to{opacity:0;transform:translate(-50%,-50%) scale(1.6)}}
.bt.r2.glory .bt-infant{animation:infantIn 1.4s var(--ease-ink) .2s forwards}
@keyframes infantIn{0%{opacity:0;transform:scale(.72)}100%{opacity:1;transform:scale(1)}}
.bt.r2.glory .bt-big{color:#f0e6ff;text-shadow:0 0 20px rgba(180,140,220,.55)}
.bt.r2 .bt-ring{border-color:rgba(180,140,220,.4)}

/* r3 化神：卷开 · 鹤影 */
.bt.r3 .bt-shade{background:radial-gradient(ellipse 90% 55% at 50% 38%,rgba(40,48,58,.7),rgba(10,12,16,.97) 70%,rgb(6,8,10) 100%)}
.bt.r3.charge .bt-stairs i.bt-scroll{animation:scrollPart 1.6s var(--ease-ink) calc(var(--i) * .15s) forwards}
@keyframes scrollPart{0%{opacity:0;transform:translateY(20px) scaleY(.8)}100%{opacity:.7;transform:none}}
.bt.r3.glory .bt-stairs i.bt-scroll{animation:scrollOpen 1.2s var(--ease-ink) forwards}
@keyframes scrollOpen{to{opacity:.35;transform:translateX(calc((var(--i) - 1) * 18vmin)) scaleX(1.05)}}
.bt.r3.glory .bt-glow{background:radial-gradient(circle,rgba(180,200,220,.4),transparent 60%)}
.bt.r3.glory .bt-big{color:#e8f0f8;text-shadow:0 0 22px rgba(160,190,220,.5)}
.bt.r3.glory .bt-rays{opacity:.7;filter:hue-rotate(180deg) saturate(.6)}
.bt.r3 .bt-ring{border-color:rgba(160,190,220,.35);border-radius:4px;width:50vmin;height:64vmin;margin:-32vmin 0 0 -25vmin}

/* r4 渡劫：雷云 · 天阶 */
.bt.r4 .bt-shade{background:radial-gradient(ellipse 95% 50% at 50% 30%,rgba(50,48,60,.8),rgba(8,8,12,.98) 65%,rgb(4,4,6) 100%)}
.bt.r4.charge .bt-clouds i{animation:cloudIn 1.4s var(--ease-ink) calc(var(--i) * .12s) forwards}
@keyframes cloudIn{0%{opacity:0;transform:translateY(-20px)}100%{opacity:.85;transform:none}}
.bt.r4.charge .bt-bolts i{animation:boltFlash .9s ease-out calc(var(--i) * .22s) infinite}
@keyframes boltFlash{0%,70%,100%{opacity:0}75%{opacity:1}85%{opacity:.2}}
.bt.r4.glory .bt-clouds i{animation:cloudPart 1.6s var(--ease-ink) forwards}
@keyframes cloudPart{to{opacity:.25;transform:translateY(-30px) scale(1.2)}}
.bt.r4.glory .bt-stairs i{animation:stairIn .7s var(--ease-ink) calc(var(--i) * .08s) forwards}
@keyframes stairIn{0%{opacity:0;transform:scaleX(.3)}100%{opacity:1;transform:none}}
.bt.r4.glory .bt-rays{animation:raysIn 2s var(--ease-ink) forwards,raysSpin 28s linear infinite}
.bt.r4.glory .bt-glow{background:radial-gradient(circle,rgba(255,230,160,.55),transparent 55%)}
.bt.r4.glory .bt-big{color:#fff8e6;text-shadow:0 0 28px rgba(255,214,140,.8),0 0 4px rgba(255,255,255,.5);letter-spacing:.12em}
.bt.r4 .bt-ring{border-color:rgba(236,210,140,.45)}
.bt.r4.charge .bt-ring{animation:ring 1s ease-out infinite}
.bt.r4 .bt-stamp svg rect{fill:#8a6a2a}

/* bt phone + reduced */
@media (max-width:430px){
  .bt{padding:calc(var(--sat) + 10px) 16px calc(var(--sab) + 16px);justify-content:safe center}
  .bt-lines{font-size:13px;letter-spacing:.12em;min-height:2.6em;max-width:92vw;line-height:1.85}
  .bt-big{font-size:clamp(64px,20vw,96px);margin-top:4px}
  .bt-sub{font-size:11px;letter-spacing:.14em;margin-top:4px}
  .bt-stamp{width:64px;height:64px;margin-top:4px}
  .bt-text{font-size:14px;margin-top:10px;max-height:20vh;line-height:1.85}
  .bt-close{margin-top:10px}
  .bt.r4.glory .bt-big{letter-spacing:.06em}
}
@media (max-height:720px){
  .bt-lines{min-height:2.2em}
  .bt-big{font-size:clamp(56px,18vw,110px)}
  .bt-stamp{width:58px;height:58px}
  .bt-text{max-height:18vh;margin-top:8px}
}
@media (prefers-reduced-motion:reduce){
  .bt-ink,.bt-rays,.bt-glow,.bt-ring,.bt-ring-2,.bt-orb,.bt-infant,.bt-pillar,
  .bt-veins i,.bt-clouds i,.bt-bolts i,.bt-stairs i,.bt-half,.bt-stamp{animation:none!important;transition:opacity .25s ease!important}
  .bt.go .bt-ink{opacity:.85;transform:scale(1) rotate(12deg)}
  .bt.charge .bt-ring,.bt.charge .bt-ring-2{opacity:.35;transform:none;border-color:rgba(239,230,211,.35)}
  .bt.reveal .bt-half{opacity:1;filter:none;transform:translateX(-50%) scale(1)}
  .bt.stamped .bt-stamp{opacity:1;transform:rotate(-6deg)}
  .bt.r0.charge .bt-veins i,.bt.r0.glory .bt-pillar,
  .bt.r1.charge .bt-orb,.bt.r1.glory .bt-orb,
  .bt.r2.glory .bt-infant,.bt.r2.glory .bt-orb,
  .bt.r3.charge .bt-stairs i.bt-scroll,.bt.r3.glory .bt-stairs i.bt-scroll,
  .bt.r4.charge .bt-clouds i,.bt.r4.charge .bt-bolts i,.bt.r4.glory .bt-clouds i,.bt.r4.glory .bt-stairs i{opacity:.7}
  .bt.glory .bt-rays,.bt.glory .bt-glow{opacity:.45;transform:none}
  .bt.leave{animation:none;opacity:0}
  .shake{animation:none}
}

.shake{animation:shake .5s}
@keyframes shake{0%,100%{transform:none}20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-4px)}60%{transform:translate(-4px,2px)}80%{transform:translate(3px,-1px)}}

/* ---------- 终卷 ---------- */
.end{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:35;display:flex;align-items:center;justify-content:center;background:rgba(18,15,12,.7);padding:24px;animation:fadeIn 1.5s both}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.end-paper{position:relative;width:min(100%,400px);max-height:min(92vh,920px);overflow:auto;-webkit-overflow-scrolling:touch;background-blend-mode:normal;padding:34px 26px 26px;text-align:center;contain:paint;
  background:linear-gradient(rgba(249,245,233,.9),rgba(249,245,233,.9)),var(--paper-img);background-size:auto,256px;box-shadow:0 20px 50px rgba(0,0,0,.45);animation:unrollV 1.4s var(--ease-ink) both}
@keyframes unrollV{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
.end-title{font-family:var(--f-cao);font-size:72px;line-height:1.2;letter-spacing:.1em}
.end-epitaph{font-size:16px;line-height:2;color:var(--ink2);margin:14px 0 18px;text-align:justify}
.end-stats{font-size:13.5px;line-height:2.1;color:var(--ink3);letter-spacing:.12em;margin-bottom:20px}
.end-stats b{font-weight:400;color:var(--ink)}
.end .brush-btn{margin:0 auto}

#toast{position:fixed;left:50%;top:calc(var(--sat) + 14px);z-index:60;transform:translate(-50%,-30px);opacity:0;pointer-events:none;
  padding:8px 18px 7px;font-size:14px;letter-spacing:.2em;color:var(--zhu);border:1.5px solid var(--zhu);border-radius:4px;background:rgba(249,245,233,.94);transition:all .45s var(--ease-ink);white-space:nowrap}
#toast.show{opacity:1;transform:translate(-50%,0)}

@media (min-width:700px){
  .screen{padding-left:24px;padding-right:24px}
  .title-block{right:calc(50% - 250px)}
  .title-poem{left:calc(50% - 230px)}
}
@media (max-height:700px){
  .stone-wrap{margin:3vh 0 1vh;--st:min(36vw,140px)}
  .act{height:66px}.realm-name{font-size:34px}
}
@media (prefers-reduced-motion:reduce){
  .mtn,.mist{animation:none}
}

.end-paper::after{content:"";position:absolute;left:0;right:0;bottom:0;height:45%;background:var(--mtn-img) center bottom/100% auto no-repeat;opacity:.18;pointer-events:none}
.end-paper>*{position:relative;z-index:1}

/* =========================================================
   v0.2 视觉强化
   ========================================================= */
/* iOS 上 :active 需要 touchstart 监听；按下时墨团洇开、字沉下去 */
.brush-btn{transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
.brush-btn .bb-text,.brush-btn small{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.brush-btn:active,.brush-btn.pressed{transform:scale(.955);transition-duration:.12s}
.brush-btn:active .bb-ink,.brush-btn.pressed .bb-ink{transform:scale(1.07,1.24);opacity:1;transition-duration:.18s}
.brush-btn:active .bb-text,.brush-btn.pressed .bb-text{transform:translate3d(0,1px,0) scale(.97);transition-duration:.12s}
.act{transition:transform .45s cubic-bezier(.3,1.6,.5,1),opacity .3s}
.act .act-t{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.act:active,.act.pressed{transform:scale(.93);transition-duration:.12s}
.act:active .act-t,.act.pressed .act-t{transform:translate3d(0,1.5px,0)}
.act:active .act-ink,.act.pressed .act-ink{opacity:.34;transform:scale(1.2) rotate(14deg);transition-duration:.25s}
.act::after{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-34px 0 0 -32px;border-radius:50%;
  border:1.5px solid rgba(27,24,20,.28);opacity:0;pointer-events:none}
.act.pulse::after{animation:actRing .7s var(--ease-ink)}
@keyframes actRing{0%{opacity:.9;transform:scale(.5)}100%{opacity:0;transform:scale(1.5)}}
.ripple{background:var(--blot) center/contain no-repeat;border-radius:0;width:96px;height:96px;margin:-48px 0 0 -48px;opacity:.0;animation:ripple .9s var(--ease-ink) forwards}
@keyframes ripple{0%{opacity:.22;transform:scale(.15) rotate(0)}100%{opacity:0;transform:scale(1.5) rotate(40deg)}}

/* 天色：随境界变化 */
#sky{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity 2.4s var(--ease-ink),background 2.4s;
  background:linear-gradient(180deg,var(--sky1,transparent) 0%,var(--sky2,transparent) 38%,transparent 70%)}
body[data-realm="1"] #sky{--sky1:rgba(61,85,96,.16);--sky2:rgba(61,85,96,.05);opacity:1}
body[data-realm="2"] #sky{--sky1:rgba(196,146,62,.20);--sky2:rgba(214,170,90,.07);opacity:1}
body[data-realm="3"] #sky{--sky1:rgba(120,92,140,.20);--sky2:rgba(206,158,82,.10);opacity:1}
body[data-realm="4"] #sky{--sky1:rgba(214,168,72,.28);--sky2:rgba(236,200,120,.12);opacity:1}
body[data-realm="5"] #sky{--sky1:rgba(236,196,104,.34);--sky2:rgba(246,222,160,.16);opacity:1}
body[data-screen=title] #sky{opacity:0}
.realm-name{position:relative}
body[data-realm="2"] .realm-name,body[data-realm="3"] .realm-name{animation:aura 4.5s ease-in-out infinite;--au:rgba(196,146,62,.55)}
body[data-realm="4"] .realm-name,body[data-realm="5"] .realm-name{animation:aura 3.6s ease-in-out infinite;--au:rgba(222,172,70,.8)}
@keyframes aura{0%,100%{text-shadow:0 0 0 transparent}50%{text-shadow:0 0 14px var(--au),0 0 2px var(--au)}}

/* 视差：由 JS 写入 translate（与漂移 transform 叠加） */
.mtn,.mist,.sun,.pine,.lake,.atmo,.cranes{translate:0 0}

/* 季节飘落 */
#weather{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;z-index:5;pointer-events:none}

/* 开卷：一滴墨落下，洇成山水 */
#intro{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:3;pointer-events:none}
#intro .drop{position:absolute;left:var(--bx,50%);top:var(--by,44%);margin-top:-8px;width:12px;height:16px;margin-left:-6px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:#1b1814;opacity:0;will-change:transform,opacity}
#intro .bloom{display:none}
/* 开卷钮在卷首遮罩下先建好动画层，再放开，避免墨滴第一帧被样式计算吃掉 */
body.hold.go #intro .drop,
body.hold.go #intro .bloom,
body.hold.go[data-screen=title] #scenery,
body.hold.go .tch b,
body.hold.go .tch::after,
body.hold.go .title-sub,
body.hold.go .title-poem,
body.hold.go .title-menu .bb-ink,
body.hold.go .title-menu .bb-text,
body.hold.go .title-menu small,
body.hold.go .seal-title,
body.hold.go .seal-title::before,
body.hold.go .seal-halo,
body.hold.go #btn-notice{animation-play-state:paused}
body.go #intro .drop{animation:drop .84s linear both}
body.go #intro .bloom{animation:bloom 1.15s linear .46s both}
@keyframes drop{0%{opacity:0;transform:translate3d(0,-36vh,0) scale(.55,.72)}14%{opacity:.92;transform:translate3d(0,-26vh,0) scale(.62,.8)}58%{opacity:1;transform:translate3d(0,-6vh,0) scale(.8,.98)}78%{opacity:1;transform:translate3d(0,0,0) scale(.9,1.16)}100%{opacity:0;transform:translate3d(0,1px,0) scale(1.42,.58)}}
@keyframes bloom{0%{opacity:0;transform:scale(.08) rotate(-11deg)}22%{opacity:.92;transform:scale(.72) rotate(-4deg)}46%{opacity:.48;transform:scale(.94) rotate(4deg)}78%{opacity:0;transform:scale(1.05) rotate(11deg)}100%{opacity:0;transform:scale(1.05) rotate(11deg)}}
body:not(.go) #scenery{opacity:0}
body.go[data-screen=title] #scenery{animation:sceneIn 2.4s .68s var(--ease-ink) both;transition:none}
@keyframes sceneIn{0%{opacity:0;transform:scale(1.06) translate3d(0,2%,0)}100%{opacity:1;transform:none}}
body.go.intro-done #intro{display:none}

/* 香火：呼吸的余烬与袅袅青烟 */
.ember{animation:ember 3.2s ease-in-out infinite}
@keyframes ember{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.72;transform:scale(.82)}}
.ember-glow{position:absolute;top:50%;left:var(--life,100%);width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(232,96,52,.42),rgba(232,96,52,.12) 55%,rgba(232,96,52,0));transition:left 1.2s var(--ease-ink);animation:breathe 3.2s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.95;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}
.smoke{position:absolute;left:var(--life,100%);bottom:50%;width:16px;height:30px;margin-left:-8px;overflow:visible;transition:left 1.2s var(--ease-ink);pointer-events:none}
.smoke path{fill:none;stroke:rgba(110,100,87,.42);stroke-width:1.1;stroke-linecap:round;stroke-dasharray:14 60;stroke-dashoffset:14;animation:wisp 4.2s linear infinite}
.smoke path:nth-child(2){animation-delay:-2.1s;stroke:rgba(110,100,87,.3)}
@keyframes wisp{0%{stroke-dashoffset:14;opacity:0}15%{opacity:1}100%{stroke-dashoffset:-46;opacity:0}}

/* 吐纳 / 破境的粒子画布 */
#fx{position:fixed;left:0;top:0;width:0;height:0;z-index:16;pointer-events:none}
.bar-xw.gain .bar-fill{animation:gainGlow 1.1s var(--ease-ink)}
@keyframes gainGlow{0%{opacity:.88}35%{opacity:1}100%{opacity:.88}}

/* 闭关：洞府渐暗，一盏孤灯 */
#cave{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:14;pointer-events:none;visibility:hidden}
#cave.on{visibility:visible}
.cave-dark{position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%;inset:-10%;opacity:0;background:radial-gradient(70% 55% at 50% 58%,rgba(16,13,10,0) 0%,rgba(16,13,10,.32) 45%,rgba(14,11,8,.86) 100%)}
.lantern{position:absolute;left:50%;bottom:calc(var(--sab) + 96px);width:240px;height:240px;margin-left:-120px;border-radius:50%;opacity:0;
  background:radial-gradient(closest-side,rgba(255,196,120,.34),rgba(240,160,80,.12) 45%,rgba(240,160,80,0));mix-blend-mode:screen}
#cave.on .cave-dark{animation:caveDark 2.3s var(--ease-ink) both}
#cave.on .lantern{animation:lanternIn 2.3s ease-in-out both,flicker .23s steps(2) .5s 6}
@keyframes caveDark{0%{opacity:0}28%{opacity:1}68%{opacity:1}100%{opacity:0}}
@keyframes lanternIn{0%{opacity:0;transform:scale(.6)}30%{opacity:1;transform:scale(1)}70%{opacity:.9}100%{opacity:0;transform:scale(1.1)}}
@keyframes flicker{0%{filter:brightness(1)}50%{filter:brightness(.82)}}

/* 游历：一笔山路在卷上展开 */
#path-fx{position:fixed;left:0;top:0;width:0;height:0;z-index:15;pointer-events:none;overflow:visible}
#path-fx path{fill:none;stroke:#1b1814;stroke-linecap:round;stroke-linejoin:round}
#path-fx .p1{stroke-width:2.4;opacity:.42}
#path-fx .p2{stroke-width:2;stroke-opacity:.35;stroke-dasharray:1 9}
#path-fx circle{fill:#1b1814}
#path-fx.out{transition:opacity .7s;opacity:0}

/* 墨染转场 */
#wash{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:40;pointer-events:none;visibility:hidden}
#wash.on{visibility:visible;pointer-events:auto}
#wash .wash-ink,#wash .wash-paper{display:none}
.ink-pass{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;display:block;z-index:1}
#wash .wash-full{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background-color:var(--paper);background-image:var(--paper-img);background-size:256px;opacity:0}

/* 破境：光芒与金屑 */
.bt-rays{position:absolute;left:50%;top:44%;width:120vmax;height:120vmax;margin:-60vmax 0 0 -60vmax;opacity:0;pointer-events:none;
  background:repeating-conic-gradient(from 0deg,rgba(255,226,160,.0) 0deg,rgba(255,226,160,.16) 3deg,rgba(255,226,160,0) 7deg,rgba(255,226,160,0) 14deg);
  -webkit-mask-image:radial-gradient(closest-side,#000 6%,rgba(0,0,0,.6) 30%,transparent 70%);mask-image:radial-gradient(closest-side,#000 6%,rgba(0,0,0,.6) 30%,transparent 70%)}
.bt-glow{position:absolute;left:50%;top:44%;width:90vmin;height:90vmin;margin:-45vmin 0 0 -45vmin;border-radius:50%;opacity:0;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,236,190,.55),rgba(246,206,130,.18) 45%,rgba(246,206,130,0))}
.bt.glory .bt-rays{animation:raysIn 2.4s var(--ease-ink) forwards,raysSpin 40s linear infinite}
.bt.glory .bt-glow{animation:glowIn 1.8s var(--ease-ink) forwards}
@keyframes raysIn{0%{opacity:0;transform:scale(.4) rotate(0)}100%{opacity:1;transform:scale(1) rotate(12deg)}}
@keyframes raysSpin{to{rotate:360deg}}
@keyframes glowIn{0%{opacity:0;transform:scale(.2)}25%{opacity:1;transform:scale(1.05)}100%{opacity:.7;transform:scale(1)}}
.bt.glory .bt-big{color:#fff6e2;text-shadow:0 0 22px rgba(255,214,140,.55)}
.bt.glory .bt-shade{background:radial-gradient(ellipse 85% 60% at 50% 44%,rgba(60,44,22,.62),rgba(14,11,8,.97) 70%,rgb(12,10,8) 100%)}

@media (prefers-reduced-motion:reduce){
  #weather,#fx,#path-fx,#intro,.cranes{display:none}
  body.go .tch b,body.go .title-sub,body.go .title-poem,body.go .title-menu,body.go .seal-title,body.go #btn-notice,body.go[data-screen=title] #scenery{animation-duration:.01s!important;animation-delay:0s!important}
  .realm-name,.ember,.ember-glow,.smoke path,.bt-rays,.break-seal::before{animation:none!important}
  #cave.on .cave-dark,#cave.on .lantern{animation:none}
}
/* 回到卷首时不再重放完整开场，只做一次短暂的墨晕显字 */
body.intro-done .tch b{animation-delay:calc(.35s + var(--d) * .18s)!important;animation-duration:1s!important}
body.intro-done .tch::after{animation-delay:calc(.4s + var(--d) * .18s)!important}
body.intro-done .title-sub{animation-delay:.6s!important}
body.intro-done .title-poem{animation-delay:.75s!important}
body.intro-done .seal-title{animation-delay:.9s!important}
body.intro-done .seal-halo{animation-delay:1.3s!important}
body.intro-done .title-menu{animation:none}
body.intro-done[data-screen=title] #scenery{animation-delay:0s!important;animation-duration:1.6s!important}

/* =========================================================
   v0.3 卷首动态壁纸
   ========================================================= */
.cam{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;transform-origin:42% 60%;animation:cam 96s ease-in-out infinite alternate;will-change:transform}
@keyframes cam{0%{transform:scale(1.045) translate3d(-1.6%,.4%,0)}50%{transform:scale(1.08) translate3d(.4%,-.6%,0)}100%{transform:scale(1.05) translate3d(1.7%,.2%,0)}}
/* 日：缓慢呼吸的光晕，随昼夜升落、变色 */
.sun{animation:sunArc 84s linear infinite}
.sun-halo{position:absolute;top:-70%;right:-70%;bottom:-70%;left:-70%;inset:-70%;border-radius:50%;background:radial-gradient(closest-side,rgba(214,96,64,.20),rgba(220,130,80,.08) 50%,rgba(220,130,80,0));animation:halo 7s ease-in-out infinite}
.sun-dusk{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;border-radius:50%;background:radial-gradient(circle at 46% 44%,rgba(214,92,40,.9),rgba(200,70,36,.6) 58%,rgba(200,70,36,0) 72%);opacity:0;animation:sunDusk 84s linear infinite}
@keyframes halo{0%,100%{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}
@keyframes sunArc{0%{transform:translate3d(0,26px,0) scale(.94)}20%{transform:translate3d(0,0,0) scale(1)}55%{transform:translate3d(0,-4px,0) scale(1)}80%{transform:translate3d(0,22px,0) scale(1.04)}100%{transform:translate3d(0,26px,0) scale(.94)}}
@keyframes sunDusk{0%{opacity:.5}18%{opacity:0}52%{opacity:0}72%{opacity:.9}100%{opacity:.5}}
/* 昼夜：晨曦 → 白昼 → 暮色，84 秒一轮 */
#tod{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none}
#tod i{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;opacity:0}
.tod-dawn{background:linear-gradient(180deg,rgba(232,180,170,.20) 0%,rgba(244,206,176,.13) 42%,rgba(244,206,176,0) 75%);animation:todDawn 84s linear infinite}
.tod-dusk{background:linear-gradient(180deg,rgba(72,62,82,.13) 0%,rgba(212,140,82,.15) 40%,rgba(226,160,96,.07) 66%,rgba(226,160,96,0) 85%);animation:todDusk 84s linear infinite}
@keyframes todDawn{0%{opacity:1}22%{opacity:0}84%{opacity:0}100%{opacity:1}}
@keyframes todDusk{0%{opacity:.25}12%{opacity:0}46%{opacity:0}66%{opacity:1}80%{opacity:1}100%{opacity:.25}}
/* 低分辨率雾与云影画布，放大后天然柔和 */
.atmo{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
/* 湖、倒影、渔舟 */
.lake{position:absolute;left:-15%;width:130%;top:var(--lake-top,74%);bottom:-2%;overflow:hidden;
  background:linear-gradient(180deg,rgba(236,229,213,.0),rgba(236,229,213,.92) 7%,rgba(232,225,208,.9) 60%,rgba(226,218,200,.85))}
.lake-refl{position:absolute;left:0;top:0;width:100%;height:100%;opacity:.8;transform-origin:50% 0;animation:refl 6s ease-in-out infinite alternate}
@keyframes refl{0%{transform:scale(1,1) skewX(0)}100%{transform:scale(1.004,1.03) skewX(.4deg)}}
.lake-shimmer{position:absolute;left:0;top:0;width:200%;height:100%;background:var(--glint-img) 0 0/50% 100% repeat-x;opacity:.9;animation:shimmer 38s linear infinite;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 12%,#000 70%,transparent);mask-image:linear-gradient(180deg,transparent,#000 12%,#000 70%,transparent)}
@keyframes shimmer{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.boat-track{position:absolute;left:0;top:9%;width:100%;height:60%;animation:boatDrift 160s linear infinite}
@keyframes boatDrift{0%{transform:translate3d(24%,0,0)}50%{transform:translate3d(66%,4%,0)}100%{transform:translate3d(24%,0,0)}}
.boat{position:absolute;left:0;top:0;width:50px;height:29px;animation:bob 5.5s ease-in-out infinite}
.boat svg{position:relative;width:100%;height:100%;overflow:visible;display:block}
@keyframes bob{0%,100%{transform:translate3d(0,0,0) rotate(-1.2deg)}50%{transform:translate3d(0,1.5px,0) rotate(1.4deg)}}
.wake{position:absolute;left:4px;top:19px;width:52px;height:8px;border-radius:50%;border:1px solid rgba(40,36,30,.32);opacity:0;animation:wake 4.8s ease-out infinite}
.wake.w2{animation-delay:-2.4s}
@keyframes wake{0%{opacity:.8;transform:scale(.6,.5)}100%{opacity:0;transform:scale(2.4,1.6)}}
/* 前景松枝，绕根部轻摆 */
.pine{position:absolute;right:-4%;bottom:-1%;width:47%;height:37%;opacity:.82;transform-origin:100% 100%;animation:sway 9s ease-in-out infinite alternate}
@keyframes sway{0%{transform:rotate(-.5deg) skewX(.3deg)}100%{transform:rotate(.9deg) skewX(-.5deg)}}
/* 仙鹤 */
.cranes{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none}
.crane{position:absolute;left:0;top:0;right:auto;bottom:auto;width:58px;height:29px;opacity:0;animation:fly 46s linear infinite}
.crane.c2{left:0;top:0;width:44px;height:22px;animation-delay:-3.2s;--dy:22px}
.crane svg{width:100%;height:100%;overflow:visible;display:block}
.crane .cr-wing{transform-origin:60px 29px;animation:flapC 1.9s ease-in-out infinite}
.crane.c2 .cr-wing{animation-delay:-.7s}
@keyframes flapC{0%,100%{transform:scaleY(1)}50%{transform:scaleY(-.75)}}
@keyframes fly{
  0%,50%{opacity:0;transform:translate3d(-22vw,calc(53vh + var(--dy,0px)),0) rotate(-5deg)}
  53%{opacity:.92}
  75%{transform:translate3d(46vw,calc(46vh + var(--dy,0px)),0) rotate(-3deg)}
  97%{opacity:.92}
  100%{opacity:0;transform:translate3d(112vw,calc(44vh + var(--dy,0px)),0) rotate(-2deg)}}
/* 不在卷首时，壁纸动画停下省电 */
body:not([data-screen=title]) .cam,body:not([data-screen=title]) .cam *,body:not([data-screen=title]) #tod i{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){
  .cam,.cam *,#tod i{animation:none!important}
  .tod-dawn,.tod-dusk{opacity:0}
}

.log-spacer{flex:none;pointer-events:none}

/* =========================================================
   v0.4 活墨 · 高级感
   ========================================================= */
:root{--ease-silk:cubic-bezier(.16,.84,.24,1);--ease-breath:cubic-bezier(.45,.05,.35,1)}
/* 活墨按钮：WebGL 渲染的湿墨取代静态图 */
.bb-ink.live.inked,.act-ink.live.inked{background:none!important}
.title-menu .bb-ink.live{opacity:var(--ink-a)}
.live-ink{position:absolute;pointer-events:none;display:block}
.bb-ink .live-ink{left:-9%;right:-9%;top:-26%;bottom:-26%;width:118%;height:152%}
.act-ink .live-ink{left:-18%;top:-18%;width:136%;height:136%}
.brush-btn .bb-ink{transition:transform .9s var(--ease-silk),opacity .4s}
.title-menu .bb-ink{transition:transform .9s var(--ease-silk)}
.brush-btn:active .bb-ink.live,.brush-btn.pressed .bb-ink.live{transform:scale(1.02,1.06)}
.act-ink.live{opacity:.2}
.act:active .act-ink.live,.act.pressed .act-ink.live{opacity:.36;transform:scale(1.08) rotate(6deg)}
/* 全屏墨染画布（转场 / 破境） */
#inkfx{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;pointer-events:none;display:none;opacity:1;transition:opacity .8s var(--ease-silk)}
#inkfx.on{display:block}
#inkfx.fade{opacity:0}
.bt.gl .bt-ink{display:none}
/* 胶片 / 纸面颗粒：极淡，统一质感 */
#grain{position:fixed;top:-50%;right:-50%;bottom:-50%;left:-50%;inset:-50%;width:200%;height:200%;z-index:72;pointer-events:none;opacity:.07;background:var(--grain-img) 0 0/180px 180px;animation:grain 1.2s steps(6) infinite;will-change:transform;contain:strict}
@keyframes grain{0%{transform:translate3d(0,0,0)}17%{transform:translate3d(-3%,2%,0)}33%{transform:translate3d(2%,-4%,0)}50%{transform:translate3d(-5%,1%,0)}67%{transform:translate3d(4%,3%,0)}83%{transform:translate3d(-1%,-3%,0)}100%{transform:translate3d(0,0,0)}}

/* 文字墨晕：更克制 —— 小幅缩放、短模糊、略下沉后落定 */
.ink-ch{animation:bleed2 1.25s var(--ease-silk) both}
@keyframes bleed2{0%{opacity:0;transform:translate3d(0,3px,0) scale(1.06)}42%{opacity:.9;transform:translate3d(0,1px,0) scale(1.015)}100%{opacity:1;transform:none}}
.bleed-in{animation:bleedBlock 1.6s var(--ease-silk) both}
/* 日志：新条目轻轻落定 */
.entry{animation:settle 1.1s var(--ease-silk) both}
@keyframes settle{from{opacity:.0;transform:translate3d(0,8px,0)}to{opacity:1;transform:none}}
.entry-time.bleed-in{animation:fadeIn 1.2s var(--ease-silk) both}
/* 卷轴纸面：微卷的明暗 */
.scroll-paper{box-shadow:inset 0 10px 12px -8px rgba(40,30,20,.38),inset 0 -10px 12px -8px rgba(40,30,20,.38),inset 14px 0 18px -14px rgba(60,44,28,.22),inset -14px 0 18px -14px rgba(60,44,28,.22)}
.scroll-paper .curl{position:absolute;left:0;right:0;height:22px;pointer-events:none;z-index:1}
/* 修为条：墨在条内缓缓流动，前端一颗湿墨珠 */
.bar-xw .bar-track{overflow:visible}
.bar-flow{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;clip-path:inset(0 calc(100% - var(--p,0%)) 0 0);-webkit-clip-path:inset(0 calc(100% - var(--p,0%)) 0 0);transition:clip-path 1.2s var(--ease-ink),-webkit-clip-path 1.2s var(--ease-ink);
  -webkit-mask:var(--brush-bar) center/100% 100% no-repeat;mask:var(--brush-bar) center/100% 100% no-repeat;overflow:hidden}
.bar-flow::before{content:"";position:absolute;top:0;bottom:0;left:-60%;width:60%;background:linear-gradient(90deg,rgba(250,246,234,0),rgba(250,246,234,.32),rgba(250,246,234,0));animation:flow 5.5s var(--ease-breath) infinite}
@keyframes flow{0%{transform:translate3d(0,0,0)}70%,100%{transform:translate3d(270%,0,0)}}
.bar-xw .bar-tip{opacity:.85;width:6px;height:6px;margin:-3px 0 0 -3px;background:radial-gradient(circle at 35% 35%,#5a524a,#1b1814 60%);animation:bead 3.4s var(--ease-breath) infinite}
.bar-xw .bar-tip::after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;inset:-5px;border-radius:50%;border:1px solid rgba(27,24,20,.22);animation:beadRing 3.4s var(--ease-breath) infinite}
@keyframes bead{0%,100%{transform:scale(.85)}50%{transform:scale(1.1)}}
@keyframes beadRing{0%,100%{opacity:0;transform:scale(.6)}50%{opacity:.75;transform:scale(1.35)}}
/* 数字翻滚 */
.roll-wrap{display:inline-block;position:relative;overflow:hidden;vertical-align:bottom}
.roll-in{display:inline-block;animation:rollIn .7s var(--ease-silk) both}
@keyframes rollIn{0%{opacity:0;transform:translate3d(0,70%,0)}100%{opacity:1;transform:none}}
.chip.flash em{animation:none}
/* 印章：按下有压痕与朱砂晕 */
.menu-seal{transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.menu-seal:active{transform:rotate(4deg) scale(.86);transition-duration:.12s}
@media (hover:hover){.menu-seal:hover{transform:rotate(-2deg) scale(1.06)}}
.break-seal:active svg{transform:rotate(-3deg) scale(.88)}
/* 破境印：落印压痕 */
.bt.stamped .bt-stamp{animation:stampPress 1s both}
/* 奇遇横卷：更慢更稳的展开 */
.hpaper{transition:clip-path 1.15s var(--ease-silk),-webkit-clip-path 1.15s var(--ease-silk)}
.hroller{transition:transform 1.15s var(--ease-silk)}
.modal-shade{transition:opacity .9s var(--ease-silk)}
/* 按钮文字：静置时一丝若有若无的呼吸 */
.brush-btn .bb-text{animation:textBreath 6s var(--ease-breath) infinite}
@keyframes textBreath{0%,100%{text-shadow:0 0 0 rgba(255,248,230,0)}50%{text-shadow:0 0 8px rgba(255,248,230,.18)}}
@media (prefers-reduced-motion:reduce){
  #grain,.bar-flow::before,.bar-xw .bar-tip,.brush-btn .bb-text,.entry{animation:none!important}
}
/* 破境：先让浓墨自中心洇开，再压暗四周；成功时墨色退淡，透出暖光 */
.bt.gl .bt-shade{transition:opacity 1.6s 1.5s var(--ease-silk)}
.bt.gl #inkfx{transition:opacity 2.4s var(--ease-silk)}
.bt.gl.glory #inkfx{opacity:.5}
body:not([data-screen=title]) .boat-track{opacity:0;transition:opacity 1s}

/* v0.5 吐纳·圆相：墨在纸下（文字之下）旋聚、沉入 */
.qi-ink{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .25s}
.qi-ink.on{opacity:1}
.bar-xw.gain .bar-flow::before{animation:flow 1.3s var(--ease-silk) 1}
.bar-xw.gain .bar-tip{animation:bead 1.3s var(--ease-silk) 1}
@media (prefers-reduced-motion:reduce){.qi-ink{display:none}.log .entry:last-child{animation:fadeIn .6s ease both!important}}
/* 开卷下的小字：在活墨上也要清楚 */
.brush-btn:not(.light):not(#btn-continue) small{opacity:1;color:#f7f0dd;font-size:11.5px;text-shadow:0 0 3px rgba(12,10,8,.9),0 0 8px rgba(12,10,8,.6)}
.path-ink{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;pointer-events:none;opacity:0;transition:opacity .3s}
.path-ink.on{opacity:1}.path-ink.out{opacity:0;transition:opacity .9s var(--ease-silk)}
@media (prefers-reduced-motion:reduce){.path-ink{display:none}}

/* =========================================================
   v0.6 道途 · 功法 / 终卷诸相
   ========================================================= */
.sheet-tabs{display:flex;align-items:center;justify-content:center;gap:14px;margin:-2px 0 12px}
.stab{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;font-family:var(--f-head);font-size:18px;letter-spacing:.32em;padding:6px 4px 10px 10px;color:var(--ink4);transition:color .35s}
.stab::after{content:"";position:absolute;left:6px;right:6px;bottom:4px;height:7px;background:var(--brush-bar) center/100% 100% no-repeat;opacity:0;transform:scaleX(.2);transition:all .45s var(--ease-ink)}
.stab.on{color:var(--ink)}
.stab.on::after{opacity:.75;transform:none}
.stab-dot{width:4px;height:4px;border-radius:50%;background:var(--zhu);opacity:.6}
.tab-in{animation:tabIn .5s var(--ease-ink) both}
@keyframes tabIn{from{opacity:0;transform:translate3d(0,6px,0)}to{opacity:1;transform:none}}
.empty.small{font-size:13px;padding:14px 0 8px}
.menu-item small{display:block;margin-top:4px;font-size:11.5px;letter-spacing:.2em;color:var(--ink4)}

/* 竹简：一片片竹签以两道麻绳编起 */
.gf-scroll{position:relative;display:flex;gap:14px;padding:22px 18px 18px 14px;border-radius:3px;overflow:hidden;color:var(--ink);
  background:
    linear-gradient(180deg,transparent 13px,rgba(70,48,26,.55) 13px,rgba(70,48,26,.55) 15px,transparent 15px,transparent calc(100% - 15px),rgba(70,48,26,.55) calc(100% - 15px),rgba(70,48,26,.55) calc(100% - 13px),transparent calc(100% - 13px)),
    repeating-linear-gradient(90deg,rgba(255,250,235,.0) 0,rgba(255,250,235,.35) 3px,rgba(120,92,52,.0) 16px,rgba(120,92,52,.12) 29px,rgba(60,42,22,.42) 30px,rgba(60,42,22,.0) 31.5px),
    linear-gradient(180deg,#eadfbf,#e0d1a8 60%,#d8c697);
  box-shadow:inset 0 0 0 1px rgba(60,42,22,.18),inset 0 0 26px rgba(90,64,30,.22),0 6px 16px rgba(40,28,14,.16)}
.gf-scroll::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:var(--paper-img);background-size:220px;mix-blend-mode:multiply;opacity:.35;pointer-events:none}
.gf-scroll>*{position:relative}
.gf-vname{flex:none;display:flex;flex-direction:column;align-items:center;padding:4px 6px 0;min-width:40px;
  font-family:var(--f-head);font-size:30px;line-height:1.12;color:var(--ink);text-shadow:0 0 1px rgba(27,24,20,.35)}
.gf-vname i{font-style:normal;display:block}
.gf-info{flex:1;min-width:0;padding-top:2px}
.gf-meta{display:flex;align-items:center;gap:10px;font-size:13px;letter-spacing:.14em;color:var(--ink2)}
.gf-seal{flex:none;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:3px;
  font-family:var(--f-head);font-size:17px;line-height:1;color:var(--paper-letter);background:var(--zhu);box-shadow:inset 0 0 0 1.5px rgba(247,239,224,.55),0 0 0 1px rgba(179,48,42,.4);transform:rotate(-4deg)}
.g0 .gf-seal{background:#6e6457}
.g2 .gf-seal{background:#8e2420}
.g3 .gf-seal{background:linear-gradient(135deg,#a8452c,#7a1c18);box-shadow:inset 0 0 0 1.5px rgba(232,196,120,.85),0 0 10px rgba(200,150,60,.45)}
.mo .gf-seal{background:#3a0d0c;box-shadow:inset 0 0 0 1.5px rgba(200,40,30,.8)}
.gf-layers{display:flex;align-items:center;gap:5px;margin:12px 0 6px}
.gf-layers i{width:9px;height:9px;border-radius:50%;border:1.2px solid rgba(27,24,20,.5)}
.gf-layers i.on{background:var(--ink);border-color:var(--ink);box-shadow:0 0 0 1.5px rgba(27,24,20,.12)}
.mo .gf-layers i.on{background:#7d1612;border-color:#7d1612}
.gf-layers em{font-style:normal;margin-left:8px;font-size:13px;letter-spacing:.15em;color:var(--zhu)}
.gf-speed{font-size:13px;letter-spacing:.14em;color:var(--ink3)}
.gf-speed b{font-weight:400;color:var(--ink);font-size:15px}
.gf-trait{margin-top:6px;font-family:var(--f-head);font-size:16px;letter-spacing:.08em;color:var(--zhu)}
.mo .gf-trait{color:#7d1612}
.gf-desc{margin:10px 0 8px;font-size:14px;line-height:1.95;text-align:justify;color:var(--ink2)}
.gf-src{font-size:11.5px;letter-spacing:.2em;color:var(--ink3);text-align:right}
.gf-none .gf-vname{color:var(--ink3)}
.gf-list-h{display:flex;align-items:baseline;justify-content:space-between;margin:20px 2px 4px;padding-bottom:6px;font-family:var(--f-head);font-size:17px;letter-spacing:.3em;
  background:var(--brush-line) left bottom/100% 3px no-repeat}
.gf-list-h em{font-style:normal;font-family:var(--f-body);font-size:12px;color:var(--ink3);letter-spacing:.15em}
.gf-row{display:flex;align-items:flex-start;gap:12px;padding:13px 2px;border-bottom:1px solid rgba(27,24,20,.08)}
.gf-row .gf-seal{margin-top:3px;width:24px;height:24px;font-size:15px}
.gf-row-info{flex:1;min-width:0}
.gf-row-name{font-family:var(--f-head);font-size:19px;letter-spacing:.08em}
.gf-row-name em{font-style:normal;font-family:var(--f-body);font-size:12px;color:var(--zhu);margin-left:8px;letter-spacing:.1em}
.gf-row-sub{font-size:12px;letter-spacing:.1em;color:var(--ink3);margin-top:2px}
.gf-row-trait{font-size:12.5px;color:var(--ink2);margin-top:2px}
.gf-cost{max-height:0;overflow:hidden;opacity:0;font-size:12px;letter-spacing:.08em;color:var(--zhu);transition:all .4s var(--ease-ink)}
.gf-row.confirm .gf-cost{max-height:40px;opacity:1;margin-top:6px}
.gf-row.confirm .item-use{background-image:var(--brush-img-zhu);color:var(--paper-letter)}
.gf-row .item-use{margin-top:6px}

/* ---------- 终卷诸相 ---------- */
.end-art{flex:none;height:112px;margin:0 0 4px;pointer-events:none;overflow:hidden}
.end-art:empty{display:none}
.end-art svg{width:100%;height:100%;display:block;overflow:hidden}
.end-legacy{color:var(--zhu);letter-spacing:.2em}
/* 飞升：金光自地平线放出 */
.end-ascend .end-title{color:#8a6a2a;text-shadow:0 0 18px rgba(214,170,80,.45)}
.ea-rays path{stroke:rgba(196,150,62,.5);stroke-width:1.2;stroke-dasharray:200;stroke-dashoffset:200;animation:eaDraw 2.4s .5s var(--ease-ink) forwards}
.ea-sun{fill:rgba(214,170,80,.28);transform-origin:160px 118px;animation:eaSun 2.6s .3s var(--ease-ink) both}
@keyframes eaDraw{to{stroke-dashoffset:0}}
@keyframes eaSun{from{transform:scale(0);opacity:0}to{transform:none;opacity:1}}
/* 坐化：残香一缕 */
.ea-smoke{fill:none;stroke:rgba(56,50,43,.45);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:120;stroke-dashoffset:120;animation:eaSmoke 4s .8s ease-out forwards}
.ea-smoke.s2{stroke:rgba(56,50,43,.25);animation-delay:1.4s}
@keyframes eaSmoke{60%{opacity:1}to{stroke-dashoffset:0;opacity:.35}}
.ea-stick{fill:#5b4a36}
.ea-ember{fill:var(--seal-red);animation:eaEmber 3s 1s ease-in forwards}
@keyframes eaEmber{to{fill:#5b4a36;opacity:.4}}
/* 入魔：血墨泼纸 */
.end-rumo{background:rgba(26,6,5,.8)}
.end-rumo .end-paper{background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(130,20,16,.16),transparent 70%),linear-gradient(rgba(246,238,226,.92),rgba(246,238,226,.92)),var(--paper-img);background-size:auto,auto,256px}
.end-rumo .end-paper::before{content:"";position:absolute;left:-12%;top:-18%;width:124%;height:62%;z-index:0;pointer-events:none;
  background:#8a1712;-webkit-mask:var(--blot-big) center/contain no-repeat;mask:var(--blot-big) center/contain no-repeat;opacity:.0;
  animation:eaBlood 2.2s .2s var(--ease-ink) forwards}
@keyframes eaBlood{0%{opacity:0;transform:scale(.3) rotate(-12deg)}100%{opacity:.2;transform:scale(1) rotate(6deg)}}
.end-rumo .end-title{color:#8a1712;text-shadow:2px 1px 0 rgba(138,23,18,.25)}
.end-rumo .end-stats b{color:#7d1612}
.ea-drips path{fill:#8a1712;opacity:.0;transform-origin:center top;transform:scaleY(0);animation:eaDrip 1.6s var(--ease-ink) forwards}
@keyframes eaDrip{to{opacity:.78;transform:none}}
/* 归隐：江心空船，月下自横 */
.end-guiyin{background:rgba(22,26,28,.66)}
.end-guiyin .end-title{color:var(--qing)}
.ea-moon{fill:none;stroke:rgba(61,85,96,.45);stroke-width:1.2;animation:fadeIn 3s 1s both}
.ea-boat{fill:rgba(27,24,20,.78);animation:eaBoat 18s ease-in-out infinite alternate}
.ea-pole{stroke:rgba(27,24,20,.7);stroke-width:1.4;fill:none}
@keyframes eaBoat{0%{transform:translate(-26px,0) rotate(-.6deg)}50%{transform:translate(0,2px) rotate(.8deg)}100%{transform:translate(26px,0) rotate(-.4deg)}}
.ea-waves path{fill:none;stroke:rgba(61,85,96,.4);stroke-width:1.1;stroke-linecap:round;animation:eaWave 9s ease-in-out infinite alternate}
.ea-waves path+path{stroke:rgba(61,85,96,.25);animation-duration:12s}
@keyframes eaWave{from{transform:translateX(-12px)}to{transform:translateX(12px)}}
/* 兵解：断剑化墨而散 */
.end-bingjie .end-title{color:var(--ink2);letter-spacing:.2em}
.ea-sword path{fill:rgba(27,24,20,.82)}
.ea-hilt{fill:none!important;stroke:rgba(27,24,20,.85);stroke-width:4.5;stroke-linecap:round}
.ea-refl{opacity:.13;animation-name:eaBoatR}
@keyframes eaBoatR{0%{transform:translate(-26px,0)}50%{transform:translate(0,-2px)}100%{transform:translate(26px,0)}}
.ea-blade2{animation:eaShatter 3.2s .8s var(--ease-ink) forwards}
@keyframes eaShatter{to{transform:translate3d(24px,-14px,0) rotate(8deg);opacity:0}}
.ea-motes circle{fill:rgba(27,24,20,.6);opacity:0;animation:eaMote 3.6s ease-out infinite}
@keyframes eaMote{0%{opacity:0;transform:none}20%{opacity:.8}100%{opacity:0;transform:translate(30px,-40px)}}
/* 身殒：劫雷裂纸 */
.end-yunluo{background:rgba(10,9,8,.82)}
.end-yunluo .end-title{color:#4a443c}
.end-yunluo .end-paper{filter:saturate(.7)}
.ea-bolt{fill:rgba(27,24,20,.88);clip-path:inset(0 0 100% 0);animation:eaBolt .55s .55s cubic-bezier(.7,0,.3,1) forwards}
.ea-bolt.thin{fill:rgba(27,24,20,.5);animation-delay:.95s}
@keyframes eaBolt{to{clip-path:inset(0 0 0 0)}}
.end-yunluo .end-paper::before,.end-bingjie .end-paper::before{content:"";position:absolute;left:-6%;top:-14%;width:112%;height:56%;z-index:0;pointer-events:none;
  background:#2a2622;-webkit-mask:var(--blot-big) center/contain no-repeat;mask:var(--blot-big) center/contain no-repeat;opacity:0;animation:eaWash 2.4s .3s var(--ease-ink) forwards}
.end-bingjie .end-paper::before{width:80%;left:10%;height:44%;top:-8%}
@keyframes eaWash{0%{opacity:0;transform:scale(.4)}100%{opacity:.09;transform:none}}
.end-yunluo .end-paper{animation:unrollV 1.4s var(--ease-ink) both,shake .5s 1.2s}
@media (prefers-reduced-motion:reduce){
  .end-art *,.end-rumo .end-paper::before{animation-duration:.01s!important;animation-iteration-count:1!important;animation-delay:0s!important}
}
.ea-boat{transform-box:fill-box;transform-origin:center}

/* =========================================================
   v0.7 宗门 · 令牌 / 任务 / 藏经 / 人物 / 大比 / 晋升
   ========================================================= */
.sect-seal{transform:rotate(-4deg);margin-right:-4px}
.sect-seal:active{transform:rotate(-4deg) scale(.86)}
.sect-seal.ready::after{content:"";position:absolute;right:-1px;top:-1px;width:9px;height:9px;border-radius:50%;background:var(--zhu);box-shadow:0 0 0 2px var(--paper);animation:readyPulse 2.2s ease-in-out infinite}
.sect-seal{position:relative}
@keyframes readyPulse{50%{transform:scale(1.35);opacity:.7}}
.sect-wrap .sheet-tabs{gap:9px}
.sect-wrap .stab{font-size:17px;letter-spacing:.22em}

/* 令牌卡 */
.sect-card{position:relative;display:flex;gap:16px;align-items:center;padding:14px 16px 14px 10px;border-radius:4px;overflow:hidden;
  background:linear-gradient(105deg,rgba(27,24,20,.06),rgba(27,24,20,0) 60%),rgba(255,252,244,.5);box-shadow:inset 0 0 0 1px rgba(27,24,20,.1)}
.sect-card::before{content:"";position:absolute;right:-30px;bottom:-40px;width:180px;height:180px;background:var(--blot-stone) center/contain no-repeat;opacity:.06}
.sect-token{flex:none;width:64px;height:150px;margin:-6px 0 -10px}
.sect-token .token-svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 4px 6px rgba(30,20,10,.25))}
.token-svg .tk-cord{stroke:#9e2a22;stroke-width:2.5;fill:none}
.token-svg .tk-sheen{opacity:0}
.sect-card-info{flex:1;min-width:0}
.sect-org{font-size:12.5px;letter-spacing:.3em;color:var(--ink3)}
.sect-rank{font-family:var(--f-head);font-size:32px;letter-spacing:.12em;line-height:1.3;margin:2px 0 6px}
.sect-gx{display:flex;gap:16px;font-size:12.5px;letter-spacing:.1em;color:var(--ink3)}
.sect-gx b{font-weight:400;color:var(--zhu);font-size:15px}
.sect-card.free .sect-card-v{flex:none;display:flex;flex-direction:column;font-family:var(--f-head);font-size:34px;line-height:1.1;padding:4px 6px}
.sect-card.free .sect-card-v i{font-style:normal}
.sect-note{font-size:13.5px;line-height:1.9;color:var(--ink2);margin:6px 0}
.sect-note.center{text-align:center;color:var(--ink3);font-size:12.5px;letter-spacing:.15em;margin:14px 0 4px}
.perks{margin:14px 0 4px}
.perk{display:flex;align-items:baseline;gap:12px;padding:7px 2px;border-bottom:1px dashed rgba(27,24,20,.1);font-size:13.5px;color:var(--ink2)}
.perk b{flex:none;font-weight:400;font-family:var(--f-head);font-size:15px;color:var(--paper-letter);background:var(--zhu);padding:1px 6px 0;border-radius:2px;letter-spacing:.1em;transform:rotate(-2deg)}
.promo{margin:16px 0 6px;padding:12px 14px 14px;border-radius:4px;background:rgba(255,252,244,.45);box-shadow:inset 0 0 0 1px rgba(27,24,20,.08)}
.promo-h{display:flex;align-items:baseline;gap:10px;font-family:var(--f-head);font-size:17px;letter-spacing:.3em;margin-bottom:6px}
.promo-h em{font-style:normal;font-size:22px;letter-spacing:.12em;color:var(--zhu)}
.req{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink3);margin:7px 0;letter-spacing:.08em}
.req>span{flex:none;width:58px}
.req b{flex:none;font-weight:400;min-width:76px;text-align:right;color:var(--ink2)}
.req.ok b{color:var(--qing)}
.req-bar{flex:1;height:6px;border-radius:3px;background:rgba(27,24,20,.08);overflow:hidden}
.req-bar i{display:block;height:100%;background:var(--ink);border-radius:3px;transition:width .8s var(--ease-ink)}
.req.ok .req-bar i{background:var(--qing)}
.req-word{flex:1;color:var(--ink2)}
.promo-btn{margin:12px auto 0}
.promo-btn:disabled{opacity:.35;filter:grayscale(1)}
.dabi-line{text-align:center;font-size:12.5px;line-height:2;letter-spacing:.18em;color:var(--ink3);margin:12px 0 4px}

/* 任务 */
.task{display:flex;gap:12px;align-items:flex-start;padding:14px 2px;border-bottom:1px solid rgba(27,24,20,.08)}
.task-seal{flex:none;width:34px;height:34px;display:flex;align-items:center;justify-content:center;margin-top:2px;border-radius:3px;
  font-family:var(--f-head);font-size:21px;color:var(--paper-letter);background:var(--ink);box-shadow:inset 0 0 0 1.5px rgba(247,239,224,.4);transform:rotate(-3deg)}
.task.r2 .task-seal,.task.r3 .task-seal{background:var(--zhu)}
.task-info{flex:1;min-width:0}
.task-name{font-family:var(--f-head);font-size:19px;letter-spacing:.12em}
.task-brief{font-size:13px;line-height:1.75;color:var(--ink2);margin:3px 0 4px}
.task-meta{display:flex;gap:12px;font-size:12px;letter-spacing:.1em;color:var(--ink3)}
.task .risk{color:var(--qing)}
.task.r1 .risk{color:#8a6a2a}.task.r2 .risk,.task.r3 .risk{color:var(--zhu)}
.task-pay{font-size:12px;letter-spacing:.08em;color:var(--ink3);margin-top:2px}
.task .item-use{margin-top:8px}

/* 藏经 */
.lib-h{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--f-head);font-size:18px;letter-spacing:.3em;padding:2px 2px 8px;background:var(--brush-line) left bottom/100% 3px no-repeat}
.lib-h em{font-style:normal;font-family:var(--f-body);font-size:12.5px;letter-spacing:.12em;color:var(--zhu)}
.lib-floor{margin:14px 0 0;font-size:12px;letter-spacing:.4em;color:var(--ink4);text-align:center}
.lib-row.locked{opacity:.45}
.lib-row.known .gf-row-name{color:var(--ink3)}
.lib-row .item-use:disabled{opacity:.55;background-image:var(--brush-img-ink-l);color:var(--ink3)}
.lib-row.confirm .gf-cost{max-height:40px;opacity:1;margin-top:6px}
.lib-row.confirm .item-use{background-image:var(--brush-img-zhu);color:var(--paper-letter)}

/* 人物 */
.npc{position:relative;display:flex;gap:14px;align-items:flex-start;padding:15px 2px;border-bottom:1px solid rgba(27,24,20,.08)}
.npc-seal{flex:none;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:4px;margin-top:2px;
  font-family:var(--f-head);font-size:30px;line-height:1;color:var(--paper-letter);background:var(--zhu);box-shadow:inset 0 0 0 2px rgba(247,239,224,.5),0 0 0 1px rgba(179,48,42,.35);transform:rotate(-4deg)}
.npc.foe .npc-seal{background:#2a2622;box-shadow:inset 0 0 0 2px rgba(247,239,224,.25)}
.npc.close .npc-seal{box-shadow:inset 0 0 0 2px rgba(247,239,224,.7),0 0 12px rgba(179,48,42,.35)}
.npc.unmet{opacity:.5}
.npc.unmet .npc-seal{background:none;color:var(--ink4);box-shadow:inset 0 0 0 1.5px rgba(27,24,20,.25)}
.npc-info{flex:1;min-width:0}
.npc-name{font-family:var(--f-head);font-size:21px;letter-spacing:.12em}
.npc-name em{font-style:normal;font-family:var(--f-body);font-size:12px;letter-spacing:.2em;margin-left:10px;color:var(--zhu)}
.npc.foe .npc-name em{color:var(--ink2)}
.npc-title{font-size:12px;letter-spacing:.12em;color:var(--ink3);margin-top:1px}
.npc-trait{font-size:13px;color:var(--ink2);margin-top:4px}
.npc-aff{position:relative;height:5px;margin:9px 0 6px;border-radius:3px;background:rgba(27,24,20,.07)}
.npc-aff b{position:absolute;left:50%;top:-3px;width:1px;height:11px;background:rgba(27,24,20,.35)}
.npc-aff i{position:absolute;top:0;bottom:0;background:var(--zhu);border-radius:3px}
.npc-aff i.neg{background:var(--ink)}
.npc-line{font-size:13px;line-height:1.8;color:var(--ink3);font-style:normal}

/* ---------- 大比 ---------- */
.duel{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:31;display:flex;flex-direction:column;align-items:stretch;color:var(--paper-hi);overflow:hidden;
  padding:calc(var(--sat) + 16px) 22px calc(var(--sab) + 18px)}
.duel-shade{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;inset:-2px;background:radial-gradient(ellipse 90% 60% at 50% 46%,rgba(30,27,23,.988),rgba(12,10,9,1) 72%);opacity:0;transition:opacity .9s}
.duel.go .duel-shade{opacity:1}
.duel-ink{position:absolute;left:50%;top:46%;width:150vmax;height:150vmax;margin:-75vmax 0 0 -75vmax;background:radial-gradient(closest-side,rgba(18,14,12,.55),rgba(18,14,12,.16) 58%,rgba(18,14,12,0) 76%);opacity:0;transform:scale(.1)}
.duel.go .duel-ink{animation:duelInk 1.6s var(--ease-ink) forwards}
@keyframes duelInk{0%{opacity:.0;transform:scale(.05) rotate(-20deg)}20%{opacity:.9}100%{opacity:.55;transform:scale(1) rotate(10deg)}}
.duel>*:not(.duel-shade):not(.duel-ink){position:relative;opacity:0;transition:opacity .8s .5s}
.duel.go>*:not(.duel-shade):not(.duel-ink){opacity:1}
.duel-head{display:flex;justify-content:center;align-items:baseline;gap:12px;font-family:var(--f-head);font-size:16px;letter-spacing:.4em;color:rgba(239,230,211,.62)}
.duel-head em{font-style:normal;color:#d0574d;letter-spacing:.3em}
.duel-side{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.duel-side.me{margin-top:0;margin-bottom:12px;flex-direction:row-reverse}
.duel-side.me .duel-id{text-align:right}
.duel-name{font-family:var(--f-head);font-size:30px;letter-spacing:.14em;line-height:1.2}
.duel-style{font-size:12px;letter-spacing:.16em;color:rgba(239,230,211,.55);margin-top:3px}
.duel-hp{display:flex;gap:8px}
.duel-hp i{width:22px;height:22px;background:var(--blot) center/contain no-repeat;filter:invert(.92) sepia(.2);opacity:.9;transition:opacity .4s,transform .4s}
.duel-side.me .duel-hp i{filter:invert(.92) sepia(.2)}
.duel-hp i.lost{opacity:.16;transform:scale(.7)}
.duel-hp i.hit{animation:pipHit .7s var(--ease-ink)}
@keyframes pipHit{0%{opacity:1;transform:scale(1.5);filter:none}40%{opacity:1;filter:sepia(1) saturate(6) hue-rotate(-30deg) brightness(.7)}100%{opacity:.16;transform:scale(.7)}}
.duel-stage{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:0}
.duel-round{font-family:var(--f-cao);font-size:40px;letter-spacing:.1em;color:rgba(239,230,211,.9);min-height:1.2em}
.duel-tell{max-width:330px;min-height:3.8em;margin:8px auto 0;font-size:15px;line-height:1.95;color:rgba(239,230,211,.72);font-style:normal}
.duel-text{max-width:330px;min-height:4em;margin:6px auto 0;font-size:15.5px;line-height:1.95;color:rgba(239,230,211,.95)}
.duel-clash{position:relative;width:100%;height:96px;pointer-events:none}
.duel-clash span{position:absolute;left:50%;top:50%;font-family:var(--f-cao);font-size:64px;line-height:1;margin:-32px 0 0 -32px;width:64px;text-align:center;opacity:0}
.dc-o{color:#d0574d}
.dc-m{color:var(--paper-hi)}
.duel.clash-on .dc-o{animation:dcO .9s var(--ease-ink) forwards}
.duel.clash-on .dc-m{animation:dcM .9s var(--ease-ink) forwards}
@keyframes dcO{0%{opacity:0;transform:translate3d(-40px,-120px,0) scale(1.6)}55%{opacity:1;transform:translate3d(-34px,0,0) scale(1)}100%{opacity:.85;transform:translate3d(-44px,0,0)}}
@keyframes dcM{0%{opacity:0;transform:translate3d(40px,120px,0) scale(1.6)}55%{opacity:1;transform:translate3d(34px,0,0) scale(1)}100%{opacity:.85;transform:translate3d(44px,0,0)}}
.duel-slash{position:absolute;left:-22px;right:-22px;top:6%;height:68%;width:calc(100% + 44px);pointer-events:none;overflow:visible}
.duel-slash .sl{opacity:0;clip-path:inset(0 100% 0 0)}
.duel.strike .duel-slash .sl{animation:slash .42s cubic-bezier(.7,0,.2,1) forwards,slashFade 1.6s .55s ease-in forwards}
@keyframes slash{0%{opacity:1;clip-path:inset(0 100% 0 0)}100%{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes slashFade{to{opacity:.0}}
.duel-splash{position:absolute;left:50%;top:38%;width:240px;height:240px;margin:-120px 0 0 -120px;pointer-events:none;opacity:0;
  background:var(--seal-red);-webkit-mask:var(--blot-stone) center/contain no-repeat;mask:var(--blot-stone) center/contain no-repeat}
.duel-splash.to-o{background:#efe6d3;top:26%}
.duel-splash.to-m{top:52%}
.duel-splash.on{animation:splash 1.4s var(--ease-ink) forwards}
@keyframes splash{0%{opacity:0;transform:scale(.2) rotate(0)}15%{opacity:.5}100%{opacity:0;transform:scale(1.25) rotate(25deg)}}
.duel.big .duel-stage{animation:shake .5s}
.duel.hit-me .duel-side.me .duel-name{animation:hitFlash .6s}
.duel.hit-o .duel-side.opp .duel-name{animation:hitFlash .6s}
@keyframes hitFlash{30%{color:#d0574d;transform:translateX(-4px)}60%{transform:translateX(3px)}}
.duel-stamp{position:absolute;right:8%;top:8%;width:84px;height:84px;opacity:0;pointer-events:none}
.duel-stamp.on{animation:stampBig .6s cubic-bezier(.3,1.7,.5,1) forwards}
.duel.lost .duel-stamp{filter:saturate(.35) brightness(.8)}
.duel-moves{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;transition:opacity .4s,transform .4s;opacity:.25!important;pointer-events:none;transform:translateY(6px)}
.duel-moves.on{opacity:1!important;pointer-events:auto;transform:none}
.duel.over .duel-moves{display:none}
.dmove{position:relative;height:78px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--paper-hi);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.dmove .dm-ink{position:absolute;top:4px;right:2px;bottom:4px;left:2px;inset:4px 2px;background:var(--blot) center/contain no-repeat;filter:invert(.9) sepia(.25);opacity:.13;transition:opacity .3s,transform .3s}
.dmove b{position:relative;font-weight:400;font-family:var(--f-cao);font-size:36px;line-height:1}
.dmove small{position:relative;font-size:12px;letter-spacing:.04em;color:rgba(239,230,211,.88);margin-top:4px;white-space:nowrap}
.dmove:active{transform:scale(.92)}
.dmove:active .dm-ink{opacity:.3;transform:scale(1.15) rotate(12deg)}
.dmove.picked .dm-ink{opacity:.32}
.dmove.picked b{color:#e08a7f}
.dmove:disabled{opacity:.25}
.dmove[data-m=qi] b{color:#e0b46a}
.duel-next{margin:0 auto}
.duel.leave{animation:btLeave 1s var(--ease-ink) forwards}
.duel.intro .duel-tell{color:rgba(239,230,211,.88)}

/* ---------- 晋升 ---------- */
.rite{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:32;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--paper-hi);overflow:hidden;
  padding:calc(var(--sat) + 20px) 30px calc(var(--sab) + 26px)}
.rite-shade{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;inset:-2px;background:radial-gradient(ellipse 80% 60% at 50% 40%,rgba(28,24,20,.9),rgba(10,8,7,.98) 72%);opacity:0;transition:opacity 1s}
.rite.go .rite-shade{opacity:1}
.rite-rays{position:absolute;left:50%;top:34%;width:150vmin;height:150vmin;margin:-75vmin 0 0 -75vmin;opacity:0;
  background:repeating-conic-gradient(from 0deg,rgba(214,176,106,.13) 0deg 3deg,transparent 3deg 15deg);-webkit-mask:radial-gradient(circle,#000 0,transparent 62%);mask:radial-gradient(circle,#000 0,transparent 62%)}
.rite.show .rite-rays{animation:riteRays 3s var(--ease-ink) forwards,riteSpin 60s linear infinite}
@keyframes riteRays{to{opacity:1}}
@keyframes riteSpin{to{transform:rotate(360deg)}}
.rite-token{position:relative;width:150px;height:330px;opacity:0;transform:translate3d(0,24px,0) scale(1.12)}
.rite.show .rite-token{animation:tokenIn 1.8s var(--ease-ink) forwards}
.rite.show .rite-token .token-svg{filter:drop-shadow(0 18px 22px rgba(0,0,0,.4))}
@keyframes tokenIn{to{opacity:1;transform:none}}
.rite-token .token-svg{width:100%;height:100%;overflow:visible}
.rite-token .tk-cord{stroke:#9e2a22;stroke-width:2.5;fill:none}
.rite.show .tk-sheen{animation:sheen 1.6s 1.2s ease-in-out forwards}
@keyframes sheen{from{transform:rotate(18deg) translateX(0)}to{transform:rotate(18deg) translateX(380px)}}
.rite-token .tk-tassel{transform-origin:70px 280px;animation:tassel 4s ease-in-out infinite alternate}
@keyframes tassel{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
.rite-token::after{content:"";position:absolute;right:-20px;bottom:40px;width:56px;height:56px;opacity:0;
  background:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect x='5' y='5' width='90' height='90' rx='8' fill='%23b3302a'/%3E%3Crect x='14' y='14' width='72' height='72' fill='none' stroke='%23f3ead6' stroke-width='3'/%3E%3C/svg%3E") center/contain no-repeat}
.rite.stamped .rite-token::after{animation:stampBig .55s cubic-bezier(.3,1.7,.5,1) forwards}
.rite-title{position:relative;margin-top:18px;font-family:var(--f-head);font-size:30px;letter-spacing:.24em;opacity:0}
.rite-title span{font-family:var(--f-cao);color:#e0b46a;margin-right:10px;font-size:34px}
.rite.stamped .rite-title{animation:fadeIn 1s forwards}
.rite-text{position:relative;max-width:400px;margin-top:14px;font-size:15.5px;line-height:2;text-align:justify;color:rgba(239,230,211,.92);min-height:4em}
.rite-tags{position:relative;justify-content:center;opacity:0;margin-top:6px}
.rite-tags.bleed-in{opacity:1}
.rite-tags span{color:#e6c88a!important}
.rite #rite-close{margin-top:16px}
.rite.leave{animation:btLeave 1s var(--ease-ink) forwards}
@media (prefers-reduced-motion:reduce){
  .rite-token,.rite.show .rite-token{animation:none;opacity:1;transform:none;filter:none}
  .rite.show .rite-rays{animation:none;opacity:1}
  .duel.clash-on .dc-o,.duel.clash-on .dc-m{animation-duration:.01s}
  .duel.strike .duel-slash .sl{animation:slash .01s forwards,slashFade .01s 1.2s forwards}
  .duel-splash.on,.duel.big .duel-stage{animation:none}
}

/* ================= v0.8 江湖 ================= */
/* ---------- 长卷地图 ---------- */
.map{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:19;display:flex;flex-direction:column;padding:calc(var(--sat) + 10px) 0 calc(var(--sab) + 12px);
  background:linear-gradient(rgba(242,235,219,.94),rgba(242,235,219,.94)),var(--paper-img);background-size:auto,256px;
  opacity:0;transition:opacity .4s var(--ease-ink)}
.map.open{opacity:1}
.map-head{display:flex;align-items:center;gap:10px;padding:0 16px 8px}
.map-ttl{flex:1;min-width:0;display:flex;flex-direction:column}
.map-ttl b{font-family:var(--f-head);font-weight:400;font-size:30px;letter-spacing:.3em;line-height:1.1}
.map-ttl span{font-size:11.5px;color:var(--ink3);letter-spacing:.12em;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:44px;min-width:52px;padding:5px 14px 4px;background:var(--brush-img-ink-l) center/100% 100% no-repeat;transition:transform .2s var(--ease-ink),filter .2s}
.map-btn span{font-family:var(--f-head);font-size:17px;letter-spacing:.2em;padding-left:.2em;line-height:1.1}
.map-btn small{font-size:12px;color:var(--ink2);letter-spacing:.12em}
.map-btn:active{transform:scale(.94);filter:brightness(.9)}
.map-close{width:46px;height:46px;padding:2px;flex:none}
.map-close svg{width:100%;height:100%}
.map-scroll-wrap{position:relative;flex:1;min-height:0;margin:0 0 6px}
.map-roller{position:absolute;top:-6px;bottom:-6px;width:13px;z-index:3;border-radius:7px;pointer-events:none;
  background:linear-gradient(90deg,#5b4a39,#8a7259 30%,#b39a7a 50%,#7d6650 75%,#4e3f31)}
.map-roller.l{left:2px}.map-roller.r{right:2px}
.map-roller::before,.map-roller::after{content:"";position:absolute;left:-2px;right:-2px;height:9px;border-radius:3px;background:linear-gradient(90deg,#e9e2cf,#c7bc9f 45%,#a59a7d 70%,#d8cfb8)}
.map-roller::before{top:-4px}.map-roller::after{bottom:-4px}
.map-scroll{position:absolute;top:0;right:13px;bottom:0;left:13px;inset:0 13px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;
  box-shadow:inset 10px 0 12px -10px rgba(60,40,20,.4),inset -10px 0 12px -10px rgba(60,40,20,.4)}
.map-scroll::-webkit-scrollbar{display:none}
.map-canvas{position:relative;height:100%;aspect-ratio:2600/560;opacity:0;transition:opacity .7s var(--ease-ink)}
.map.ready .map-canvas{opacity:1}
.map-canvas img{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;display:block;pointer-events:none;-webkit-user-drag:none}
.map-far{opacity:.9;will-change:transform}
.map-loading{position:absolute;left:0;right:0;top:44%;text-align:center;font-size:13px;letter-spacing:.4em;color:var(--ink3);transition:opacity .4s}
.map.ready .map-loading{opacity:0}
.map-road{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.map-road path{fill:none;stroke-linecap:round}
.road-all{stroke:rgba(27,24,20,.14);stroke-width:1.6;stroke-dasharray:2 7}
.road-known{stroke:rgba(27,24,20,.42);stroke-width:2;stroke-dasharray:6 6}
.road-go{stroke:var(--seal-red);stroke-width:3;opacity:.85;stroke-dasharray:0 99999}
.map-marks{position:absolute;top:0;right:0;bottom:0;left:0;inset:0}
.map-fog{position:absolute;width:15%;height:84%;transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(ellipse 50% 46% at 50% 55%,rgba(244,239,226,.97),rgba(244,239,226,.86) 55%,rgba(244,239,226,0) 100%)}
.map-tag{position:absolute;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;padding:2px;min-width:44px;z-index:2}
.tag-slip{display:block;padding:6px 3px 5px;background:rgba(249,245,233,.92);border:1px solid rgba(27,24,20,.55);box-shadow:0 0 0 2px rgba(249,245,233,.85),0 0 0 3px rgba(27,24,20,.18);
  font-family:var(--f-head);font-size:16px;color:var(--ink);transition:transform .3s var(--ease-ink),box-shadow .3s}
.tag-slip .vcol i{width:1.2em;line-height:1.15;margin-bottom:0}
.tag-seal{display:block;width:17px;height:17px;line-height:17px;text-align:center;font-family:var(--f-head);font-size:12px;color:var(--seal-paper);background:var(--seal-red);border-radius:2px;filter:url(#f-seal);opacity:.9}
.tag-flag{position:absolute;left:100%;top:6px;margin-left:3px;white-space:nowrap;writing-mode:vertical-rl;font-size:11px;letter-spacing:.12em;padding:3px 1px;color:var(--seal-paper);background:rgba(27,24,20,.88);border-radius:2px}
.tag-flag.gold{background:#a8742c;top:auto;bottom:24px}
.map-tag.sel .tag-slip{transform:scale(1.12);border-color:var(--seal-red);box-shadow:0 0 0 2px rgba(249,245,233,.9),0 0 0 3px rgba(179,48,42,.55)}
.map-tag.locked .tag-slip{opacity:.55}
.map-tag:active .tag-slip{transform:scale(1.06)}
.map-pt{position:absolute;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:rgba(27,24,20,.6)}
.map-me{position:absolute;width:0;height:0;z-index:3;pointer-events:none}
.me-dot{position:absolute;width:15px;height:15px;left:-7.5px;top:-7.5px;border-radius:50%;background:radial-gradient(circle at 42% 40%,#cf4337,#a8291f 70%);box-shadow:0 0 0 2px rgba(249,245,233,.9),0 1px 4px rgba(0,0,0,.35);filter:url(#f-seal)}
.me-halo{position:absolute;width:34px;height:34px;left:-17px;top:-17px;border-radius:50%;border:1.5px solid rgba(179,48,42,.55);animation:meHalo 2.4s ease-out infinite}
@keyframes meHalo{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.25);opacity:0}}
.map-card{flex:none;margin:0 14px;padding:12px 14px 12px;border-top:1px solid rgba(27,24,20,.14);min-height:186px}
.mc-head{display:flex;align-items:center;gap:10px}
.mc-seal{width:30px;height:30px;line-height:30px;text-align:center;flex:none;font-family:var(--f-head);font-size:19px;color:var(--seal-paper);background:var(--seal-red);border-radius:3px;filter:url(#f-seal)}
.mc-name{flex:1;font-family:var(--f-head);font-size:25px;letter-spacing:.16em}
.mc-name em{font-style:normal;font-family:var(--f-body);font-size:11px;color:var(--zhu);border:1px solid rgba(179,48,42,.6);border-radius:2px;padding:1px 4px;margin-left:8px;letter-spacing:.1em;vertical-align:4px}
.mc-danger{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.mc-danger .dots{display:flex;gap:3px}
.mc-danger i{width:8px;height:8px;border-radius:50%;border:1px solid rgba(27,24,20,.5)}
.mc-danger i.on{background:var(--ink);border-color:var(--ink)}
.mc-danger small{font-size:12px;color:var(--ink2);letter-spacing:.12em}
.mc-desc{font-size:14px;line-height:1.85;color:var(--ink2);margin:8px 0 4px}
.mc-meta{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:11.5px;color:var(--ink3);letter-spacing:.06em}
.mc-meta .zhu{color:var(--zhu)}
.mc-btns{display:flex;gap:8px;margin-top:10px}
.mc-btn{flex:1;display:flex;flex-direction:column;align-items:center;padding:8px 4px 6px;border:1.5px solid rgba(27,24,20,.3);border-radius:4px;color:var(--ink3)}
.mc-btn b{font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.2em;padding-left:.2em;line-height:1.15}
.mc-btn small{font-size:12px;letter-spacing:.08em;margin-top:1px;color:inherit}
.mc-btn.on{color:var(--paper-hi);border-color:transparent;background:var(--brush-img) center/100% 100% no-repeat}
.mc-btn.on:first-child{background-image:var(--brush-img)}
.mc-btn.on:not(:first-child){color:var(--zhu);background:none;border-color:var(--zhu)}
.mc-btn:active:not(:disabled){transform:scale(.96)}
.mc-btn:disabled{opacity:.5}

/* ---------- 坊市 ---------- */
.mkt-bar{display:flex;align-items:center;gap:10px;padding:2px 2px 8px;border-bottom:1px solid rgba(27,24,20,.1)}
.mkt-bark{flex:1;font-size:12.5px;line-height:1.7;color:var(--ink3)}
.mkt-ls{flex:none;font-size:12px;color:var(--ink3);letter-spacing:.1em}
.mkt-ls b{font-family:var(--f-head);font-weight:400;font-size:18px;color:var(--ink);margin-left:2px}
.item-use.price{display:flex;flex-direction:column;align-items:center;min-width:68px;padding:6px 12px 4px}
.item-use.price b{font-weight:400;font-size:16px;letter-spacing:.04em;line-height:1.1}
.item-use.price small{font-family:var(--f-body);font-size:11px;letter-spacing:.12em;color:var(--ink2)}
.mkt-buy{display:flex;align-items:center;gap:6px;flex:none}
.qty{display:flex;align-items:center;gap:2px}
.qty-btn{width:28px;height:28px;border:1px solid rgba(27,24,20,.35);border-radius:2px;color:var(--ink);font-size:16px;line-height:1}
.qty-n{min-width:1.4em;text-align:center;font-weight:400;font-size:13px;color:var(--ink)}
.item-use.price.arm,.item-use.price[data-arm="1"]{box-shadow:inset 0 0 0 1px var(--zhu)}
.item-use:disabled{opacity:.42;color:var(--ink3);background-image:var(--brush-img-ink-l)}
.tr{font-style:normal;font-size:12px;margin-left:6px;padding:0 3px;border-radius:2px;vertical-align:2px}
.tr.up{color:#9a3a2e;border:1px solid rgba(154,58,46,.5)}
.tr.dn{color:#2f4f45;border:1px solid rgba(47,79,69,.5)}
.auc-banner{text-align:center;padding:14px 8px 6px}
.ab-lamps{display:flex;justify-content:center;gap:26px;margin-bottom:8px}
.ab-lamps i{width:18px;height:34px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 76'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.45' cy='.45' r='.6'%3E%3Cstop offset='0' stop-color='%23e9895f'/%3E%3Cstop offset='.55' stop-color='%23b8402c'/%3E%3Cstop offset='1' stop-color='%23701e16'/%3E%3C/radialGradient%3E%3C/defs%3E%3Cpath d='M20 0v10' stroke='%23241c16' stroke-width='1.2'/%3E%3Cpath d='M13 10h14l-1 4H14z' fill='%23241c16'/%3E%3Cellipse cx='20' cy='31' rx='16' ry='18' fill='url(%23g)'/%3E%3Cpath d='M20 13c-6 5-6 31 0 36M20 13c6 5 6 31 0 36M11 16c-6 8-6 22 0 30M29 16c6 8 6 22 0 30' stroke='%23601a12' stroke-opacity='.45' stroke-width='.9' fill='none'/%3E%3Cpath d='M14 48h12l1 4H13z' fill='%23241c16'/%3E%3Cpath d='M20 52v6' stroke='%23241c16' stroke-width='1'/%3E%3Cpath d='M17 58c1 6 1 12 0 17M20 58v18M23 58c-1 6-1 12 0 17' stroke='%23a8291f' stroke-width='1.1' fill='none'/%3E%3C/svg%3E") center/contain no-repeat;transform-origin:50% 0;animation:lampSway 3s ease-in-out infinite alternate}
.ab-lamps i:nth-child(2){animation-delay:-1s}.ab-lamps i:nth-child(3){animation-delay:-2s}
@keyframes lampSway{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
.ab-ttl{font-family:var(--f-head);font-size:22px;letter-spacing:.3em}
.auc-banner p{font-size:14px;line-height:1.9;color:var(--ink2);margin:8px 6px 14px;text-align:left}
.auc-banner .brush-btn{margin:0 auto}

/* ---------- 拍卖会 ---------- */
.auc,.dan{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:28;display:flex;flex-direction:column;align-items:center;overflow:hidden;
  padding:calc(var(--sat) + 18px) 22px calc(var(--sab) + 18px);opacity:0;transition:opacity .5s var(--ease-ink)}
.auc.open,.dan.open{opacity:1}
.auc-shade,.dan-shade{position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;inset:-2px}
.auc-shade{background:radial-gradient(ellipse 90% 60% at 50% 40%,rgba(42,30,24,.985),rgba(12,10,9,1) 74%)}
.auc>*:not(.auc-shade):not(.auc-stamp){position:relative}
.auc-lamps{display:flex;justify-content:space-between;width:100%;max-width:340px;height:30px}
.auc-lamps{height:60px;margin-top:-6px}
.auc-lamps i{position:relative;width:24px;height:46px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 76'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.45' cy='.45' r='.6'%3E%3Cstop offset='0' stop-color='%23e9895f'/%3E%3Cstop offset='.55' stop-color='%23b8402c'/%3E%3Cstop offset='1' stop-color='%23701e16'/%3E%3C/radialGradient%3E%3C/defs%3E%3Cpath d='M20 0v10' stroke='%23241c16' stroke-width='1.2'/%3E%3Cpath d='M13 10h14l-1 4H14z' fill='%23241c16'/%3E%3Cellipse cx='20' cy='31' rx='16' ry='18' fill='url(%23g)'/%3E%3Cpath d='M20 13c-6 5-6 31 0 36M20 13c6 5 6 31 0 36M11 16c-6 8-6 22 0 30M29 16c6 8 6 22 0 30' stroke='%23601a12' stroke-opacity='.45' stroke-width='.9' fill='none'/%3E%3Cpath d='M14 48h12l1 4H13z' fill='%23241c16'/%3E%3Cpath d='M20 52v6' stroke='%23241c16' stroke-width='1'/%3E%3Cpath d='M17 58c1 6 1 12 0 17M20 58v18M23 58c-1 6-1 12 0 17' stroke='%23a8291f' stroke-width='1.1' fill='none'/%3E%3C/svg%3E") center/contain no-repeat;transform-origin:50% 0;animation:lampSway 3.4s ease-in-out infinite alternate}
.auc-lamps i::before{content:"";position:absolute;left:-26px;right:-26px;top:-8px;height:70px;background:radial-gradient(closest-side,rgba(224,120,80,.22),transparent);pointer-events:none}
.auc-lamps i:nth-child(odd){animation-delay:-1.7s}
.auc-head{display:flex;gap:12px;align-items:baseline;font-family:var(--f-head);font-size:17px;letter-spacing:.4em;color:rgba(239,230,211,.65);margin-top:8px}
.auc-head em{font-style:normal;font-family:var(--f-body);font-size:12px;letter-spacing:.2em;color:#d58a6c}
.auc-lot{position:relative;margin-top:26px;text-align:center;max-width:330px}
.auc-lot::before{content:"";position:absolute;left:50%;top:-30px;width:250px;height:250px;margin-left:-125px;background:radial-gradient(closest-side,rgba(224,140,100,.9),rgba(224,140,100,0) 72%);opacity:.08;pointer-events:none}
.auc-name{font-family:var(--f-head);font-size:40px;letter-spacing:.18em;line-height:1.2;color:#efe4cc;text-shadow:0 0 26px rgba(224,120,80,.18)}
.auc-desc{font-size:13.5px;line-height:1.85;color:rgba(239,230,211,.62);margin-top:8px}
.auc-price{display:flex;align-items:baseline;gap:8px;margin-top:20px;flex-wrap:wrap;justify-content:center}
.auc-price small{font-size:12px;letter-spacing:.3em;color:rgba(239,230,211,.5)}
.auc-price b{position:relative;z-index:0;font-family:var(--f-head);font-weight:400;font-size:36px;color:#efe4cc;letter-spacing:.04em;padding:0 10px}
.auc-price b::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:10px;background:var(--brush-bar-zhu) center/100% 100% no-repeat;opacity:.6;z-index:-1}
.auc-price span{font-size:13px;color:rgba(239,230,211,.6)}
.auc-price em{flex-basis:100%;text-align:center;font-style:normal;font-size:12px;letter-spacing:.2em;color:#d0574d}
.auc-lines{flex:0 1 auto;min-height:0;width:100%;max-width:340px;margin-top:22px;padding-top:14px;border-top:1px solid rgba(239,228,204,.12);display:flex;flex-direction:column;gap:7px;overflow:hidden}
.al{font-size:14px;line-height:1.75;color:rgba(239,230,211,.82);animation:fadeIn .5s}
.al b{font-weight:400;font-family:var(--f-head);font-size:15px;color:#d58a6c;margin-right:8px}
.al.me b{color:var(--seal-paper)}
.al.sys{color:rgba(239,230,211,.55);font-size:13px;text-align:center}
.auc-me{font-size:12px;letter-spacing:.15em;color:rgba(239,230,211,.5);margin:auto 0 8px;padding-top:10px}
.auc-me b{font-weight:400;color:rgba(239,230,211,.85)}
.auc-btns{display:flex;gap:10px;width:100%;max-width:340px;justify-content:center;min-height:58px}
.ab{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:62px;padding:8px 4px 6px;color:#efe4cc;background:var(--brush-img-night) center/100% 100% no-repeat;transition:transform .2s var(--ease-ink),filter .25s}
.ab:nth-child(2){background-size:104% 92%}
.ab b{font-family:var(--f-head);font-weight:400;font-size:19px;letter-spacing:.16em;padding-left:.16em}
.ab small{font-size:11px;color:rgba(239,230,211,.55);min-height:1.2em}
.ab.pass{background:none;color:rgba(239,230,211,.7)}
.ab.pass b{text-decoration:underline 1px rgba(239,230,211,.25);text-underline-offset:6px}
.ab:active:not(:disabled){transform:scale(.94);filter:brightness(1.35)}
.ab:disabled{opacity:.3}
.auc-btns.wait{pointer-events:none;opacity:.6}
.auc-stamp,.dan-stamp{position:absolute;right:30px;top:30%;width:84px;height:84px;opacity:0;transform:scale(2.4) rotate(-14deg);pointer-events:none}
.auc-stamp.on,.dan-stamp.on{animation:stampIn .5s cubic-bezier(.3,1.5,.5,1) forwards}
.auc-stamp.lost{filter:grayscale(.8) brightness(.8)}
@keyframes stampIn{0%{opacity:0;transform:scale(2.4) rotate(-14deg)}100%{opacity:.92;transform:scale(1) rotate(-8deg)}}

/* ---------- 丹炉：纸上一鼎，水色炉火（v0.8.1 重绘） ---------- */
.dan{justify-content:center;color:var(--ink);background:none}
.dan>*:not(.dan-shade):not(.dan-stamp){position:relative}
.dan-shade{background:radial-gradient(ellipse 80% 60% at 50% 42%,rgba(250,245,232,.0),rgba(120,92,58,.10) 70%,rgba(80,58,34,.22) 100%),
  linear-gradient(rgba(243,236,220,.97),rgba(243,236,220,.97)),var(--paper-img);background-size:auto,auto,256px}
.dan-shade::after{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;background:var(--mtn-img) center bottom/100% auto no-repeat;opacity:.1;pointer-events:none}
.dan-head2{display:flex;align-items:baseline;gap:10px;font-family:var(--f-head);font-size:16px;letter-spacing:.42em;color:var(--ink3);margin-bottom:2px}
.dan-head2 em{font-style:normal;font-family:var(--f-body);font-size:12px;letter-spacing:.2em;color:var(--zhu)}
.dan-stage{position:relative;width:min(88vw,440px);height:min(88vw,440px,50vh);flex:none}
.dan-gl{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.dan-ding-img{position:absolute;left:50%;top:50%;height:50%;width:auto;transform:translate(-50%,-50%);pointer-events:none}
.dan.nogl.boom .dan-stage{animation:boomShake .5s linear}
.dan.nogl.ok .dan-ding-img,.dan.nogl.gold .dan-ding-img{filter:drop-shadow(0 0 18px rgba(204,150,64,.5))}
@keyframes boomShake{0%,100%{transform:none}20%{transform:translate(-8px,4px)}40%{transform:translate(7px,-5px)}60%{transform:translate(-5px,-3px)}80%{transform:translate(4px,3px)}}
.dan-name{font-family:var(--f-head);font-size:32px;letter-spacing:.34em;padding-left:.34em;margin-top:2px;color:var(--ink)}
.dan.gold .dan-name{color:#8a5a1e}
.dan.boom .dan-name,.dan.waste .dan-name{color:var(--ink2)}
.dan-text{max-width:340px;min-height:3.9em;margin-top:8px;font-size:15.5px;line-height:1.95;color:var(--ink2);text-align:center}
.dan-tags{justify-content:center;opacity:0;min-height:1.6em}
.dan-tags.bleed-in{opacity:1}
.dan-tags span.gold{color:#8a5a1e!important}
.dan-close{margin-top:14px}
.dan-stamp{top:8%;right:2%;width:68px;height:68px;z-index:2}
.dan-head{display:flex;align-items:center;gap:14px;padding:4px 2px 12px;border-bottom:1px solid rgba(27,24,20,.1)}
.dan-ding .ding-ico{display:block;width:62px;height:62px;margin:-4px -2px}
.dan-info{flex:1}
.dan-lv{font-size:13px;color:var(--ink3);letter-spacing:.2em}
.dan-lv b{font-family:var(--f-head);font-weight:400;font-size:22px;color:var(--ink);margin-left:4px}
.dan-xp{height:4px;background:rgba(27,24,20,.1);border-radius:2px;margin:6px 0 4px;overflow:hidden}
.dan-xp i{display:block;height:100%;background:#a8742c}
.dan-info small{font-size:11px;color:var(--ink3);letter-spacing:.1em}
.dan-need{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:12px;margin-top:3px}
.dan-need .ok{color:#2f4f45}.dan-need .no{color:#9a3a2e}.dan-need .t{color:var(--ink3)}
.dan-row.unknown{opacity:.45}

/* ---------- 秘境 ---------- */
.mj{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:22;display:flex;flex-direction:column;padding:calc(var(--sat) + 12px) 18px calc(var(--sab) + 12px);--tint:#4e5a46;
  background:linear-gradient(rgba(240,233,217,.95),rgba(240,233,217,.95)),var(--paper-img);background-size:auto,256px;opacity:0;transition:opacity .6s var(--ease-ink)}
.mj.open{opacity:1}
.mj-wash{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;opacity:.9;
  background:radial-gradient(ellipse 120% 40% at 50% 0%,rgba(78,90,70,.45),transparent 70%),radial-gradient(ellipse 120% 30% at 50% 100%,rgba(78,90,70,.35),transparent 70%);
  background:radial-gradient(ellipse 120% 40% at 50% 0%,color-mix(in srgb,var(--tint) 45%,transparent),transparent 70%),radial-gradient(ellipse 120% 30% at 50% 100%,color-mix(in srgb,var(--tint) 35%,transparent),transparent 70%)}
.mj>*:not(.mj-wash){position:relative}
.mj-head{display:flex;align-items:center;gap:10px}
.mj-seal{width:38px;height:38px;line-height:38px;text-align:center;font-family:var(--f-head);font-size:24px;color:var(--seal-paper);background:var(--tint);border-radius:4px;filter:url(#f-seal)}
.mj-ttl{flex:1;display:flex;flex-direction:column}
.mj-ttl b{font-family:var(--f-head);font-weight:400;font-size:26px;letter-spacing:.24em;line-height:1.15}
.mj-ttl small{font-size:11.5px;color:var(--ink3);letter-spacing:.2em}
.mj-out{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:56px;font-family:var(--f-head);font-size:16px;letter-spacing:.2em;padding:6px 14px 4px;background:var(--brush-img-ink-l) center/100% 100% no-repeat;color:var(--ink2);transition:transform .2s var(--ease-ink)}
.mj-out:active{transform:scale(.94)}
.mj-out:disabled{opacity:.3}
.mj-chain{display:flex;align-items:center;justify-content:center;margin:14px 0 10px}
.mj-chain i{position:relative;width:24px;height:24px;border-radius:50%;border:1.5px solid rgba(27,24,20,.4);display:flex;align-items:center;justify-content:center;flex:none}
.mj-chain i em{font-style:normal;font-family:var(--f-head);font-size:12px;color:var(--ink3)}
.mj-chain i.past{background:var(--ink);border-color:var(--ink)}
.mj-chain i.past em{color:var(--paper-hi)}
.mj-chain i.cur{border-color:var(--seal-red);box-shadow:0 0 0 3px rgba(179,48,42,.16)}
.mj-chain i.cur em{color:var(--seal-red)}
.mj-chain i.boss{width:30px;height:30px;border-radius:4px}
.mj-chain b{flex:1;max-width:30px;height:1.5px;background:rgba(27,24,20,.25)}
.mj-bars{display:flex;gap:16px}
.mjb{flex:1;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink3);letter-spacing:.1em}
.mjb-t{flex:1;height:6px;background:rgba(27,24,20,.1);border-radius:3px;overflow:hidden}
.mjb-t i{display:block;height:100%;transition:width .8s var(--ease-ink);border-radius:3px}
/* 秘境气血/灵力：笔触形条 */
.mjb-t{height:8px;border-radius:0;background:rgba(27,24,20,.13);-webkit-mask:var(--brush-bar) center/100% 100% no-repeat;mask:var(--brush-bar) center/100% 100% no-repeat}
.mjb-t i{border-radius:0;opacity:.88}
.mjb.hp i{background:#9a3a2e}.mjb.ling i{background:#3d5560}
.mjb b{font-weight:400;font-family:var(--f-head);font-size:14px;color:var(--ink2);min-width:2.6em;text-align:right}
.mjb.low{animation:lowPulse 1.6s ease-in-out infinite}
@keyframes lowPulse{50%{opacity:.55}}
.mj-body{flex:1;min-height:0;margin-top:14px;display:flex}
.mj-node{flex:1;display:flex;gap:12px;min-height:0}
.mj-nt{flex:none;font-family:var(--f-head);font-weight:400;font-size:25px;color:var(--ink);padding-top:4px;border-right:1px solid rgba(27,24,20,.14);padding-right:10px}
.mj-nt .vcol i{line-height:1.2}
.mj-main{flex:1;min-width:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:12px}
.mj-text{font-size:16px;line-height:2;color:var(--ink)}
.mj-result .r-text{font-size:15.5px;line-height:1.95;color:var(--ink2);margin-top:12px;padding-top:12px;border-top:1px solid rgba(27,24,20,.1)}
.mj-result .entry-tags{margin-top:8px}
.mj-nav{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:16px}
.mj-link{font-size:14px;letter-spacing:.3em;color:var(--ink3);padding:6px;border-bottom:1px solid rgba(27,24,20,.25)}
.mj-loot{flex:none;font-size:12px;line-height:1.7;color:var(--ink2);padding-top:8px;border-top:1px solid rgba(27,24,20,.12)}
.mj-loot span{color:var(--ink3);letter-spacing:.2em;margin-right:8px}
.duel.boss .duel-shade{background:radial-gradient(ellipse 90% 60% at 50% 46%,rgba(24,30,34,.988),rgba(8,10,12,1) 72%)}

/* ---------- 墨笺问询（替代原生确认框） ---------- */
.ask{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;transition:opacity .3s var(--ease-ink)}
.ask.open{opacity:1}
.ask-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:rgba(20,16,12,.42)}
.ask-card{max-width:100%;box-sizing:border-box;position:relative;width:min(100%,360px);padding:30px 22px 22px;text-align:center;color:var(--ink);
  background:linear-gradient(rgba(246,240,226,.97),rgba(240,232,214,.97)),var(--paper-img);background-size:auto,256px;
  box-shadow:0 18px 50px rgba(20,14,8,.35),inset 0 0 0 1px rgba(27,24,20,.08);border-radius:3px;transform:translateY(10px) scale(.98);transition:transform .4s var(--ease-ink)}
.ask.open .ask-card{transform:none}
.ask-card::before,.ask-card::after{content:"";position:absolute;left:0;right:0;height:9px;background:linear-gradient(#5a4632,#2a2018);border-radius:5px;pointer-events:none}
.ask-card::before{top:-5px}.ask-card::after{bottom:-5px}
.ask-text{font-size:17px;line-height:1.9;letter-spacing:.06em}
.ask-sub{font-family:var(--f-head);font-size:15px;color:var(--ink3);letter-spacing:.3em;margin-top:4px}
.ask-btns{display:flex;justify-content:center;gap:6px;margin-top:20px;flex-wrap:wrap}
.ask-btns .brush-btn{min-width:120px}
.ask-no{color:var(--ink)}
.ask-no .bb-ink{background-image:var(--brush-img-light)}
.ask-ok.danger .bb-ink{background-image:var(--brush-img-zhu)}
.trial-card{width:min(100%,400px);text-align:left;padding:18px 22px 16px}
.trial-chop{width:72px;height:30px;margin:2px auto 8px;display:flex;align-items:center;justify-content:center;
  font-family:var(--f-head);font-size:16px;letter-spacing:.22em;color:#f6f0e2;background:#9a332c;border-radius:2px;
  transform:rotate(-7deg);box-shadow:1px 2px 0 rgba(80,20,16,.28)}
.trial-card-title{font-family:var(--f-head);font-weight:400;font-size:34px;letter-spacing:.32em;text-align:center;margin:0 0 4px;padding-left:.32em}
.trial-lead{text-align:center;font-size:15px;letter-spacing:.1em;color:var(--ink2);margin:0 0 12px}
.trial-rule{display:flex;gap:10px;align-items:baseline;margin:0 0 7px;font-size:14.5px;line-height:1.6;color:var(--ink)}
.trial-rule i{flex:none;width:2.4em;font-style:normal;font-family:var(--f-head);color:var(--zhu);letter-spacing:.16em}
.trial-card .ask-btns{margin-top:12px}

/* =====================================================================
   v0.8.1 · 宽屏与输入
   ===================================================================== */
.side{display:none}
.sd-trace{list-style:none;margin:6px 0 0;padding:0}
.sd-trace li{font-size:12.5px;line-height:1.65;color:var(--ink2);cursor:pointer}
.sd-trace em{font-style:normal;font-family:var(--f-head);color:var(--zhu);margin-right:6px;letter-spacing:.12em}
.sd-trace p{margin:2px 0 8px;font-size:12.5px;line-height:1.7;color:var(--ink3)}
.trace-note{display:none;margin:0 4px 4px;padding:0;font-size:13px;line-height:1.45;color:var(--ink2)}
.trace-note.on{display:block}
.trace-sum{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0 10px;border:1px solid rgba(27,24,20,.16);background:transparent;color:var(--ink2);font:inherit;letter-spacing:.06em;text-align:left;white-space:nowrap;overflow:hidden}
.trace-sum::after{content:"展开 ›";flex:none;margin-left:auto;font-family:var(--f-head);font-size:13px;letter-spacing:.12em;color:var(--ink3)}
.trace-sec h4{font-family:var(--f-head);font-weight:400;font-size:15px;letter-spacing:.28em;color:var(--ink3);margin:4px 0 8px}
.trace-sec + .trace-sec{margin-top:16px}
.mark-list{list-style:none;margin:0;padding:0}
.mark-row{display:flex;align-items:flex-start;gap:8px;width:100%;padding:8px 2px;border:0;border-bottom:1px solid rgba(27,24,20,.08);background:transparent;color:var(--ink);font:inherit;font-size:15px;line-height:1.5;text-align:left}
.mark-row i{flex:none;width:24px;height:24px;border-radius:2px;background:#9a332c;color:#f6f0e2;font-family:var(--f-head);font-style:normal;font-size:13px;line-height:24px;text-align:center;transform:rotate(-8deg)}
.mark-row span{flex:1;min-width:0}
.mark-colo{margin:2px 0 8px 32px;font-size:13px;line-height:1.7;color:rgba(122,48,40,.92)}
.mark-colo[hidden]{display:none!important}
.sheet-x{position:absolute;top:12px;right:12px;z-index:3;width:36px;height:36px;border:0;background:transparent;color:var(--ink3);font-size:22px;line-height:1}
.sheet-x[hidden]{display:none!important}
/* 地图行动：墨色笔触代替方框 */
.mc-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:52px;padding:8px 4px 6px;border:0;border-radius:0;color:var(--ink3);background:var(--brush-img-ink-l) center/100% 100% no-repeat;transition:transform .2s var(--ease-ink),filter .2s}
.mc-btn.on{color:var(--paper-hi);background:var(--brush-img) center/100% 100% no-repeat}
.mc-btn.on:not(:first-child){color:var(--zhu);background:var(--brush-img-zhu-l) center/100% 100% no-repeat;border:0}
.mc-name em{border:0;background:var(--brush-img-zhu-l) center/100% 100% no-repeat;padding:2px 7px}

/* 鼠标：淡墨悬停 */
@media (hover:hover) and (pointer:fine){
  .act:hover .act-ink{opacity:.25;transform:scale(1.07) rotate(6deg)}
  .act:hover .act-t{transform:translate3d(0,-1px,0)}
  .brush-btn:hover .bb-ink{transform:scale(1.03,1.1);opacity:1}
  .item-use:hover:not(:disabled),.mini-seal:hover,.map-btn:hover,.mj-out:hover:not(:disabled),.mc-btn:hover:not(:disabled){filter:brightness(.93) saturate(1.3)}
  .ab:hover:not(:disabled){filter:brightness(1.3)}
  .stab:hover{color:var(--ink2)}
  .choice:hover:not(:disabled){background:linear-gradient(90deg,rgba(27,24,20,.05),rgba(27,24,20,0))}
  .choice:hover:not(:disabled)::before{transform:scale(1.3)}
  .menu-item:hover{background:linear-gradient(90deg,rgba(27,24,20,0),rgba(27,24,20,.045),rgba(27,24,20,0))}
  .map-tag:hover .tag-slip{transform:scale(1.07)}
  .map-tag.sel:hover .tag-slip{transform:scale(1.12)}
  .map-scroll{cursor:grab}
  .map-scroll.dragging{cursor:grabbing;scroll-behavior:auto}
  .map-scroll.dragging .map-tag{pointer-events:none}
  .side-card:hover{box-shadow:0 12px 30px rgba(60,40,20,.14),inset 0 0 0 1px rgba(27,24,20,.1)}
  .side-card:hover h3{color:var(--ink)}
}
:focus{outline:none}
:focus-visible{outline:2px solid rgba(27,24,20,.82);outline-offset:3px;border-radius:2px}
html[data-theme="night"] :focus-visible{outline-color:rgba(243,234,214,.88)}
.auc :focus-visible,.duel :focus-visible,.bt :focus-visible{outline-color:rgba(239,228,204,.9)}

/* 平板及以上：抽屉改为居中的纸笺 */
@media (min-width:700px) and (min-height:520px){
  .sheet-panel{left:50%;right:auto;top:50%;bottom:auto;width:min(660px,calc(100vw - 72px));max-width:none;max-height:min(84vh,880px);max-height:min(84dvh,880px);margin:0;overflow:hidden;
    padding:20px 32px 26px;border-radius:3px;opacity:0;transform:translate3d(-50%,-46%,0) scale(.978) rotateX(3deg);
    transition:transform .5s var(--ease-curl),opacity .35s var(--ease-curl);box-shadow:0 24px 64px rgba(20,14,8,.32),inset 0 0 0 1px rgba(27,24,20,.07)}
  .sheet.open .sheet-panel{opacity:1;transform:translate3d(-50%,-50%,0) scale(1) rotateX(0deg)}
  .sheet-body{min-height:0}
  .sheet-panel::before,.sheet-panel::after{content:"";position:absolute;left:-7px;right:-7px;height:11px;border-radius:6px;background:linear-gradient(180deg,#5b4433,#2d2119 40%,#1a130e 65%,#3c2d22);box-shadow:0 2px 3px rgba(30,20,10,.3)}
  .sheet-panel::before{top:-6px}.sheet-panel::after{bottom:-6px}
  .sheet-handle{visibility:hidden;height:2px;margin-bottom:6px}
  .hscroll{width:min(100%,660px)}
}
/* iPad 竖屏：单栏放宽 */
@media (min-width:700px) and (max-width:999px){
  #scr-main,#scr-create{max-width:720px}
  .entry-text{font-size:17px}
}

/* 宽屏：卷轴居中，左右两栏 */
@media (min-width:1280px) and (min-height:600px){
  #scr-main{max-width:none;display:grid;grid-template-columns:minmax(210px,290px) minmax(0,720px) minmax(210px,290px);grid-template-rows:minmax(0,1fr) auto auto;
    column-gap:clamp(22px,3.2vw,56px);justify-content:center;padding:30px 36px 16px}
  .hud,.side-card{position:relative;background:linear-gradient(rgba(250,246,234,.74),rgba(250,246,234,.74)),var(--paper-img);background-size:auto,256px;
    box-shadow:0 10px 28px rgba(60,40,20,.10),inset 0 0 0 1px rgba(27,24,20,.06)}
  .hud{grid-column:1;grid-row:1/4;align-self:center;padding:30px 24px 24px;margin-bottom:40px}
  .hud::before,.hud::after{content:"";position:absolute;left:-6px;right:-6px;height:12px;border-radius:6px;background:linear-gradient(180deg,#5b4433,#2d2119 40%,#1a130e 65%,#3c2d22);box-shadow:0 2px 3px rgba(30,20,10,.3)}
  .hud::before{top:-6px}.hud::after{bottom:-6px}
  .hud-top{flex-wrap:wrap;align-items:flex-start;gap:0}
  .realm-block{flex-basis:100%;flex-direction:column;align-items:flex-start;gap:2px;margin-top:-6px}
  .realm-name{white-space:nowrap}
  .realm-name{font-size:56px}
  .realm-stage{font-size:18px}
  .who{flex-basis:100%;padding:12px 0 0;margin-top:14px;border-left:0;border-top:1px solid rgba(27,24,20,.14)}
  .who-name{font-size:24px}
  .who-sub{font-size:12.5px;white-space:normal}
  .hud-seals{order:-1;margin-top:-10px;margin-left:auto}
  #btn-sect{margin-left:0;margin-right:0}
  .bars{margin-top:20px;gap:16px}
  .bar-track,.incense{height:12px}
  .stick{height:10px;margin-top:-5px}
  .bar{flex-wrap:wrap;row-gap:5px}
  .bar-label{width:auto;flex:1}
  .bar-num{min-width:0}
  .bar-track,.incense{flex-basis:100%;order:3}
  .chips{flex-direction:column;gap:9px;margin-top:20px;padding-top:16px}
  .chip{align-items:baseline;gap:6px;font-size:12.5px}
  .chip b{flex:1}
  .chip em{font-size:19px}
  .scroll{grid-column:2;grid-row:1;margin:6px 0 6px}
  .log{padding:8px 40px 32px}
  .entry-text{font-size:17px}
  .status-line{grid-column:2;grid-row:2}
  .actions{grid-column:2;grid-row:3;width:100%;max-width:600px;justify-self:center}
  .act{height:86px}
  .side{display:flex;flex-direction:column;gap:14px;grid-column:3;grid-row:1/4;align-self:center;margin-bottom:40px}
  .trace-note{display:none !important}
  .side-card{display:block;width:100%;text-align:left;padding:16px 20px 15px;border-radius:2px;transition:box-shadow .3s}
  .side-card h3{display:flex;align-items:center;gap:8px;font-family:var(--f-head);font-weight:400;font-size:14px;letter-spacing:.42em;color:var(--ink3);margin-bottom:6px;transition:color .3s}
  .side-card h3::after{content:"";flex:1;height:5px;background:var(--brush-line) left center/100% 100% no-repeat;opacity:.18}
  .sd-name{display:block;font-family:var(--f-head);font-weight:400;font-size:21px;letter-spacing:.08em;line-height:1.35;color:var(--ink)}
  .sd-row{display:block;font-size:12.5px;line-height:1.8;color:var(--ink3);letter-spacing:.05em;margin-top:2px}
  .sd-row em{font-style:normal;font-family:var(--f-head);color:var(--zhu);margin-right:6px}
  .sd-row .zhu{color:var(--zhu)}
  .sd-empty{font-size:13px;color:var(--ink4);letter-spacing:.2em}
  .sd-list{list-style:none;display:flex;flex-direction:column;gap:3px}
  .sd-list li{display:flex;justify-content:space-between;font-size:14px;color:var(--ink2)}
  .sd-list i{font-style:normal;color:var(--ink3);font-size:13px}
  .sd-more{display:block;font-size:11.5px;color:var(--ink4);letter-spacing:.15em;margin-top:4px}
  .side-keys{font-size:11.5px;color:var(--ink4);letter-spacing:.2em;text-align:center;margin-top:4px}
  .break-seal{bottom:136px}
  .dan-stage{width:min(64vh,620px);height:min(64vh,620px)}
  .dan-name{font-size:38px}.dan-text{max-width:460px;font-size:17px}
  .dan-stamp{width:84px;height:84px}
  /* 地图：长卷铺满，地点笺在下方横排 */
  .map-head{padding:6px 40px 12px}
  .map-scroll-wrap{margin:0 22px 8px}
  .map-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);column-gap:40px;align-items:center;width:calc(100% - 80px);max-width:1120px;margin:0 auto;min-height:0;padding:16px 4px 6px}
  .mc-head,.mc-desc,.mc-meta{grid-column:1}
  .mc-btns{grid-column:2;grid-row:1/4;margin:0}
  /* 拍卖、秘境等全屏场景：内容稍宽 */
  .auc-lamps{max-width:520px}
  .auc-lines,.auc-btns{max-width:460px}
  .auc-lot{max-width:460px}
}
/* 平板/宽屏：秘境居中成纸页，拍卖放大 */
@media (min-width:700px) and (min-height:520px){
  .mj{padding-top:calc(var(--sat) + 28px);padding-bottom:calc(var(--sab) + 22px)}
  .mj>*:not(.mj-wash){width:100%;max-width:760px;margin-left:auto;margin-right:auto}
  .mj-text{font-size:17px}
  .mj-ttl b{font-size:30px}
  .mj-nt{font-size:28px;padding-right:14px}
  .mj-node{gap:20px}
}
@media (min-width:700px) and (min-height:700px){
  .auc{padding-top:3vh;padding-bottom:3vh}
  .auc-lamps{max-width:560px;height:76px}
  .auc-lamps i{width:30px;height:58px}
  .auc-head{font-size:20px;margin-top:14px}
  .auc-head em{font-size:13px}
  .auc-lot{max-width:520px;margin-top:5vh}
  .auc-name{font-size:52px}
  .auc-desc{font-size:15px}
  .auc-price b{font-size:46px}
  .auc-price small,.auc-price span{font-size:14px}
  .auc-lines{max-width:520px;margin-top:4vh;font-size:15px}
  .auc-btns{max-width:520px}
  .auc-me{font-size:13px}
  .al{font-size:15.5px}.al b{font-size:16.5px}
}
@media (min-width:1280px) and (min-height:600px) and (max-width:1399px){
  #scr-main{grid-template-columns:220px minmax(0,1fr) 220px;column-gap:22px;padding-left:24px;padding-right:24px}
  .realm-name{font-size:48px}
  .log{padding:8px 28px 28px}
}

/* 卷首宽屏：横向重构，不拉伸 */
@media (min-width:1000px) and (min-aspect-ratio:5/4){
  .title-block{top:calc(8vh);right:14%;gap:18px}
  .title-v{font-size:clamp(84px,10.4vh,118px)}
  .title-sub{font-size:18px}
  .seal-title{width:60px;height:60px}
  .title-poem{left:5%;top:4vh;font-size:15px}
  .title-block{top:calc(6.5vh);right:13%}
  .title-v{font-size:clamp(84px,10.2vh,112px)}
  .title-menu{bottom:calc(var(--sab) + 3.5vh);gap:12px}
  .title-menu-main{gap:10px}
  .title-menu .brush-btn:not(.title-subbtn){padding:14px 54px 12px;min-width:200px}
  .title-menu .brush-btn:not(.title-subbtn) .bb-text{font-size:32px}
  .title-menu .brush-btn:not(.title-subbtn) small{font-size:11.5px}
  .legacy-hint{bottom:calc(var(--sab) + 24vh);font-size:13px}
  .pine{width:min(44%,46vh);height:58%;right:-1.5%}
  .sun{left:19%;top:21%;width:104px;height:104px}
  .crane{width:74px;height:37px}.crane.c2{width:56px;height:28px}
}
/* 宽屏：斗法舞台放大、秘境/拍卖已在上文 */
@media (min-width:700px) and (min-height:520px){
  .duel{padding:calc(var(--sat) + 24px) 40px calc(var(--sab) + 24px)}
  .duel-name{font-size:36px}
  .duel-tell,.duel-text{max-width:520px;font-size:16.5px}
  .duel-moves{max-width:560px;margin:0 auto;width:100%}
  .dmove{min-height:72px}
}
@media (min-width:1600px) and (min-height:880px){
  #scr-main{grid-template-columns:minmax(260px,330px) minmax(0,800px) minmax(260px,330px);padding-top:40px}
  .entry-text{font-size:18px}.entry-title{font-size:23px}
  .realm-name{font-size:62px}
  .sd-name{font-size:23px}.sd-list li{font-size:15px}
  .act{height:92px}.act-t{font-size:28px}
}


/* ---------- 氛围音效开关 ---------- */
#audio-dock{position:fixed;z-index:18;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));
  display:flex;align-items:center;gap:8px;pointer-events:none}
#audio-dock>*{pointer-events:auto}
.audio-btn{width:44px;height:44px;border:0;border-radius:50%;cursor:pointer;font-family:var(--f-head);font-size:18px;letter-spacing:.15em;
  color:var(--ink2);background:var(--brush-img-ink-l) center/100% 100% no-repeat;opacity:.72;transition:opacity .3s,filter .3s,transform .2s;
  display:flex;align-items:center;justify-content:center;padding:0;-webkit-tap-highlight-color:transparent}
.audio-btn:hover{opacity:1}.audio-btn:active{transform:scale(.94)}
.audio-btn.muted{opacity:.42;color:var(--ink4);filter:grayscale(.35)}
.audio-btn .audio-lab{transform:translateY(1px)}
.audio-vol{display:none;width:88px;height:28px;accent-color:#6a5a48;opacity:.75;cursor:pointer}
@media (hover:hover) and (pointer:fine){
  #audio-dock:hover .audio-vol,#audio-dock:focus-within .audio-vol{display:block}
  .audio-vol{display:none}
}
body[data-screen=title] #audio-dock{bottom:max(18px,env(safe-area-inset-bottom));right:max(16px,env(safe-area-inset-right))}
@media (min-width:1000px) and (min-height:600px){
  #audio-dock{right:max(28px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom))}
  .audio-vol{display:block;opacity:.55}
  #audio-dock:hover .audio-vol{opacity:.9}
}


/* ---------- v0.9 法宝与功法主辅 ---------- */
.gf-role{margin-left:8px;font-size:12px;letter-spacing:.2em;color:var(--zhu)}
.gf-acts{display:flex;flex-direction:column;gap:6px;flex:none}
.gf-acts .item-use{margin-top:0;min-width:64px}
.item-use.light{background-image:var(--brush-img-ink-l);color:var(--ink2)}
.gf-row.aux{opacity:.92}
.gear-k{margin-left:6px;color:var(--zhu)!important}
.eq-row{background:linear-gradient(90deg,rgba(179,48,42,.06),transparent);padding-left:8px;margin-bottom:6px}
.fabao-page{padding:10px 8px 14px;overflow-x:hidden;max-width:100%;box-sizing:border-box}
.fabao-scroll{position:relative;padding:28px 18px 22px;border-radius:3px;color:var(--ink);max-width:100%;box-sizing:border-box;
  background:linear-gradient(rgba(250,246,234,.92),rgba(245,238,220,.92)),var(--paper-img);background-size:auto,220px;
  box-shadow:inset 0 0 0 1px rgba(27,24,20,.07),0 10px 28px rgba(40,28,16,.08)}
.fabao-scroll::before,.fabao-scroll::after{content:"";position:absolute;left:0;right:0;height:10px;border-radius:5px;
  background:linear-gradient(180deg,#5b4433,#2d2119 40%,#1a130e 65%,#3c2d22);pointer-events:none}
.fabao-scroll::before{top:-5px}.fabao-scroll::after{bottom:-5px}
.fabao-head{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.fabao-seal{width:52px;height:52px;line-height:52px;text-align:center;font-family:var(--f-head);font-size:30px;color:var(--seal-paper);
  background:#8e2420;border-radius:4px;filter:url(#f-seal)}
.stage-0 .fabao-seal{background:#6e6457}
.stage-2 .fabao-seal{background:#8e2420}
.stage-3 .fabao-seal{background:linear-gradient(135deg,#a8452c,#7a1c18);box-shadow:inset 0 0 0 1.5px rgba(232,196,120,.85)}
.fabao-name{display:block;font-family:var(--f-head);font-weight:400;font-size:28px;letter-spacing:.12em}
.fabao-stage{display:block;font-size:13px;letter-spacing:.35em;color:var(--zhu);margin-top:4px}
.fabao-flavor{font-size:15px;line-height:1.95;color:var(--ink2);text-align:justify;margin:8px 0 14px}
.fabao-bond{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.1em;color:var(--ink3);margin-bottom:12px;min-width:0;max-width:100%;flex-wrap:nowrap}
.fabao-bond > span:first-child{flex:none}
.fabao-bond > em{flex:none;font-style:normal;white-space:nowrap;letter-spacing:.06em}
.fabao-bond .fb-track{flex:1 1 auto;min-width:0;height:8px;background:rgba(27,24,20,.12);border-radius:0;-webkit-mask:var(--brush-bar) center/100% 100% no-repeat;mask:var(--brush-bar) center/100% 100% no-repeat;overflow:hidden}
.fabao-bond .fb-track i{display:block;height:100%;background:#9a3a2e;opacity:.88}
.fabao-traits{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.fabao-traits span{font-size:13px;letter-spacing:.1em;color:var(--zhu);padding:2px 8px;background:var(--brush-img-zhu-l) center/100% 100% no-repeat}
.fabao-meta,.fabao-hint,.fabao-note{font-size:12px;letter-spacing:.12em;color:var(--ink3);line-height:1.7}
.fabao-title{font-family:var(--f-head);font-size:24px;letter-spacing:.2em;margin:8px 0}
.empty-fabao{text-align:center;padding-top:36px;padding-bottom:36px}
.empty-fabao .fabao-seal{margin:0 auto 12px;background:#6e6457}
.fabao-canhun{text-align:center;margin-top:14px;font-family:var(--f-head);font-size:15px;letter-spacing:.25em;color:#8e2420}

/* ===== v0.10 定型 ===== */
.path-seals{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:8px;padding:0 2px;min-height:0}
.path-seals[hidden]{display:none!important}
.path-seal{display:inline-flex;align-items:center;gap:5px;font-size:12px;letter-spacing:.12em;color:var(--ink2)}
.path-seal i{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;font-family:var(--f-head);font-style:normal;font-size:14px;color:var(--seal-paper);background:#8e2420;border-radius:3px;line-height:1}
.path-seal b{font-weight:400;font-family:var(--f-body)}
.path-line{color:var(--zhu)!important;letter-spacing:.08em}
.path-page{padding:6px 2px 16px;display:flex;flex-direction:column;gap:12px}
.path-card{display:flex;gap:14px;align-items:flex-start;padding:14px 12px;background:linear-gradient(90deg,rgba(179,48,42,.05),transparent);border-radius:2px}
.path-card-seal{flex:none;width:44px;height:44px;line-height:44px;text-align:center;font-family:var(--f-head);font-size:26px;color:var(--seal-paper);background:#8e2420;border-radius:4px}
.path-card b{display:block;font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.15em;margin-bottom:4px}
.path-card p{font-size:13px;color:var(--zhu);letter-spacing:.08em;margin:0 0 6px}
.path-card small{display:block;font-size:13px;line-height:1.85;color:var(--ink2);text-align:justify}
.path-empty{text-align:center;padding:36px 12px;color:var(--ink3)}
.path-empty-seal{display:block;width:52px;height:52px;line-height:52px;margin:0 auto 12px;font-family:var(--f-head);font-size:28px;color:var(--seal-paper);background:#6e6457;border-radius:4px}
.path-empty p{font-size:15px;line-height:1.9;letter-spacing:.08em}

.path-cer{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:max(12px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom));pointer-events:auto;opacity:0;transition:opacity .7s}
.path-cer[hidden]{display:none!important}
.path-cer.go{opacity:1}
.path-cer.leave{opacity:0;transition:opacity .7s}
.path-cer-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:radial-gradient(ellipse 80% 55% at 50% 40%,rgba(18,16,14,.78),rgba(10,8,7,.96));}
.path-cer-panel{position:relative;width:min(520px,100%);max-height:min(92vh,860px);display:flex;flex-direction:column;overflow:hidden;padding:28px 0 0;color:rgba(239,230,211,.94);
  background:linear-gradient(180deg,rgba(28,24,20,.55),rgba(18,15,12,.72));
  box-shadow:0 20px 60px rgba(0,0,0,.45),inset 0 0 0 1px rgba(239,230,211,.08);border-radius:2px}
.path-cer-head{text-align:center;margin-bottom:12px;padding:0 22px;flex:none}
.path-cer-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 22px 8px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.path-cer-sealbox{width:72px;height:72px;margin:0 auto 10px;opacity:0}
.path-cer.go .path-cer-sealbox{animation:stampBig .7s cubic-bezier(.3,1.7,.5,1) .2s forwards}
.path-cer-sealbox svg{width:100%;height:100%;display:block}
.path-cer-title{font-family:var(--f-cao);font-size:clamp(42px,12vw,64px);font-weight:400;letter-spacing:.2em;margin:0 0 10px;color:var(--paper-hi)}
.path-cer-lead{font-size:15px;line-height:1.95;letter-spacing:.1em;text-align:justify;color:rgba(239,230,211,.82);max-width:28em;margin:0 auto;min-height:3.8em}
.path-cer-opts{display:flex;flex-direction:column;gap:10px;margin:8px 0 14px}
.path-opt{display:flex;gap:12px;align-items:flex-start;text-align:left;padding:12px 12px 12px 10px;border:0;background:rgba(239,230,211,.04);color:inherit;cursor:pointer;border-radius:2px;opacity:0;transform:translateY(10px);
  box-shadow:inset 0 0 0 1px rgba(239,230,211,.08);transition:background .25s,box-shadow .25s,transform .25s}
.path-cer.go .path-opt{animation:pathOptIn .55s var(--ease-ink) forwards}
@keyframes pathOptIn{to{opacity:1;transform:none}}
.path-opt:hover,.path-opt:focus-visible{background:rgba(239,230,211,.09)}
.path-opt.on{background:rgba(179,48,42,.18);box-shadow:inset 0 0 0 1.5px rgba(232,196,120,.55)}
.path-cer-opts.locked .path-opt:not(.on){opacity:.35;pointer-events:none}
.path-opt .po-seal{flex:none;width:40px;height:40px;line-height:40px;text-align:center;font-family:var(--f-head);font-size:22px;color:var(--seal-paper);background:#8e2420;border-radius:3px}
.path-opt .po-body{flex:1;min-width:0}
.path-opt b{display:block;font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.18em;margin-bottom:2px}
.path-opt em{display:block;font-style:normal;font-size:12px;letter-spacing:.1em;color:rgba(212,176,106,.9);margin-bottom:6px}
.path-opt p{margin:0;font-size:13px;line-height:1.85;color:rgba(239,230,211,.72);text-align:justify}
.path-cer-prose{font-size:15px;line-height:2;letter-spacing:.1em;text-align:justify;color:rgba(239,230,211,.92);min-height:0;margin:0 0 12px;max-width:28em;margin-inline:auto}
.path-cer:not(.sealed) .path-cer-prose:empty{display:none}
.path-cer-foot{flex:none;text-align:center;margin:0;padding:12px 22px calc(14px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(180deg,rgba(18,15,12,.2),rgba(14,12,10,.96) 28%);
  box-shadow:0 -12px 28px rgba(0,0,0,.4);border-top:1px solid rgba(239,230,211,.1);z-index:3}
.path-cer-foot[hidden]{display:none!important}
.path-cer-hint{margin:0 0 8px;font-size:12px;letter-spacing:.14em;color:rgba(212,176,106,.88);min-height:1.2em}
.path-cer-foot .brush-btn{min-width:11em;min-height:46px}
.path-cer-foot .brush-btn:disabled,.path-cer-foot .brush-btn.dim{opacity:.45;pointer-events:none}
.path-cer.sealed .path-cer-opts{opacity:.55;pointer-events:none}
.path-cer.sealed .path-cer-foot{display:none!important}
@media (min-width:900px){
  .path-cer-panel{padding:36px 0 0;width:min(640px,92vw)}
  .path-cer-head{padding:0 36px}
  .path-cer-body{padding:0 36px 10px}
  .path-cer-foot{padding:14px 36px calc(16px + env(safe-area-inset-bottom,0px))}
  .path-cer-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .path-cer.kind-danwen .path-cer-opts,.path-cer.kind-daoji .path-cer-opts{grid-template-columns:1fr 1fr}
  .path-opt p{font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  .path-cer,.path-cer-sealbox,.path-opt{animation:none!important;opacity:1;transform:none;transition:none}
}
.goal-cer .path-cer-panel{width:min(920px,calc(100vw - 28px));height:auto;max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);min-height:0}
.goal-cer .path-cer-body{flex:1 1 auto;min-height:0;overflow-y:auto}
.goal-cer .path-cer-foot{flex:none;display:flex;flex-direction:column;align-items:center;
  background:transparent;box-shadow:none;border-top:0}
@media (max-height:860px){
  .goal-cer .path-cer-panel{padding-top:12px}
  .goal-cer .path-cer-sealbox{width:40px;height:40px;margin-bottom:2px}
  .goal-cer .path-cer-title{font-size:34px;margin-bottom:4px}
  .goal-cer .path-cer-lead{min-height:0;font-size:13px;line-height:1.5;max-height:4.6em;overflow:auto}
  .goal-cer .path-cer-head{margin-bottom:4px}
  .goal-cer .path-cer-opts{gap:6px;margin:2px 0 6px}
  .goal-cer .path-opt{padding:7px 8px}
  .goal-cer .path-opt p{font-size:12px;line-height:1.45;max-height:2.9em;overflow:hidden}
  .goal-cer .path-opt em{margin-bottom:2px}
  .goal-cer .path-cer-foot{padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px))}
  .goal-cer .path-cer-hint{margin-bottom:4px}
}

/* ===== polish: 定型洗纹／状态 ===== */
.path-wash{margin-top:18px;padding-top:14px;border-top:1px dashed rgba(27,24,20,.12)}
.path-wash-note{font-size:12px;letter-spacing:.12em;color:var(--ink3);margin:0 0 10px;line-height:1.7}
.path-wash-btn{display:block;width:100%;text-align:left;margin:0 0 8px;padding:12px 14px;border:0;border-radius:2px;cursor:pointer;
  font-family:var(--f-body);font-size:15px;letter-spacing:.12em;color:var(--ink);
  background:rgba(27,24,20,.04);box-shadow:inset 0 0 0 1px rgba(27,24,20,.08)}
.path-wash-btn small{display:block;margin-top:4px;font-size:12px;letter-spacing:.08em;color:var(--ink3)}
.path-wash-btn.danger{color:var(--zhu);background:rgba(179,48,42,.06);box-shadow:inset 0 0 0 1px rgba(179,48,42,.2)}
.path-wash-btn:active{transform:scale(.99)}
.path-empty-hint{font-size:13px;color:var(--ink3);letter-spacing:.08em;margin-top:10px;line-height:1.8}
.empty small{display:block;margin-top:6px;font-size:12px;letter-spacing:.1em;color:var(--ink3);font-weight:400}
.status-line{letter-spacing:.18em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 8px}

/* ===== v0.11 百家 ===== */
.baishan .path-cer-title{letter-spacing:.35em}
.defect-btn{display:block;width:100%;margin-top:14px;padding:12px 14px;border:0;border-radius:2px;cursor:pointer;
  font-family:var(--f-body);font-size:14px;letter-spacing:.15em;color:var(--zhu);text-align:left;
  background:rgba(179,48,42,.06);box-shadow:inset 0 0 0 1px rgba(179,48,42,.22)}
.defect-btn small{display:block;margin-top:4px;font-size:12px;letter-spacing:.08em;color:var(--ink3)}
.sect-org{letter-spacing:.2em}

/* v0.12 天下结局 */
.end-renhuang .end-title{color:#8a6a2a;text-shadow:0 0 16px rgba(214,170,80,.4);letter-spacing:.18em}
.end-renhuang .end-art{color:#8a6a2a}
.end-quancheng .end-title{color:#5a2a2a;letter-spacing:.2em}
.end-quancheng .end-art{color:#8a1712}
.end-quancheng .end-paper{background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(90,40,36,.12),transparent 70%),linear-gradient(rgba(246,238,226,.92),rgba(246,238,226,.92)),var(--paper-img);background-size:auto,auto,256px}


/* btfx reduced-motion */
@media (prefers-reduced-motion:reduce){
  .bt-veins i,.bt-orb,.bt-infant,.bt-pillar,.bt-clouds i,.bt-bolts i,.bt-stairs i,.bt-ring,.bt-ring-2,.bt-rays,.bt-glow,.bt-half,.bt-stamp,.bt-ink{animation:none!important;transition:opacity .3s!important}
  .bt.glory .bt-orb,.bt.glory .bt-infant,.bt.glory .bt-pillar,.bt.charge .bt-veins i,.bt.charge .bt-clouds i,.bt.glory .bt-stairs i{opacity:.7!important;transform:none!important;filter:none!important;height:auto}
  .bt.r0.glory .bt-pillar{height:20vmin;opacity:.8}
  .bt.r1.glory .bt-orb,.bt.r1.charge .bt-orb{width:22vmin;height:22vmin;opacity:.7;transform:translate(-50%,-50%)}
  .bt.r2.glory .bt-infant{opacity:.85}
}


/* ---------- 法宝墨绘／开光仪式／神器志 ---------- */
.fabao-art{position:relative;height:112px;margin:0 0 12px;border-radius:2px;background:linear-gradient(180deg,rgba(249,245,233,.5),rgba(236,228,210,.35));box-shadow:inset 0 0 0 1px rgba(27,24,20,.06);overflow:hidden}
.fabao-art canvas{display:block;width:100%;height:100%}
.fabao-scroll.stage-1 .fabao-art{box-shadow:inset 0 0 0 1px rgba(27,24,20,.08),inset 0 0 16px rgba(48,36,24,.04)}
.fabao-scroll.stage-2 .fabao-art,.fabao-scroll.stage-3 .fabao-art{box-shadow:inset 0 0 0 1px rgba(90,40,32,.16),inset 0 0 20px rgba(48,36,24,.05)}

.fb-cer{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:45;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .55s var(--ease-ink);pointer-events:auto}
.fb-cer.go{opacity:1}
.fb-cer.leave{opacity:0;transition:opacity .55s}
.fb-cer-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:radial-gradient(ellipse 72% 56% at 50% 46%,rgba(28,22,16,.55),rgba(12,10,8,.9))}
.fb-cer-panel{position:relative;width:min(380px,92vw);padding:26px 22px 22px;text-align:center;color:var(--ink);
  background:
    radial-gradient(ellipse 80% 50% at 50% 0%,rgba(90,60,30,.05),transparent 60%),
    linear-gradient(rgba(246,239,224,.97),rgba(236,226,206,.97)),
    var(--paper-img);
  background-size:auto,auto,220px;
  box-shadow:0 18px 40px rgba(20,12,6,.32),inset 0 0 0 1px rgba(27,24,20,.08);border-radius:2px}
.fb-cer-panel::before,.fb-cer-panel::after{content:"";position:absolute;left:10px;right:10px;height:9px;border-radius:5px;pointer-events:none;
  background:linear-gradient(180deg,#5b4433,#2d2119 40%,#1a130e 65%,#3c2d22)}
.fb-cer-panel::before{top:-5px}.fb-cer-panel::after{bottom:-5px}
.fb-cer-cv{display:block;width:100%;height:auto;max-height:168px;margin:6px auto 4px;background:transparent}
.fb-cer-title{font-family:var(--f-cao);font-size:42px;letter-spacing:.22em;color:var(--life-shadow);text-shadow:none}
.fb-cer.kai .fb-cer-title{color:#8e2420}
.fb-cer.hua .fb-cer-title{color:#3a2820;letter-spacing:.28em}
.fb-cer-name{font-family:var(--f-head);font-size:18px;letter-spacing:.2em;margin:4px 0 12px;color:var(--ink2)}
.fb-cer-line{font-size:14px;line-height:1.95;letter-spacing:.08em;text-align:justify;color:var(--ink2);min-height:4.5em;margin:0}
@media (prefers-reduced-motion:reduce){
  .fb-cer,.fb-cer.leave{transition:opacity .2s}
  .fb-cer-title{text-shadow:none}
}

.shenqi-zhi{margin-top:18px;padding-top:14px;border-top:1px dashed rgba(27,24,20,.12)}
.sq-h{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px;font-family:var(--f-head);font-size:18px;letter-spacing:.2em}
.sq-h em{font-style:normal;font-family:var(--f-body);font-size:11px;letter-spacing:.1em;color:var(--ink3)}
.sq-row{display:flex;gap:12px;align-items:flex-start;padding:10px 4px;border-bottom:1px solid rgba(27,24,20,.06)}
.sq-row.off{opacity:.42}
.sq-seal{flex:none;width:36px;height:36px;line-height:36px;text-align:center;font-family:var(--f-head);font-size:18px;color:var(--seal-paper);background:#8e2420;border-radius:3px}
.sq-row.off .sq-seal{background:#6e6457}
.sq-unseen{margin:16px 6px 8px;padding:12px 2px 4px;border-top:1px dashed rgba(27,24,20,.12);color:var(--ink4);font-size:13px;line-height:1.9;letter-spacing:.12em}
.npc-unseen,.codex-unseen{margin:20px 4px 14px;padding:4px 2px;font-size:13.5px;line-height:1.9;letter-spacing:.1em;color:var(--ink4)}
.empty.bag-empty{padding:40px 16px 32px;letter-spacing:.12em;line-height:1.9}
.empty.bag-empty b{display:block;font-family:var(--f-head);font-weight:400;font-size:22px;letter-spacing:.32em;color:var(--ink2);margin-bottom:8px}
.empty.bag-empty span{display:block;font-size:13px;letter-spacing:.2em;color:var(--ink4)}
.sq-blanks{display:flex;gap:8px}
.sq-blanks i{display:block;width:22px;height:22px;border:1px solid currentColor;border-radius:2px;opacity:.25}
.sq-row b{display:block;font-family:var(--f-head);font-weight:400;font-size:16px;letter-spacing:.12em;margin-bottom:2px}
.sq-row p{margin:0;font-size:12.5px;line-height:1.7;color:var(--ink2)}


/* ===== v1.0 轮回 ===== */
.legacy-hint{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--sab) + 22vh);width:min(92%,360px);text-align:center;font-size:12px;letter-spacing:.16em;color:var(--zhu);opacity:.92;pointer-events:none;padding:0 12px;z-index:2;line-height:1.6}
@media (max-height:780px){
  .legacy-hint{bottom:calc(var(--sab) + 18vh);font-size:11px}
}
.end-epitaph-long{margin:8px 0 14px;padding:12px 14px;text-align:left;font-family:var(--f-body);font-size:13px;line-height:1.95;letter-spacing:.08em;color:var(--ink2);white-space:pre-wrap;background:rgba(27,24,20,.04);border-left:2px solid rgba(179,48,42,.35);max-height:28vh;overflow:auto}
.end-actions{display:flex;flex-direction:column;align-items:center;gap:12px}
.path-opt.mem{box-shadow:inset 0 0 0 1px rgba(214,170,80,.45)}
.path-opt .po-mem{display:inline-block;margin-left:.4em;font-style:normal;font-size:11px;letter-spacing:.12em;color:rgba(214,170,80,.95);vertical-align:middle}
.menu-trial{color:var(--zhu);letter-spacing:.12em}
.atlas-sheet{padding:4px 2px 18px}
.atlas-head{font-size:13px;letter-spacing:.14em;color:var(--ink3);margin-bottom:14px;line-height:1.8}
.atlas-sec{margin-bottom:16px}
.atlas-sec h4{font-family:var(--f-head);font-weight:400;font-size:16px;letter-spacing:.2em;margin:0 0 8px;color:var(--ink)}
.atlas-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.atlas-cell{position:relative;padding:10px 10px 12px;background:rgba(27,24,20,.04);border-radius:2px;min-height:52px}
.atlas-cell b{display:block;font-family:var(--f-head);font-weight:400;font-size:15px;letter-spacing:.14em}
.atlas-cell em{display:block;font-style:normal;font-size:11px;letter-spacing:.1em;color:var(--ink3);margin-top:2px}
.atlas-cell i{position:absolute;right:8px;bottom:6px;font-style:normal;font-size:11px;letter-spacing:.1em;color:var(--ink3);opacity:.7}
.atlas-cell:not(.on){opacity:.48;filter:grayscale(.4)}
.atlas-cell.on{background:rgba(179,48,42,.08);box-shadow:inset 0 0 0 1px rgba(179,48,42,.2)}
.atlas-empty{font-size:13px;color:var(--ink3);letter-spacing:.1em;margin:4px 0}
.atlas-epis{display:flex;flex-direction:column;gap:8px}
.atlas-epi{text-align:left;border:0;background:rgba(27,24,20,.04);padding:10px 12px;border-radius:2px;color:inherit;cursor:pointer}
.atlas-epi b{display:block;font-family:var(--f-head);font-weight:400;font-size:14px;letter-spacing:.12em;margin-bottom:4px}
.atlas-epi span{display:block;font-size:12px;line-height:1.7;color:var(--ink3)}
.atlas-epi.on{background:rgba(179,48,42,.1);box-shadow:inset 0 0 0 1px rgba(179,48,42,.25)}
.atlas-long{margin:10px 0 0;padding:12px;font-family:var(--f-body);font-size:13px;line-height:1.95;letter-spacing:.08em;white-space:pre-wrap;background:rgba(27,24,20,.04);border-left:2px solid rgba(179,48,42,.35);max-height:40vh;overflow:auto}
@media (min-width:720px){
  .atlas-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}


/* ===== 行囊 / 修持 UX ===== */
.hud-seals{display:flex;align-items:center;gap:6px;flex:none;margin-left:auto}
.hud-seals .menu-seal{margin:0}
.cult-seal{transform:rotate(-3deg)}
.bag-lead{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;letter-spacing:.18em;color:var(--ink3);padding:2px 4px 10px;border-bottom:1px solid rgba(27,24,20,.08);margin-bottom:4px}
.bag-lead span{font-size:11px;letter-spacing:.12em;color:var(--ink4)}
.bag-list{padding-bottom:8px}
.item{align-items:flex-start}
.item-acts{flex:none;display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:64px}
.item-acts .item-use{width:100%;box-sizing:border-box}
.item-use.batch{background-image:var(--brush-img-ink-l);color:var(--ink2);font-size:15px;letter-spacing:.08em;min-height:36px;padding:4px 10px 3px}
.item-use.batch.all{color:var(--zhu)}
.item-cap-tip{font-size:11px;letter-spacing:.12em;color:var(--ink4);text-align:center;padding:4px 0}
.path-seal{cursor:pointer}
@media (max-width:480px){
  .hud-seals{gap:4px}
  .hud-seals .menu-seal{width:40px;height:40px;padding:3px}
  .item-acts{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;min-width:0;max-width:46%;gap:5px}
  .item-acts .item-use{width:auto;min-width:52px;padding:5px 10px 4px;font-size:15px}
  .item-use.batch{min-height:32px;font-size:13px}
}
@media (min-width:1000px){
  .hud-seals{gap:8px;margin-right:4px}
  .item-acts{min-width:72px}
}


/* ===== 宣纸光感 / 卷轴物理 ===== */
:root{
  --paper:#efe6d3;
  --paper-tint:rgba(120,130,100,.03);
  --paper-stain:rgba(90,60,30,.05);
  --paper-stain2:rgba(70,50,35,.04);
  --paper-realm:transparent;
  --ease-curl:cubic-bezier(.22,.7,.18,1);
}
/* 四季不改宣纸。只在画条上罩一层几乎看不出的晕，季字另着一点颜色。 */
body[data-season="0"] #c-season{color:#9a4e4c}
body[data-season="1"] #c-season{color:#5e6b38}
body[data-season="2"] #c-season{color:#9a5528}
body[data-season="3"] #c-season{color:#4e6278}
html[data-theme="night"] body[data-season="0"] #c-season{color:#e7b0ac}
html[data-theme="night"] body[data-season="1"] #c-season{color:#c5d09a}
html[data-theme="night"] body[data-season="2"] #c-season{color:#e2b48a}
html[data-theme="night"] body[data-season="3"] #c-season{color:#b7c8dc}
/* 时辰：晨清、午暖、暮沉（叠一层，不依赖 color-mix） */
body[data-tod="dawn"] #paper-veil{box-shadow:inset 0 0 120px rgba(160,190,200,.045)}
body[data-tod="noon"] #paper-veil{box-shadow:inset 0 0 100px rgba(220,190,120,.04)}
body[data-tod="dusk"] #paper-veil{box-shadow:inset 0 0 130px rgba(160,90,50,.055)}
/* 境界：金气上染 */
body[data-realm="1"]{--paper-realm:rgba(61,85,96,.035)}
body[data-realm="2"]{--paper-realm:rgba(196,146,62,.055)}
body[data-realm="3"]{--paper-realm:rgba(120,92,140,.05)}
body[data-realm="4"]{--paper-realm:rgba(214,168,72,.07)}
body[data-realm="5"]{--paper-realm:rgba(236,196,104,.09)}

html,body{background:var(--paper);transition:background-color 2.8s var(--ease-ink)}

/* 纸面边渍：卷轴 / 抽屉 / 横卷 / 终卷 */
.scroll-paper,.sheet-panel,.hpaper,.end-paper,.map{
  background-image:
    radial-gradient(ellipse 100% 28% at 50% 0%, rgba(55,40,25,.07), transparent 60%),
    radial-gradient(ellipse 100% 24% at 50% 100%, rgba(55,40,25,.06), transparent 55%),
    radial-gradient(ellipse 40% 50% at 0% 30%, rgba(90,60,30,.045), transparent 70%),
    radial-gradient(ellipse 40% 50% at 100% 70%, rgba(90,60,30,.04), transparent 70%),
    linear-gradient(rgba(250,246,234,.78),rgba(250,246,234,.78)),
    var(--paper-img);
  background-size:auto,auto,auto,auto,auto,256px;
}
.hpaper{
  background-image:
    radial-gradient(ellipse 28% 100% at 0% 50%, rgba(55,40,25,.08), transparent 65%),
    radial-gradient(ellipse 28% 100% at 100% 50%, rgba(55,40,25,.08), transparent 65%),
    radial-gradient(ellipse 100% 24% at 50% 100%, rgba(55,40,25,.05), transparent 55%),
    linear-gradient(rgba(249,245,233,.84),rgba(249,245,233,.84)),
    var(--paper-img);
  background-size:auto,auto,auto,auto,256px;
}
.map{
  background-image:
    radial-gradient(ellipse 100% 30% at 50% 0%, rgba(55,40,25,.06), transparent 55%),
    radial-gradient(ellipse 80% 40% at 10% 100%, rgba(90,60,30,.05), transparent 50%),
    linear-gradient(rgba(242,235,219,.92),rgba(242,235,219,.92)),
    var(--paper-img);
  background-size:auto,auto,auto,256px;
}

/* 轴棍阴影加重（圆柱感） */
.roller{
  box-shadow:
    0 4px 8px rgba(30,18,8,.32),
    0 -2px 4px rgba(30,18,8,.14),
    inset 0 2px 3px rgba(255,248,230,.22),
    inset 0 -3px 4px rgba(20,12,6,.35) !important;
}
.hroller{
  box-shadow:
    3px 0 8px rgba(20,12,6,.38),
    -1px 0 3px rgba(20,12,6,.15),
    inset -2px 0 4px rgba(255,248,230,.12),
    inset 3px 0 5px rgba(10,6,3,.4) !important;
}
.map-roller{
  box-shadow:
    2px 0 6px rgba(30,18,8,.3),
    -2px 0 6px rgba(30,18,8,.3),
    inset 0 0 0 1px rgba(255,248,230,.08);
}

/* 卷轴启合：微卷曲 */
.scroll{perspective:900px}
.scroll-paper{
  transform-origin:50% 0%;
  transition:transform .7s var(--ease-curl);
}
body[data-screen=main] .scroll-paper{
  animation:paperSettle .9s var(--ease-curl) both;
}
@keyframes paperSettle{
  from{transform:rotateX(4deg) scaleY(.985)}
  to{transform:none}
}

/* 抽屉自下卷起：只留给窄屏 / 矮屏。宽屏居中规则在上面，不能再被这里盖掉。 */
@media (max-width:699px), (max-height:519px){
  .sheet{perspective:1400px}
  .sheet-panel{
    transform:translate3d(0,105%,0) rotateX(7deg);
    transform-origin:50% 100%;
    transition:transform .6s var(--ease-curl);
    box-shadow:
      0 -12px 36px rgba(0,0,0,.28),
      inset 0 16px 18px -14px rgba(40,28,16,.16),
      inset 0 1px 0 rgba(255,248,230,.2) !important;
  }
  .sheet.open .sheet-panel{
    transform:translate3d(0,0,0) rotateX(0deg);
    box-shadow:
      0 -10px 28px rgba(0,0,0,.22),
      inset 0 10px 12px -10px rgba(40,28,16,.1),
      inset 0 1px 0 rgba(255,248,230,.12) !important;
  }
}

/* 奇遇横卷：启合时轴侧微卷高光 */
.hscroll{perspective:1000px}
.hpaper{
  box-shadow:
    0 12px 32px rgba(0,0,0,.28),
    inset 18px 0 28px -18px rgba(40,28,16,.22),
    inset -18px 0 28px -18px rgba(40,28,16,.22) !important;
}
.modal:not(.open) .hpaper{
  filter:brightness(.96);
}
.modal.open .hroller.left{filter:drop-shadow(4px 0 6px rgba(20,12,6,.35))}
.modal.open .hroller.right{filter:drop-shadow(-4px 0 6px rgba(20,12,6,.35))}

/* 地图：铺纸微落 */
.map{
  opacity:0;
  transform:translate3d(0,10px,0) scale(.988);
  transform-origin:50% 40%;
  transition:opacity .45s var(--ease-curl), transform .55s var(--ease-curl);
}
.map.open{opacity:1;transform:none}
.map-scroll{
  box-shadow:
    inset 12px 0 16px -12px rgba(40,28,16,.42),
    inset -12px 0 16px -12px rgba(40,28,16,.42),
    inset 0 8px 10px -8px rgba(40,28,16,.18),
    inset 0 -8px 10px -8px rgba(40,28,16,.18) !important;
}

/* 破境落定：字沉下去，光收回，朱砂压住 */
.bt.glory .bt-big{
  animation:btSettle 1.15s var(--ease-curl) both;
}
@keyframes btSettle{
  0%{transform:translate3d(0,-7px,0) scale(1.028)}
  46%{transform:translate3d(0,2.5px,0) scale(.986)}
  74%{transform:translate3d(0,.3px,0) scale(1)}
  100%{transform:none}
}
.bt.glory.weight .bt-big,
.bt.r0.glory.weight .bt-big,
.bt.r1.glory.weight .bt-big,
.bt.r2.glory.weight .bt-big,
.bt.r3.glory.weight .bt-big,
.bt.r4.glory.weight .bt-big{
  animation:btSettle 1.15s var(--ease-curl) both;
  text-shadow:0 2px 0 rgba(8,6,4,.5),0 7px 10px rgba(0,0,0,.22);
}
.bt.r0.glory.weight .bt-big{color:#e4ebdf}
.bt.r1.glory.weight .bt-big{color:#f0e4d0}
.bt.r2.glory.weight .bt-big{color:#efe6f2}
.bt.r3.glory.weight .bt-big{color:#e6eef4}
.bt.r4.glory.weight .bt-big{color:#f4ecdc;letter-spacing:.08em}
.bt.glory.weight .bt-rays,
.bt.r1.glory.weight .bt-rays,
.bt.r3.glory.weight .bt-rays,
.bt.r4.glory.weight .bt-rays{
  animation:raysHush 2s var(--ease-curl) forwards;
}
@keyframes raysHush{
  0%{opacity:0;transform:scale(.82)}
  16%{opacity:.14}
  100%{opacity:.045;transform:scale(1)}
}
.bt.glory.weight .bt-glow,
.bt.r0.glory.weight .bt-glow,
.bt.r3.glory.weight .bt-glow,
.bt.r4.glory.weight .bt-glow{
  animation:glowHush 1.7s var(--ease-curl) forwards;
}
@keyframes glowHush{
  0%{opacity:0;transform:scale(.75)}
  22%{opacity:.2}
  100%{opacity:.08;transform:scale(1)}
}
.bt.r0.glory.weight .bt-shade{background:radial-gradient(ellipse 85% 60% at 50% 48%,rgba(22,30,26,.82),rgba(10,12,10,.98) 72%,rgb(8,10,9) 100%)}
.bt.r1.glory.weight .bt-shade{background:radial-gradient(ellipse 80% 55% at 50% 44%,rgba(48,22,14,.78),rgba(14,10,8,.98) 70%,rgb(10,8,6) 100%)}
.bt.r2.glory.weight .bt-shade{background:radial-gradient(ellipse 85% 58% at 50% 42%,rgba(36,22,48,.8),rgba(10,8,14,.98) 70%,rgb(8,8,12) 100%)}
.bt.r3.glory.weight .bt-shade{background:radial-gradient(ellipse 90% 55% at 50% 38%,rgba(28,36,44,.78),rgba(8,10,14,.98) 70%,rgb(6,8,10) 100%)}
.bt.r4.glory.weight .bt-shade{background:radial-gradient(ellipse 95% 50% at 50% 30%,rgba(32,30,40,.84),rgba(6,6,10,.98) 65%,rgb(4,4,6) 100%)}
.bt.gl.glory.weight #inkfx{opacity:.8}
.bt.glory .bt-stamp{filter:drop-shadow(0 3px 2px rgba(40,12,8,.38))}
.bt.stamped .bt-stamp{animation:btStampWeight .95s cubic-bezier(.18,.7,.22,1) both}
@keyframes btStampWeight{
  0%{opacity:0;transform:translate3d(0,-18px,0) scale(1.08) rotate(-10deg);filter:drop-shadow(0 12px 4px rgba(40,12,8,.12))}
  46%{opacity:1;transform:translate3d(0,3px,0) scale(.94) rotate(-7deg);filter:drop-shadow(0 1px 0 rgba(40,12,8,.5))}
  100%{opacity:1;transform:translate3d(0,0,0) rotate(-6deg);filter:drop-shadow(0 3px 2px rgba(40,12,8,.42))}
}
.bt-stamp::after{
  content:"";position:absolute;left:50%;top:104%;width:78%;height:22%;
  border-radius:50%;opacity:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 50%,rgba(120,24,18,.5),rgba(120,24,18,0) 72%);
  transform:translateX(-50%) scale(.7);
}
.bt.stamped .bt-stamp::after{animation:cinnabarSit .8s var(--ease-curl) .28s both}
@keyframes cinnabarSit{
  0%{opacity:0;transform:translateX(-50%) scale(.55)}
  40%{opacity:.62;transform:translateX(-50%) scale(1.02)}
  100%{opacity:.4;transform:translateX(-50%) scale(1)}
}

/* 奇遇正文：行笔偏淡，起笔更枯，收句回浓 */
.ink-cadence .ink-ch{color:#4a433a}
.ink-cadence .ink-ch.ink-dry{color:#8a8176}
.ink-cadence .ink-ch.ink-press{color:#2a241e}
.ink-cadence .ink-ch.ink-dense{color:#100e0c;text-shadow:.5px 0 0 #100e0c}
.ev-result .ink-cadence .ink-ch{color:#5c5348}
.ev-result .ink-cadence .ink-ch.ink-dry{color:#8d8478}
.ev-result .ink-cadence .ink-ch.ink-dense{color:#1a1612;text-shadow:.45px 0 0 #1a1612}

/* 宽屏留白：侧景退到纸的下缘，不与中卷争 */
@media (min-width:1000px) and (min-height:600px){
  body[data-screen=main] #scenery{
    opacity:.18;
    transform:translate3d(0,20%,0);
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,transparent 18%,rgba(0,0,0,.2) 42%,rgba(0,0,0,.48) 76%,rgba(0,0,0,.3) 100%);
    mask-image:linear-gradient(180deg,transparent 0%,transparent 18%,rgba(0,0,0,.2) 42%,rgba(0,0,0,.48) 76%,rgba(0,0,0,.3) 100%);
  }
  body[data-screen=create] #scenery{
    opacity:.2;
    transform:translate3d(0,22%,0);
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,transparent 16%,rgba(0,0,0,.22) 46%,rgba(0,0,0,.45) 80%,rgba(0,0,0,.28) 100%);
    mask-image:linear-gradient(180deg,transparent 0%,transparent 16%,rgba(0,0,0,.22) 46%,rgba(0,0,0,.45) 80%,rgba(0,0,0,.28) 100%);
  }
  body[data-screen=main] .mist,body[data-screen=create] .mist{opacity:.2}
  body[data-screen=main] .lake,body[data-screen=create] .lake{opacity:.42}
  body[data-screen=main] .m1,body[data-screen=main] .m2,
  body[data-screen=create] .m1,body[data-screen=create] .m2{opacity:.5}
  body[data-screen=main] .atmo,body[data-screen=create] .atmo{opacity:.28}
  body[data-screen=main] #vignette{
    background:radial-gradient(130% 100% at 50% 42%,transparent 60%,rgba(92,68,40,.05) 100%);
  }
  body[data-screen=main] .hud,body[data-screen=main] .side-card{
    background:linear-gradient(rgba(250,246,234,.92),rgba(250,246,234,.92)),var(--paper-img);
    background-size:auto,256px;
  }
}
@media (min-width:1500px) and (min-height:800px){
  body[data-screen=main] #scenery{
    opacity:.12;
    transform:translate3d(0,24%,0);
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,transparent 26%,rgba(0,0,0,.16) 52%,rgba(0,0,0,.38) 82%,rgba(0,0,0,.22) 100%);
    mask-image:linear-gradient(180deg,transparent 0%,transparent 26%,rgba(0,0,0,.16) 52%,rgba(0,0,0,.38) 82%,rgba(0,0,0,.22) 100%);
  }
  body[data-screen=main] .mist{opacity:.12}
  body[data-screen=main] .lake{opacity:.3}
}

@media (prefers-reduced-motion:reduce){
  #paper,#paper-veil,html,body{transition:none!important}
  #fiber{opacity:.04}
  #grain{animation:none!important;opacity:.05}
  .scroll-paper,.sheet-panel,.map,.hpaper,.hroller{transition:opacity .2s ease!important;animation:none!important;transform:none!important;filter:none!important}
  .sheet-panel{transform:translate3d(0,105%,0)!important}
  .sheet.open .sheet-panel{transform:none!important}
  .map{opacity:0;transform:none}
  .map.open{opacity:1}
  .bt.glory .bt-big,
  .bt.glory.weight .bt-big,
  .bt.r0.glory.weight .bt-big,
  .bt.r1.glory.weight .bt-big,
  .bt.r2.glory.weight .bt-big,
  .bt.r3.glory.weight .bt-big,
  .bt.r4.glory.weight .bt-big,
  .bt.glory.weight .bt-half{animation:none!important;filter:none}
  .bt.reveal .bt-half{opacity:1;transform:translateX(-50%)}
  .bt.stamped .bt-stamp{animation:none!important;opacity:1;transform:rotate(-6deg)}
  .bt.stamped .bt-stamp::after{animation:none;opacity:.4;transform:translateX(-50%)}
  .bt.glory.weight .bt-rays,.bt.r3.glory.weight .bt-rays,.bt.r4.glory.weight .bt-rays{opacity:.05!important}
  .bt.glory.weight .bt-glow,.bt.r0.glory.weight .bt-glow,.bt.r4.glory.weight .bt-glow{opacity:.1!important}
  .ink-cadence .ink-ch{animation:none!important;opacity:1!important;filter:none!important;transform:none!important}
  body[data-screen=main] .scroll-paper{animation:none!important}
  #splash.play .splash-arc path,
  #splash.play .splash-land,
  #splash.play .splash-cloud,
  #splash.play .inkslot i,
  #splash.play .inkslot b,
  #splash.play .splash-seal,
  #splash.play .splash-sub,
  #splash.play .splash-mist{animation:none!important}
  #splash.gone{animation:none!important;opacity:0}
}
@media (prefers-reduced-motion:reduce) and (min-width:700px) and (min-height:520px){
  .sheet-panel{transform:translate3d(-50%,-50%,0)!important}
  .sheet.open .sheet-panel{transform:translate3d(-50%,-50%,0)!important;opacity:1}
}

/* ===== v82：开场题额。远山、圆月、四字落墨、问道印。颗粒用既有 #fiber / #grain（压在本层之上）。 ===== */
#splash{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:transparent;padding:calc(var(--sat) + 18px) calc(var(--sar) + 16px) calc(var(--sab) + 18px) calc(var(--sal) + 16px);
  cursor:pointer;-webkit-user-select:none;user-select:none}
#splash::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--paper);pointer-events:none}
#splash[hidden]{display:none}
.splash-board{position:relative;z-index:1;overflow:visible;
  width:min(1040px,92vw,calc(62vh * 1400 / 580));
  height:min(calc(1040px * 580 / 1400),calc(92vw * 580 / 1400),62vh)}
.splash-arc{position:absolute;top:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none;color:var(--ink)}
.splash-arc path{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;opacity:0;
  stroke-dasharray:580;stroke-dashoffset:580}
.splash-land,.splash-cloud,.splash-sub,.inkslot i,.inkslot b{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;
  background-color:var(--ink);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
  -webkit-mask-position:center;mask-position:center}
.splash-land{opacity:0;
  -webkit-mask-image:url("../img/open-land.png?v=86");mask-image:url("../img/open-land.png?v=86")}
.splash-cloud{opacity:0;
  -webkit-mask-image:url("../img/open-cloud.png?v=86");mask-image:url("../img/open-cloud.png?v=86")}
.splash-sub{opacity:0;background-color:var(--ink3);
  -webkit-mask-image:url("../img/open-sub.png?v=86");mask-image:url("../img/open-sub.png?v=86")}
.inkslot{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}
.inkslot.s0{-webkit-clip-path:inset(0 64.93% 0 17.14%);clip-path:inset(0 64.93% 0 17.14%)}
.inkslot.s1{-webkit-clip-path:inset(0 48.36% 0 36%);clip-path:inset(0 48.36% 0 36%)}
.inkslot.s2{-webkit-clip-path:inset(0 34.5% 0 52.71%);clip-path:inset(0 34.5% 0 52.71%)}
.inkslot.s3{-webkit-clip-path:inset(0 15.93% 0 68.79%);clip-path:inset(0 15.93% 0 68.79%)}
.inkslot i,.inkslot b{-webkit-mask-image:url("../img/open-ink.png?v=86");mask-image:url("../img/open-ink.png?v=86")}
.inkslot i{opacity:0;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0)}
.inkslot b{opacity:0;-webkit-filter:blur(7px);filter:blur(7px)}
.splash-seal{position:absolute;left:85.43%;top:37.59%;width:5.64%;height:27.07%;pointer-events:none;opacity:0;
  background:url("../img/open-seal.png?v=86") center / 100% 100% no-repeat;transform-origin:50% 28%}
.splash-mist{position:absolute;width:32%;height:18%;border-radius:50%;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at center,rgba(27,24,20,.14),rgba(27,24,20,0) 72%)}
.splash-mist.m1{left:2%;top:58%}
.splash-mist.m2{right:0;top:6%;width:24%;height:16%}
#splash.play .splash-arc path{animation:splashArc 1.15s var(--ease-ink) forwards}
#splash.play .splash-land{animation:splashWash 1.35s .15s var(--ease-ink) both}
#splash.play .splash-cloud{animation:splashWash 1.2s .45s var(--ease-ink) both}
#splash.play .inkslot.s0 i{animation:inkFall .62s .9s var(--ease-ink) both}
#splash.play .inkslot.s1 i{animation:inkFall .62s 1.18s var(--ease-ink) both}
#splash.play .inkslot.s2 i{animation:inkFall .62s 1.46s var(--ease-ink) both}
#splash.play .inkslot.s3 i{animation:inkFall .62s 1.74s var(--ease-ink) both}
#splash.play .inkslot.s0 b{animation:inkBloom .9s .9s var(--ease-ink) both}
#splash.play .inkslot.s1 b{animation:inkBloom .9s 1.18s var(--ease-ink) both}
#splash.play .inkslot.s2 b{animation:inkBloom .9s 1.46s var(--ease-ink) both}
#splash.play .inkslot.s3 b{animation:inkBloom .9s 1.74s var(--ease-ink) both}
#splash.play .splash-seal{animation:splashStamp 1s 2.22s var(--ease-ink) both}
#splash.play .splash-sub{animation:fadeUp .8s 2.62s var(--ease-ink) both}
#splash.play .splash-mist.m1{animation:mistDrift 3.2s .5s ease-in-out both}
#splash.play .splash-mist.m2{animation:mistDrift 3.4s .85s ease-in-out both}
#splash.skip .splash-arc path{animation:none!important;stroke-dashoffset:0;opacity:.58}
#splash.skip .splash-land,#splash.skip .splash-cloud{animation:none!important;opacity:1}
#splash.skip .inkslot i{animation:none!important;opacity:1;-webkit-clip-path:none;clip-path:none}
#splash.skip .inkslot b,#splash.skip .splash-mist{animation:none!important;opacity:0}
#splash.skip .splash-seal{animation:none!important;opacity:1;transform:none}
#splash.skip .splash-sub{animation:none!important;opacity:1;transform:none}
#splash.gone{opacity:0;pointer-events:none}
body.sheet[data-screen=title] #scenery{animation:none;opacity:1;transform:none}
body.sheet #intro .drop,body.sheet #intro .bloom{animation:none!important;opacity:0!important}
@keyframes splashArc{0%{stroke-dashoffset:580;opacity:.2}20%{opacity:.62}100%{stroke-dashoffset:0;opacity:.58}}
@keyframes splashWash{from{opacity:0}to{opacity:1}}
@keyframes inkFall{
  0%{opacity:0;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);transform:translate3d(0,-1.2%,0)}
  28%{opacity:1}
  100%{opacity:1;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0);transform:none}}
@keyframes inkBloom{0%{opacity:0}32%{opacity:.42}100%{opacity:0}}
@keyframes splashStamp{
  0%{opacity:0;transform:translate3d(0,-34%,0) scale(1.48) rotate(-12deg)}
  48%{opacity:1;transform:translate3d(0,1.5%,0) scale(.95) rotate(1deg)}
  72%{transform:scale(1.015) rotate(-.3deg)}
  100%{opacity:1;transform:none}}
@keyframes mistDrift{0%{opacity:0;transform:translate3d(-10px,6px,0)}28%{opacity:1}100%{opacity:.55;transform:translate3d(16px,-8px,0)}}
#sw-refresh{position:fixed;z-index:70;left:50%;bottom:calc(var(--sab) + 16px);transform:translateX(-50%);
  display:flex;align-items:center;gap:12px;padding:8px 8px 8px 16px;
  background:rgba(250,246,234,.96);color:var(--ink2);letter-spacing:.16em;font-size:13px;
  border:1px solid rgba(27,24,20,.12);box-shadow:0 8px 22px rgba(40,30,20,.12)}
#sw-refresh[hidden]{display:none}
#sw-refresh button{border:0;background:transparent;font-family:var(--f-head);font-size:16px;letter-spacing:.14em;color:var(--zhu);padding:4px 10px;cursor:pointer}
.auc-hint{margin:8px 6px 0;text-align:center;font-size:12.5px;letter-spacing:.12em;color:var(--ink3);line-height:1.7}
.slot-sheet{padding:2px 2px 8px}
.slot-lead{margin:0 2px 12px;font-size:13px;line-height:1.75;letter-spacing:.06em;color:var(--ink3)}
.slot-list{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.slot-card{display:block;width:100%;text-align:left;border:0;cursor:pointer;color:inherit;
  background:rgba(27,24,20,.04);padding:12px 14px;border-radius:2px}
.slot-card b{display:block;font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.14em}
.slot-card em{display:block;margin-top:2px;font-style:normal;font-size:13px;letter-spacing:.08em;color:var(--ink2)}
.slot-card small{display:block;margin-top:4px;font-size:12px;letter-spacing:.04em;color:var(--ink3)}
.slot-card.on{background:rgba(179,48,42,.08);box-shadow:inset 0 0 0 1px rgba(179,48,42,.28)}
.slot-card.empty{opacity:.7}
.slot-io{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(27,24,20,.16)}
.slot-io p{margin-bottom:8px;font-size:12.5px;line-height:1.7;letter-spacing:.06em;color:var(--ink3)}
.slot-code{display:block;width:100%;min-height:92px;resize:vertical;box-sizing:border-box;
  border:1px solid rgba(27,24,20,.16);background:rgba(250,246,234,.72);color:var(--ink);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;padding:8px;
  -webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.atlas-count{margin:-4px 2px 14px;font-size:12px;line-height:1.8;letter-spacing:.06em;color:var(--ink3)}
.atlas-cell.sil{display:flex;align-items:center;gap:10px;min-height:58px;opacity:1;filter:none;background:rgba(27,24,20,.035)}
.atlas-cell.sil em{margin:0;letter-spacing:.22em;color:var(--ink4)}
.sil-ink{flex:none;width:26px;height:32px;border-radius:46% 42% 50% 40%;
  background:radial-gradient(58% 68% at 42% 38%,rgba(27,24,20,.32),rgba(27,24,20,.07) 72%,transparent)}
#scroll-view{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:64;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .32s ease}
#scroll-view[hidden]{display:none}
#scroll-view.open{opacity:1}
.scroll-shade{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:rgba(22,18,14,.5)}
.scroll-stage{position:relative;z-index:1;width:min(440px,100%);max-height:100%;box-sizing:border-box;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:calc(var(--sat) + 18px) 18px calc(var(--sab) + 16px)}
#scroll-img{width:min(420px,92vw);max-height:min(78vh,860px);height:auto;object-fit:contain;background:#f4ecda;
  box-shadow:0 18px 40px rgba(16,12,8,.38);
  -webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default}
.scroll-hint{margin:12px 0 8px;font-size:12px;letter-spacing:.2em;color:#f4ecda}
.scroll-actions{display:flex;gap:14px;align-items:center}
@media (prefers-reduced-motion:reduce){
  #scroll-view{transition:none}
}

/* ===== v32：卷首底栏完整可见 =====
   四枚小钮（存档／图鉴／日缘／试炼）原先 nowrap 横排，又被 .brush-btn.small
   的 min-width:140px 撑住，宽于手机视口；html/body overflow:hidden 把左右裁掉。
   ≤430px 的收紧够不着 440px 机型。窄屏改成两行对幅，宽屏仍一行四枚。
   右下角「声」留在原处，对幅收进它左侧。 */
.title-menu .brush-btn.title-subbtn{
  width:100%;
  min-width:0;
  max-width:none;
  box-sizing:border-box;
  padding:8px 8px 7px;
  min-height:44px;
  flex:none;
}
.title-menu .title-subbtn .bb-text{
  font-size:17px;
  letter-spacing:.14em;
  padding-left:.14em;
  line-height:1.15;
  white-space:nowrap;
}
.title-menu .title-subbtn small{
  display:block;
  max-width:100%;
  margin-top:2px;
  font-size:12px;
  letter-spacing:.04em;
  line-height:1.35;
  text-align:center;
  white-space:normal;
  color:var(--ink2);
}
.title-menu-sub{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  justify-items:stretch;
  align-items:stretch;
  gap:8px 20px;
  width:min(100%,348px);
  /* 内容区再收 116px，使笔触（左右各伸出 6px）不压住右下角的「声」 */
  max-width:calc(100% - 116px);
}
.title-menu-sub .title-subbtn:last-child:nth-child(odd){
  grid-column:1 / -1;
  width:calc((100% - 20px) / 2);
  justify-self:center;
}
.title-menu .legacy-hint{
  position:static;
  left:auto;
  right:auto;
  bottom:auto;
  transform:none;
  width:min(100%,300px);
  margin:0 0 4px;
  padding:0 4px;
  pointer-events:none;
}
@media (max-width:360px){
  .title-menu{padding:0 12px}
  .title-menu-sub{width:min(100%,300px);max-width:100%;gap:6px 14px}
  .title-menu .brush-btn.title-subbtn{padding:7px 6px 6px;min-height:40px}
  .title-menu .title-subbtn .bb-text{font-size:16px;letter-spacing:.1em;padding-left:.1em}
  .title-menu .title-subbtn small{font-size:11px;letter-spacing:.02em}
  /* 320 宽放不下「声」和两列笔触，把声抬到菜单之上、松枝之间 */
  body[data-screen=title] #audio-dock{bottom:calc(var(--sab) + 168px)}
}
@media (max-height:700px) and (max-width:719px){
  .title-menu .brush-btn.title-subbtn{padding:6px 6px 5px;min-height:38px}
  .title-menu .title-subbtn .bb-text{font-size:16px}
  .title-menu .title-subbtn small{font-size:11px}
  .title-menu-sub{gap:6px 16px}
}
@media (min-width:800px){
  .title-menu-sub{
    grid-template-columns:repeat(4,minmax(0,1fr));
    width:min(100%,620px);
    max-width:100%;
    gap:8px 16px;
  }
  .title-menu-sub .title-subbtn:last-child:nth-child(odd){
    grid-column:auto;
    width:100%;
    justify-self:stretch;
  }
  .title-menu .brush-btn.title-subbtn{padding:9px 8px 8px;min-height:46px}
  .title-menu .title-subbtn .bb-text{font-size:17px;letter-spacing:.12em;padding-left:.12em}
  .title-menu .title-subbtn small{font-size:12px;letter-spacing:.04em}
  body[data-screen=title] #audio-dock{bottom:max(18px,env(safe-area-inset-bottom))}
  /* 四枚底钮横排时，整组左移，避开右下角的设/声（宽屏还有音量条） */
  body[data-screen=title] .title-menu{box-sizing:border-box;padding-right:148px}
  body[data-screen=title] .title-menu-sub{width:min(620px,100%);max-width:100%}
}
@media (min-width:1120px){
  body[data-screen=title] .title-menu{padding-right:0}
}

/* ===== v33：夜墨、字号、动效、双栏、逐页不裁 ===== */

/* 奇遇正文可滚，选项不再被横卷裁掉 */
.hscroll{min-height:0}
.hpaper{display:flex;min-height:0;max-height:100%}
.hpaper-inner{min-height:0;overflow:hidden}
.ev-main{min-height:0;overflow-y:auto}
.ev-side{min-height:0}
.choice{flex-wrap:nowrap;align-items:center}
.choice>span{flex:1 1 auto;min-width:0;line-height:1.45;white-space:normal;overflow-wrap:break-word}
.choice small{flex:none;max-width:none;white-space:nowrap;text-align:right;line-height:1.2}
.choice small:empty{display:none}
.chips{flex-wrap:wrap;row-gap:6px}
.chip{min-width:0}
.chip-goal em{font-family:var(--f-head);letter-spacing:.1em}
.hpaper,.hroller{transition-duration:.64s}
.sheet-panel{transition-duration:.42s}

/* 字号三档：只改阅读字，大印与按钮仍守住视口 */
html[data-font="sm"] .entry-text{font-size:14.5px;line-height:1.85}
html[data-font="sm"] .entry-title{font-size:19px}
html[data-font="sm"] .ev-text,.html[data-font="sm"] .ev-result .r-text{font-size:15px;line-height:1.9}
html[data-font="sm"] .choice{font-size:15.5px}
html[data-font="sm"] .act-t{font-size:22px}
html[data-font="sm"] .realm-name{font-size:34px}
html[data-font="sm"] .item-desc,.html[data-font="sm"] .menu-note,.html[data-font="sm"] .sheet-body{font-size:13px}
html[data-font="lg"] .entry-text{font-size:18.5px;line-height:2}
html[data-font="lg"] .entry-title{font-size:23px}
html[data-font="lg"] .ev-text,.html[data-font="lg"] .ev-result .r-text{font-size:18.5px;line-height:2}
html[data-font="lg"] .choice{font-size:18.5px}
html[data-font="lg"] .item-name{font-size:22px}
html[data-font="lg"] .item-desc{font-size:15px}
html[data-font="lg"] .menu-item{font-size:18px}
html[data-font="lg"] .end-epitaph,.html[data-font="lg"] .end-judge{font-size:17px}
html[data-font="lg"] .lg-flavor{font-size:17px}
html[data-font="lg"] #inp-name{font-size:32px}
html[data-font="lg"] .who-sub,html[data-font="lg"] .next-line,html[data-font="lg"] .bar-label,html[data-font="lg"] .status-line,html[data-font="lg"] .act small,html[data-font="lg"] .wx-note{font-size:13px}
html[data-font="lg"] .entry-time,html[data-font="lg"] .mkt-bark{font-size:13px}

/* 窄屏：条、芯片、终卷、仪式不再顶出视口 */
@media (max-width:390px){
  .foe-name{font-size:16px}
  .foe-slip{padding:8px 32px 8px 10px}
  .manual-name{font-size:16px}
  .manual-slip{padding:8px 30px 8px 10px}
  .foe-slip.roster .foe-row span{margin-left:0}

  .bar{gap:6px}
  .bar-label{width:2.6em;letter-spacing:.12em}
  .bar-num{min-width:0;font-size:11px}
  .realm-name{font-size:32px}
  .who-name{font-size:17px}
  .chip{font-size:11px;letter-spacing:.04em}
  .chip em{font-size:13px}
  .act{height:70px}
  .act-t{font-size:22px}
  .end{padding:calc(var(--sat) + 8px) 10px calc(var(--sab) + 10px)}
  .end-paper{width:100%;padding:18px 14px 16px;max-height:calc(100vh - var(--sat) - var(--sab) - 16px);max-height:calc(100dvh - var(--sat) - var(--sab) - 16px)}
  .end-title{font-size:clamp(36px,15vw,52px)}
  .end-epitaph-long{max-height:none;overflow:visible}
  .path-cer-title{font-size:clamp(30px,10vw,44px)}
  .path-cer{padding:max(8px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom))}
  #inp-name{font-size:28px;letter-spacing:.1em}
  html[data-font="lg"] .realm-name{font-size:30px}
  html[data-font="lg"] .entry-text,html[data-font="lg"] .ev-text{font-size:17px}
  html[data-font="lg"] .act-t{font-size:22px}
  html[data-font="lg"] #inp-name{font-size:28px}
}
@media (max-height:700px){
  .hpaper-inner{padding:14px 12px 12px 14px;max-height:calc(100vh - var(--sat) - var(--sab) - 28px);max-height:calc(100dvh - var(--sat) - var(--sab) - 28px)}
  .ev-title{font-size:24px}
  .choice{padding:9px 4px 9px 24px}
  .foe-slip{margin:8px 0 0;padding:8px 30px 7px 10px}
  .foe-name{font-size:16px}
  .manual-slip{margin:8px 0 0;padding:8px 28px 8px 10px}
  .manual-name{font-size:16px}
  .end-paper{max-height:calc(100vh - var(--sat) - var(--sab) - 12px);max-height:calc(100dvh - var(--sat) - var(--sab) - 12px)}
  .sheet-panel{max-height:min(88vh,calc(100vh - var(--sat) - 8px));max-height:min(88dvh,calc(100dvh - var(--sat) - 8px))}
  .stone-wrap{margin:2.5vh 0 1.5vh}
}
@media (max-height:480px){
  .path-cer-sealbox{width:36px;height:36px;margin-bottom:4px}
  .path-cer-lead{min-height:0;font-size:13px;line-height:1.7}
  .path-opt{padding:8px}
  .stone-wrap{--st:min(26vh,110px);margin:1vh 0}
  .create-head{padding-top:0}
  .ch-title{font-size:28px}
  .lg-result{min-height:0}
  .title-block{top:calc(var(--sat) + 2vh)}
}
@media (max-width:520px){
  #audio-dock{flex-direction:column;align-items:center;gap:6px}
  .audio-vol{display:none!important}
}

/* 喘息、绝笔、所求、平生、纸墨 */
.entry.breath .entry-title{font-family:var(--f-head);font-size:16px;letter-spacing:.28em;color:var(--qing)}
.entry.breath .entry-text{color:var(--ink2);font-size:15px;line-height:2;letter-spacing:.04em}
.goal-title{font-family:var(--f-head);letter-spacing:.32em;font-size:clamp(36px,9vw,52px)}
.end-judge{margin:4px 0 12px;font-size:14.5px;line-height:1.95;letter-spacing:.06em;color:var(--ink2);text-align:justify}
.end-judge[hidden]{display:none!important}
.end-judge-inline{display:inline}
.look-sheet{padding:2px 2px 12px}
.look-lead,.look-note{font-size:13.5px;line-height:1.85;letter-spacing:.05em;color:var(--ink3);margin:0 2px 12px}
.look-note{margin-top:8px;margin-bottom:0}
.look-row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid rgba(27,24,20,.08)}
.look-row b{flex:none;width:3em;font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.2em}
.look-opts{flex:1;display:flex;gap:8px;min-width:0}
.look-opt{flex:1;min-width:0;min-height:40px;padding:6px 4px;font-family:var(--f-head);font-size:16px;letter-spacing:.16em;color:var(--ink2);
  background:var(--brush-img-ink-l) center/100% 100% no-repeat}
.look-opt.on{color:var(--paper-hi);background-image:var(--brush-img-zhu)}
.annals{padding:2px 2px 8px}
.annals-head{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.annals-seal{flex:none;width:48px;height:48px;line-height:48px;text-align:center;font-family:var(--f-head);font-size:26px;color:var(--seal-paper);background:#8e2420;border-radius:4px}
.annals-head b{display:block;font-family:var(--f-head);font-weight:400;font-size:22px;letter-spacing:.16em}
.annals-head em{display:block;font-style:normal;font-size:13px;letter-spacing:.08em;color:var(--ink3);line-height:1.6}
.annals-head em.zhu{color:var(--zhu)}
.annals-block{margin:0 0 12px}
.annals-block h4,.annals-year h4{font-family:var(--f-head);font-weight:400;font-size:16px;letter-spacing:.28em;color:var(--ink3);margin:0 0 6px}
.annals-block p,.annals-year p{font-size:14.5px;line-height:1.85;color:var(--ink2);text-align:justify}
.annals-empty{color:var(--ink4)!important;letter-spacing:.08em}
.annals-people{list-style:none;display:flex;flex-direction:column;gap:6px}
.annals-people li{display:flex;gap:8px;align-items:baseline;font-size:14px;color:var(--ink2)}
.annals-people b{font-family:var(--f-head);font-weight:400;letter-spacing:.08em}
.annals-people em{font-style:normal;color:var(--zhu);font-size:12px;letter-spacing:.06em}
.annals-people span{flex:1;min-width:0;color:var(--ink3);font-size:13px}
.annals-scroll{margin-top:4px;padding-top:8px;border-top:1px dashed rgba(27,24,20,.16)}
.annals-year{margin:0 0 14px}
.annals-year article{margin:0 0 8px;padding-left:10px;border-left:1px solid rgba(27,24,20,.12)}
.annals-year article b{display:block;font-family:var(--f-head);font-weight:400;font-size:16px;letter-spacing:.12em;margin-bottom:2px}
.annals-year article.gold b,.annals-year article.warn b{color:var(--zhu)}

/* 平板与 iPad：左笺右卷，两栏铺满 */
@media (min-width:760px) and (max-width:1279px) and (min-height:620px){
  #scr-main{max-width:none;display:grid;grid-template-columns:minmax(248px,340px) minmax(0,1fr);
    grid-template-rows:auto auto minmax(0,1fr) auto auto;column-gap:clamp(18px,2.4vw,36px);justify-content:stretch;
    padding:calc(var(--sat) + 18px) calc(var(--sar) + 22px) calc(var(--sab) + 14px) calc(var(--sal) + 22px)}
  #scr-main .hud{grid-column:1;grid-row:1;align-self:start;height:auto;overflow:auto;max-height:none;min-height:0;margin:0;
    padding:22px 18px 16px;position:relative;
    background:linear-gradient(rgba(250,246,234,.9),rgba(250,246,234,.9)),var(--paper-img);background-size:auto,256px;
    box-shadow:0 10px 28px rgba(60,40,20,.1),inset 0 0 0 1px rgba(27,24,20,.06)}
  #scr-main .hud::before,#scr-main .hud::after{content:"";position:absolute;left:-6px;right:-6px;height:11px;border-radius:6px;
    background:linear-gradient(180deg,#5b4433,#2d2119 40%,#1a130e 65%,#3c2d22)}
  #scr-main .hud::before{top:-6px}#scr-main .hud::after{bottom:-6px}
  #scr-main .realm-name{font-size:44px}
  #scr-main .chips{flex-direction:row;flex-wrap:wrap}
  #scr-main .scroll{grid-column:2;grid-row:1 / span 3;margin:0;min-height:0;height:100%}
  #scr-main .scroll-paper{height:100%;min-height:0}
  #scr-main .scroll-paper{--juan-h:72px}
  #scr-main .juan-head{height:72px;margin:4px 8px}
  #scr-main .status-line{grid-column:2;grid-row:4}
  #scr-main .actions{grid-column:2;grid-row:5;align-self:start;width:100%;max-width:640px;justify-self:center;grid-template-columns:repeat(4,minmax(0,1fr))}
  #scr-main .act{height:64px;min-height:0}
  .trace-note{display:none !important}
  #scr-main .side{display:flex;flex-direction:column;gap:10px;grid-column:1;grid-row:2;align-self:start;
    min-height:0;max-height:none;overflow:auto;margin:10px 0 0}
  body[data-screen=main] #scr-main{padding-bottom:calc(var(--sab) + 10px);padding-right:calc(var(--sar) + 58px)}
  #scr-main .side-card{display:block;width:100%;text-align:left;padding:10px 14px;border-radius:2px;
    background:linear-gradient(rgba(250,246,234,.9),rgba(250,246,234,.9)),var(--paper-img);background-size:auto,256px;
    box-shadow:inset 0 0 0 1px rgba(27,24,20,.06)}
  #scr-main .side-card h3{display:flex;align-items:center;gap:8px;font-family:var(--f-head);font-weight:400;font-size:13px;letter-spacing:.36em;color:var(--ink3);margin-bottom:4px}
  #scr-main .sd-name{display:block;font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:.06em}
  #scr-main .sd-row{display:block;font-size:12px;line-height:1.7;color:var(--ink3)}
  #scr-main .sd-empty{font-size:13px;color:var(--ink4);letter-spacing:.16em}
  #scr-create{max-width:720px}
  html[data-theme="night"] #scr-main .hud,
  html[data-theme="night"] #scr-main .side-card{
    --ink:var(--panel-ink);--ink2:#3a332b;--ink3:#6e6457;--ink4:#8d8274;--zhu:#9d342e;color:var(--ink)}
}

/* 手机横屏：左笺右卷，收起行藏，避免上下被裁 */
@media (orientation:landscape) and (max-height:540px) and (min-width:640px){
  #scr-main{max-width:none;display:grid;grid-template-columns:minmax(188px,240px) minmax(0,1fr);
    grid-template-rows:minmax(0,1fr) auto;column-gap:14px;
    padding:calc(var(--sat) + 8px) calc(var(--sar) + 12px) calc(var(--sab) + 8px) calc(var(--sal) + 12px)}
  #scr-main .hud{grid-column:1;grid-row:1/3;align-self:center;overflow:auto;max-height:100%;padding:10px 12px;position:relative;
    background:linear-gradient(rgba(250,246,234,.88),rgba(250,246,234,.88)),var(--paper-img);background-size:auto,256px;
    box-shadow:inset 0 0 0 1px rgba(27,24,20,.06)}
  #scr-main .realm-name{font-size:30px}
  #scr-main .realm-stage{font-size:14px}
  #scr-main .bars{margin-top:8px;gap:6px}
  #scr-main .chips{margin-top:8px}
  #scr-main .scroll{grid-column:2;grid-row:1;margin:0}
  #scr-main .log{padding:12px 16px 14px}
  #scr-main .status-line{display:none}
  #scr-main .actions{grid-column:2;grid-row:2}
  #scr-main .act{height:58px}
  #scr-main .act-t{font-size:20px}
  #scr-main .side{display:none}
  .break-seal{bottom:calc(var(--sab) + 72px);width:64px;height:64px;margin-left:-32px}
  html[data-theme="night"] #scr-main .hud{--ink:var(--panel-ink);--ink2:#3a332b;--ink3:#6e6457;--zhu:#9d342e;color:var(--ink)}
  .title-v{font-size:clamp(48px,12vh,72px)}
  .title-menu{bottom:calc(var(--sab) + 4px)}
}

@media (min-width:1000px) and (min-height:600px){
  html[data-theme="night"] body[data-screen="main"] .hud,
  html[data-theme="night"] body[data-screen="main"] .side-card{
    --ink:var(--panel-ink);--ink2:#3a332b;--ink3:#6e6457;--ink4:#8d8274;--zhu:#9d342e;color:var(--ink)}
}

/* 省电：手机少一层远山与流雾；简 / 低帧率停掉循环 */
@media (hover:none) and (pointer:coarse) and (max-width:900px){
  .m1,.mist1{animation:none}
  .mist1{opacity:.32}
  .m2{animation-duration:120s}
}
html[data-motion="lite"] .mtn,
html[data-motion="lite"] .mist,
html[data-fx="thin"] .mtn,
html[data-fx="thin"] .mist,
html[data-motion="lite"] .cranes,
html[data-fx="thin"] .cranes,
html[data-motion="lite"] .ember,
html[data-fx="thin"] .ember,
html[data-motion="lite"] .ea-boat,
html[data-fx="thin"] .ea-boat,
html[data-motion="lite"] #grain,
html[data-fx="thin"] #grain,
html[data-motion="lite"] .cam,
html[data-fx="thin"] .cam,
html[data-motion="lite"] .sun,
html[data-fx="thin"] .sun,
html[data-motion="lite"] .lake-refl,
html[data-fx="thin"] .lake-refl,
html[data-motion="lite"] .lake-shimmer,
html[data-fx="thin"] .lake-shimmer,
html[data-motion="lite"] .pine,
html[data-fx="thin"] .pine,
html[data-motion="lite"] #tod i,
html[data-fx="thin"] #tod i{animation:none!important}
html[data-motion="lite"] .hpaper,
html[data-motion="lite"] .hroller,
html[data-fx="thin"] .hpaper,
html[data-fx="thin"] .hroller{transition-duration:.24s}
html[data-motion="lite"] .sheet-panel,
html[data-fx="thin"] .sheet-panel{transition-duration:.24s}
html[data-motion="lite"] .log,
html[data-fx="thin"] .log{scroll-behavior:auto}
html[data-motion="lite"] .ink-ch,
html[data-fx="thin"] .ink-ch{animation-duration:.32s;animation-delay:calc(var(--i) * 6ms)}
html[data-motion="lite"] .path-cer,
html[data-fx="thin"] .path-cer{transition-duration:.2s}

/* 夜墨：深纸、淡墨、Muted 朱印。卷面仍是暖宣，字仍是浓墨。 */
html[data-theme="night"],
html[data-theme="night"] body,
html[data-theme="night"] body[data-season="0"],
html[data-theme="night"] body[data-season="1"],
html[data-theme="night"] body[data-season="2"],
html[data-theme="night"] body[data-season="3"]{
  --paper:#14110e;
  --paper-hi:#f4ecdc;
  --ink:#f0e6d6;
  --ink2:#d9cbb6;
  --ink3:#b7a892;
  --ink4:#8e8170;
  --zhu:#c46a62;
  --zhu-soft:rgba(168,90,84,.22);
  --qing:#9eb4bc;
  --paper-tint:rgba(196,160,110,.045);
  --paper-stain:rgba(180,140,90,.05);
  --paper-stain2:rgba(120,90,60,.04);
  --paper-realm:transparent;
  --sb-thumb:rgba(236,224,204,.4);
  --sb-thumb-hover:rgba(246,236,220,.66);
  --sb-track:rgba(20,16,12,.45);
  color-scheme:dark;
}
/* 宣纸贴图是不透明浅色，盖住 --paper。只滤 #paper 这一层，卷面仍用原贴图。 */
html[data-theme="night"] #paper{
  background-color:#120f0c;
  filter:contrast(1.18) brightness(.2) sepia(.5) saturate(.72);
}
html[data-theme="night"] #wash .wash-paper,
html[data-theme="night"] #wash .wash-full{
  filter:contrast(1.18) brightness(.2) sepia(.5) saturate(.72);
}
html[data-theme="night"] #paper-veil{opacity:.55}
html[data-theme="night"] #fiber{opacity:.1}
html[data-theme="night"] #vignette{
  background:radial-gradient(120% 90% at 50% 42%,transparent 52%,rgba(0,0,0,.38) 100%);
}
html[data-theme="night"] #tod{opacity:.28}
html[data-theme="night"] .mist{opacity:.62}
html[data-theme="night"] #scenery .lake{
  background:linear-gradient(180deg,rgba(18,16,14,0) 0%,rgba(150,160,170,.05) 16%,rgba(186,194,202,.13) 42%,rgba(206,198,186,.09) 100%);
}
html[data-theme="night"] .boat{filter:invert(.88) sepia(.32) brightness(1.2) contrast(.92)}
html[data-theme="night"] .wake{border-color:rgba(236,228,214,.4)}
html[data-theme="night"] .sun{opacity:.8;filter:saturate(.85) brightness(1.05)}
html[data-theme="night"] .title-v,
html[data-theme="night"] .tch b{color:#f6eee2;text-shadow:0 1px 0 rgba(0,0,0,.55),0 0 16px rgba(8,6,4,.4)}
html[data-theme="night"] .title-sub{color:#e7dcc8}
html[data-theme="night"] .title-poem{color:#d9ccb4}
html[data-theme="night"] .brush-btn:not(.light):not(#btn-continue) .bb-ink{background-image:var(--brush-img-zhu)}
/* 深纸上的淡钮：宣纸笔触配浓墨，字才压得住 */
html[data-theme="night"] .brush-btn.light,
html[data-theme="night"] #btn-continue{color:var(--panel-ink)}
html[data-theme="night"] .brush-btn.light .bb-ink,
html[data-theme="night"] #btn-continue .bb-ink{background-image:var(--brush-img-paper)}
html[data-theme="night"] .brush-btn.light small,
html[data-theme="night"] #btn-continue small{color:#3a332b;opacity:.9;--ink-a:.9}
html[data-theme="night"] .audio-btn{color:#f4ecdc;background-image:var(--brush-img-zhu);opacity:.88}
html[data-theme="night"] .splash-mist{background:radial-gradient(ellipse at center,rgba(240,230,214,.12),rgba(240,230,214,0) 72%)}
html[data-theme="night"] .actions .act .act-ink{
  background-color:rgba(236,226,208,.55);background-image:none;opacity:1;
  -webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain;
  mask-position:center;mask-repeat:no-repeat;mask-size:contain;
  -webkit-mask-image:var(--blot);mask-image:var(--blot);
}
html[data-theme="night"] .act:nth-child(2) .act-ink{-webkit-mask-image:var(--blot2);mask-image:var(--blot2)}
html[data-theme="night"] .act:nth-child(3) .act-ink{-webkit-mask-image:var(--blot3);mask-image:var(--blot3)}
html[data-theme="night"] .act:nth-child(4) .act-ink{-webkit-mask-image:var(--blot4);mask-image:var(--blot4)}
html[data-theme="night"] #btn-menu svg rect{fill:#8e3e3a}
html[data-theme="night"] .scroll-paper,
html[data-theme="night"] .hpaper,
html[data-theme="night"] .sheet-panel,
html[data-theme="night"] .end-paper,
html[data-theme="night"] .ask-card,
html[data-theme="night"] .fabao-scroll,
html[data-theme="night"] #sw-refresh,
html[data-theme="night"] .slot-card,
html[data-theme="night"] .map,
html[data-theme="night"] .mj,
html[data-theme="night"] .dan{
  --ink:var(--panel-ink);--ink2:#3a332b;--ink3:#6e6457;--ink4:#8d8274;--zhu:#9d342e;--qing:#3d5560;--paper-hi:#f7f1e3;
  color:var(--ink);
}
html[data-theme="night"] .mj .choice,
html[data-theme="night"] .mj .mj-text,
html[data-theme="night"] .mj .mj-nt,
html[data-theme="night"] .dan .dan-name,
html[data-theme="night"] .dan .dan-info{color:var(--ink)}
html[data-motion="lite"] .mj .ink-ch,
html[data-fx="thin"] .mj .ink-ch{opacity:1}
html[data-theme="night"] .entry.warn .entry-text{color:#8a3028}
html[data-theme="night"] .ink-cadence .ink-ch{color:#4a433a}
html[data-theme="night"] #splash{background:transparent}
html[data-theme="night"] #splash::before{background:#14110e}
html[data-theme="night"] .modal-shade{background:radial-gradient(ellipse at 50% 50%,rgba(8,6,5,.55),rgba(6,5,4,.78))}
html[data-theme="night"] .sheet-shade{background:rgba(6,5,4,.62)}
html[data-theme="night"] .end{background:rgba(8,6,5,.78)}
html[data-theme="night"] .scroll-hint{color:#f4ecdc}
/* 手机直屏：笺不铺暖纸，修为条与寿烛改淡墨，否则深纸上看不见 */
@media (max-width:759px){
  html[data-theme="night"] body[data-screen="main"] .bar-bg,
  html[data-theme="night"] body[data-screen="main"] .bar-fill{
    background-color:rgba(236,226,208,.78);background-image:none;
    -webkit-mask:var(--brush-bar) center/100% 100% no-repeat;mask:var(--brush-bar) center/100% 100% no-repeat;
  }
  html[data-theme="night"] body[data-screen="main"] .bar-fill.full{
    background-color:#c46a62;background-image:none;
    -webkit-mask:var(--brush-bar) center/100% 100% no-repeat;mask:var(--brush-bar) center/100% 100% no-repeat;
  }
  html[data-theme="night"] body[data-screen="main"] .bar-bg{opacity:.28}
  html[data-theme="night"] body[data-screen="main"] .bar-fill{opacity:.9}
  html[data-theme="night"] body[data-screen="main"] .chips{border-top-color:rgba(240,230,210,.18)}
  html[data-theme="night"] body[data-screen="main"] .incense::before{border-top-color:rgba(240,230,210,.35)}
  html[data-theme="night"] body[data-screen="main"] .stick{background:linear-gradient(90deg,#c4a882,#f0e2cc)}
  html[data-theme="night"] body[data-screen="main"] .bar-life.thin .stick{background:linear-gradient(90deg,#6a5044,#c49286)}
  html[data-theme="night"] body[data-screen="main"] .bar-life.low .stick{background:linear-gradient(90deg,#8a4038,#e0b0a6)}
}

/* 终卷：卷面自己滚，引文按整段撑开，不把一行裁成半截 */
.end{padding:calc(var(--sat) + 10px) 12px calc(var(--sab) + 10px)}
.end-paper{display:flex;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch;
  max-height:calc(100vh - var(--sat) - var(--sab) - 20px);max-height:calc(100dvh - var(--sat) - var(--sab) - 20px);padding:22px 18px 12px}
.end-title{flex:none;font-size:clamp(40px,12vw,72px)}
.end-epitaph{flex:none;max-height:none;overflow:visible;margin:8px 0}
.end-judge{flex:none;max-height:none;overflow:visible}
.end-epitaph-long{flex:none;min-height:calc(1.95em + 24px);max-height:none;overflow:visible;margin:6px 0}
.end-stats{flex:none;max-height:none;overflow:visible;margin-bottom:8px}
.end-actions{flex:none;position:relative;z-index:2;gap:8px;padding-top:8px;background:none}
html[data-theme="night"] .end-actions{background:none}
@media (max-height:700px){
  .end-title{font-size:clamp(34px,11vw,52px)}
  .end-epitaph,.end-stats,.end-epitaph-long{max-height:none;overflow:visible}
  .end-paper{padding:14px 14px 8px}
}
@media (max-width:360px){
  .end-actions .brush-btn.small{min-width:0;width:min(100%,220px);padding:8px 16px}
  .end-actions .bb-text{font-size:18px;letter-spacing:.16em}
}

/* 抽屉不超过可视区，正文在卷内滚 */
.sheet-panel{max-height:min(78vh,calc(100vh - var(--sat) - 12px));max-height:min(78dvh,calc(100dvh - var(--sat) - 12px))}
@media (min-width:700px) and (min-height:520px){
  .sheet-panel{max-height:min(78vh,880px,var(--sheet-cap,78vh));max-height:min(78dvh,880px,var(--sheet-cap,78dvh))}
}
.sect-home,.bag-list,.cult-wrap,.atlas-sheet{overflow-x:hidden;max-width:100%}

/* 游玩：设 / 声横排放进行动列下方的空档，不压行囊与日志 */
body[data-screen="main"]{--dock-clear:52px}
body[data-screen="main"] #scr-main{padding-bottom:calc(var(--sab) + 12px + var(--dock-clear))}
body[data-screen="main"] #audio-dock{
  flex-direction:row;align-items:center;gap:6px;
  top:auto;left:auto;
  right:max(10px,env(safe-area-inset-right));
  bottom:max(6px,env(safe-area-inset-bottom));
}
body[data-screen="main"] .break-seal{bottom:calc(var(--sab) + 112px + var(--dock-clear))}
@media (orientation:landscape) and (max-height:540px) and (min-width:640px){
  body[data-screen="main"] .break-seal{bottom:calc(var(--sab) + 72px + var(--dock-clear))}
}

/* ===== 卷首小景：画在正文之上单独占一条，边沿不规则地淡进纸里 ===== */
#realm-scape{position:absolute;left:0;top:16%;width:min(62%,300px);height:56%;z-index:3;pointer-events:none;opacity:0;overflow:hidden}
#realm-scape picture{display:contents}
#realm-scape .ra{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;opacity:0;transition:opacity .85s ease}
body[data-realm="0"] #realm-scape .ra-0,
body[data-realm="1"] #realm-scape .ra-1,
body[data-realm="2"] #realm-scape .ra-2,
body[data-realm="3"] #realm-scape .ra-3,
body[data-realm="4"] #realm-scape .ra-4,
body[data-realm="5"] #realm-scape .ra-4{opacity:1}
body.realm-shift #scenery > #realm-scape{animation:none}
.juan-head{position:relative;flex:none;height:var(--juan-h);margin:8px 10px 8px;z-index:2;pointer-events:none;
  -webkit-mask-image:var(--juan-mask,radial-gradient(ellipse 84% 74% at 50% 40%,#000 40%,transparent 78%));
  mask-image:var(--juan-mask,radial-gradient(ellipse 84% 74% at 50% 40%,#000 40%,transparent 78%));
  -webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-mode:alpha;mask-mode:alpha}
.juan-head::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:4;pointer-events:none;opacity:.2;
  background-image:var(--fiber-img),var(--grain-img);background-size:280px 280px,180px 180px;mix-blend-mode:multiply}
#juan-head > #realm-scape{position:absolute;left:0;right:0;top:0;width:100%;height:100%;z-index:1;opacity:.96;filter:none;
  -webkit-mask-image:none;mask-image:none;animation:juanInk 1.15s var(--ease-ink) both}
@keyframes juanInk{from{opacity:0}to{opacity:.96}}
html[data-theme="night"] #juan-head > #realm-scape{filter:none}
#scr-main .log{z-index:1}
.juan-head .season-wash{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;height:auto;z-index:3;pointer-events:none;
  -webkit-mask-image:none;mask-image:none}
body[data-season="0"] .season-wash{background:linear-gradient(180deg,rgba(206,118,114,.08),transparent 78%)}
body[data-season="1"] .season-wash{background:linear-gradient(180deg,rgba(118,138,72,.07),transparent 78%)}
body[data-season="2"] .season-wash{background:linear-gradient(180deg,rgba(176,108,52,.08),transparent 78%)}
body[data-season="3"] .season-wash{background:linear-gradient(180deg,rgba(150,170,190,.09),transparent 78%)}
#pale-moon{display:none;position:fixed;right:18%;top:11%;width:36px;height:36px;border-radius:50%;pointer-events:none;z-index:1;
  background:radial-gradient(circle at 38% 36%,rgba(255,252,244,.96),rgba(214,210,198,.55) 46%,rgba(214,210,198,0) 70%);
  box-shadow:0 0 16px rgba(236,230,214,.28)}
body[data-screen="main"] #pale-moon{display:none!important}
body[data-screen="title"] #pale-moon{display:none!important}

/* 卷首用原来的分层水墨（远山、红日、孤松、湖舟）。境界浮贴与四季罩收起，不另贴一幅画。 */
body[data-screen="title"] #scenery > #realm-scape,
body[data-screen="title"] #season-veil{
  opacity:0!important;visibility:hidden!important;animation:none!important}
/* 共用一层极淡纸纹，只盖在画上，让峰、松、水是同一张纸 */
body[data-screen="title"] #scenery::after{
  content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:6;pointer-events:none;
  background-image:var(--fiber-img),var(--grain-img);
  background-size:280px 280px,180px 180px;
  opacity:.16}
html[data-theme="night"] body[data-screen="title"] #scenery::after{
  opacity:.22}
#season-veil{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;z-index:2;opacity:0;transition:background .8s ease,box-shadow .8s ease}
body[data-screen="title"] #season-veil,body[data-screen="main"] #season-veil{opacity:1}
body[data-season="0"] #season-veil{background:linear-gradient(180deg,rgba(214,150,146,.06),transparent 32%)}
body[data-season="1"] #season-veil{background:linear-gradient(180deg,rgba(110,130,70,.05),transparent 32%)}
body[data-season="2"] #season-veil{background:linear-gradient(180deg,rgba(176,110,58,.06),transparent 32%)}
body[data-season="3"] #season-veil{background:linear-gradient(180deg,rgba(168,186,206,.07),transparent 34%)}
body[data-tod="dawn"] #season-veil{box-shadow:inset 0 0 90px rgba(232,176,132,.16)}
body[data-tod="dusk"] #season-veil{box-shadow:inset 0 40px 90px rgba(168,78,42,.16)}
body[data-screen="main"] #tod i{animation:none!important}
body[data-screen="main"][data-tod="dawn"] #tod .tod-dawn{opacity:.42}
body[data-screen="main"][data-tod="dusk"] #tod .tod-dusk{opacity:.5}
body[data-screen="main"][data-tod="noon"] #tod i{opacity:0}
.ink-bloom{position:fixed;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;pointer-events:none;z-index:80;
  background:radial-gradient(circle,rgba(27,24,20,.42),rgba(27,24,20,.08) 42%,transparent 70%);animation:inkBloom .62s ease-out forwards}
html[data-theme="night"] .ink-bloom{background:radial-gradient(circle,rgba(239,228,204,.38),transparent 70%)}
@keyframes inkBloom{to{transform:scale(3.1);opacity:0}}
.choice{position:relative}
.choice.picked::after{content:"";position:absolute;left:10px;right:22%;bottom:7px;height:6px;pointer-events:none;transform-origin:left center;
  background:linear-gradient(90deg,transparent,rgba(179,48,42,.15) 8%,rgba(179,48,42,.62) 18%,rgba(179,48,42,.08) 34%,rgba(179,48,42,.7) 52%,transparent 66%,rgba(179,48,42,.4) 80%,transparent);
  animation:feiBai .42s var(--ease-ink) both}
@keyframes feiBai{from{opacity:0;transform:skewX(-8deg) scaleX(.12)}to{opacity:1;transform:skewX(-8deg) scaleX(1)}}
.bt-pomo{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;pointer-events:none;opacity:0;z-index:6}
.bt.pomo .bt-pomo{animation:pomoWash 1.55s ease forwards;
  background:radial-gradient(circle at 50% 44%,rgba(16,12,10,.15),rgba(8,6,5,.94) 58%)}
@keyframes pomoWash{0%{opacity:0;clip-path:circle(0% at 50% 42%)}32%{opacity:1;clip-path:circle(78% at 50% 42%)}100%{opacity:0;clip-path:circle(130% at 50% 42%)}}
.ev-portrait{float:right;width:76px;margin:2px 0 8px 12px;pointer-events:none}
.ev-portrait[hidden]{display:none!important}
.ev-portrait svg{width:100%;height:auto;display:block}
.modal.open .ev-portrait{animation:pathOptIn .6s ease .15s both}
.margin-note{position:relative;flex:none;z-index:4;pointer-events:none;margin:1px 22px 0 18px;
  font-size:11px;letter-spacing:.04em;color:rgba(122,48,40,.88);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
.scroll-paper.has-note{--note-gap:20px}
#boot-fail{font-family:var(--f-body)}
.margin-note[hidden]{display:none!important}
.margin-col{position:absolute;top:calc(8px + var(--juan-h) + var(--note-gap,0px) + 8px);right:6px;bottom:18px;width:30px;z-index:4;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;gap:5px;overflow:visible}
.margin-col[hidden]{display:none!important}
.m-seal{position:static;width:28px;height:28px;padding:0;border:0;background:transparent;color:#f6f0e2;flex:none;pointer-events:auto;cursor:pointer}
.m-ch{display:block;width:24px;height:24px;margin:0 auto;border-radius:2px;background:#9a332c;font-family:var(--f-head);font-size:13px;line-height:24px;text-align:center;transform:rotate(-8deg);box-shadow:1px 1px 0 rgba(80,20,16,.25)}
.m-seal.land .m-ch{animation:sealLand .55s var(--ease-ink) both}
.m-tip{display:none;position:absolute;right:36px;top:0;width:max-content;max-width:min(280px,46vw);padding:8px 10px;text-align:left;white-space:normal;
  transform:translateY(calc(-100% - 12px));
  background:linear-gradient(rgba(250,246,234,.97),rgba(250,246,234,.97)),var(--paper-img);background-size:auto,256px;
  box-shadow:0 10px 28px rgba(40,28,16,.22),inset 0 0 0 1px rgba(27,24,20,.08);z-index:6}
.m-tip b{display:block;font-weight:400;font-family:var(--f-head);font-size:14px;letter-spacing:.06em;color:var(--ink)}
.m-tip em{display:block;font-style:normal;margin-top:4px;font-size:12px;line-height:1.65;color:var(--ink2)}
.m-seal:hover .m-tip,.m-seal:focus .m-tip,.m-seal:focus-visible .m-tip{display:block}
@keyframes sealLand{from{opacity:0;transform:translate3d(0,6px,0) rotate(-14deg) scale(.86)}to{opacity:1;transform:translate3d(0,0,0) rotate(-8deg) scale(1)}}
.margin-note.land{animation:noteLand .6s var(--ease-ink) both}
@keyframes noteLand{from{opacity:0;transform:translate3d(8px,0,0)}to{opacity:1;transform:none}}
body[data-seals="1"] #scr-main .log{padding-right:46px}
body[data-seals="1"] .margin-note{margin-right:44px}
/* 窄屏单栏：边印不挂卷沿，行迹只留一行，腾出正文 */
@media (max-width:759px), (max-height:619px) and (max-width:1279px){
  #scr-main .margin-col,#scr-main .margin-note{display:none!important}
  body[data-seals="1"] #scr-main .log{padding-right:18px}
}
@media (max-width:759px){
  #scr-main .hud{display:flex;flex-wrap:wrap;align-items:center;min-width:0;max-width:100%}
  #scr-main .hud-top{flex:1 1 auto;min-width:0;max-width:100%;width:100%}
  #scr-main .next-line,#scr-main .bars{flex:1 0 100%}
  #scr-main .realm-block{min-width:0}
  #scr-main .who,#scr-main .who-name,#scr-main .who-sub{min-width:0}
  #scr-main .hud-seals{flex:none;margin-left:8px}
  #scr-main .hud-top{gap:8px}
  #scr-main .next-line{margin-top:2px}
  #scr-main .bars{margin-top:6px;gap:4px}
  #scr-main .chips{flex:0 1 auto;width:auto;max-width:100%;margin-top:4px;padding-top:4px;justify-content:flex-start;gap:1px 2px}
  #scr-main .chip{letter-spacing:0;gap:2px}
  #scr-main .chip em{font-size:13px}
  #scr-main .path-seals{flex:0 0 auto;margin-top:4px;margin-left:4px;align-self:center;gap:4px}
  #scr-main .path-seal{letter-spacing:.04em;gap:3px}
  #scr-main .scroll{margin-top:6px;margin-bottom:2px}
  #scr-main .scroll-paper{--juan-h:78px}
  #scr-main .juan-head{margin-top:4px;margin-bottom:2px}
  #scr-main .log{padding:8px 16px 10px;
    -webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 6px),transparent);
    mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 6px),transparent)}
  #scr-main .entry{margin-bottom:10px}
  #scr-main .status-line{min-height:16px;line-height:16px}
}
@media (max-width:759px) and (max-height:720px){
  #scr-main .scroll-paper{--juan-h:56px}
  #scr-main .act{height:62px}
  #scr-main .realm-name{font-size:32px}
  #scr-main .log{padding-bottom:2px}
}
@media (max-width:390px){
  #scr-main .hud-seals{gap:2px}
  #scr-main .hud-seals .menu-seal{width:34px;height:34px;padding:1px}
  body[data-screen="main"] #audio-dock{
    right:max(12px,env(safe-area-inset-right));
    bottom:max(8px,env(safe-area-inset-bottom));
  }
  body[data-screen="main"] #audio-dock .audio-btn,
  body[data-screen="main"] #audio-dock .audio-btn.muted{opacity:1;filter:none}
}
@media (min-width:760px) and (min-height:600px){
  #scr-main .margin-note:not([hidden]){white-space:normal;overflow:visible;text-overflow:clip}
}
.entry-colo{font-size:12px;letter-spacing:.06em;color:rgba(122,48,40,.8);margin:0 0 4px;text-align:right}
.entry-colo[hidden]{display:none!important}
.origin-cer .path-cer-sealbox{width:58px;height:58px}
.origin-cer .path-cer-lead{min-height:0}
.origin-cer .path-opt{padding:8px 10px 8px 8px}
.origin-cer .path-opt p{font-size:12.5px;line-height:1.65}
.origin-cer .po-seal.wide{font-size:13px;letter-spacing:0;line-height:40px}
.end-huashen .end-title,.end-huashen .end-art{color:#3d5560}
.end-zhenmo .end-title,.end-zhenmo .end-art{color:#6e241f}
.end-chuanshuo .end-title,.end-chuanshuo .end-art{color:#4a433a}
@media (max-width:360px){
  .ev-portrait{width:58px;margin-left:8px}
  #scr-main .margin-col{width:26px;right:3px}
  .m-ch{width:22px;height:22px;line-height:22px;font-size:12px}
  body[data-seals="1"] #scr-main .log{padding-right:16px}
  #pale-moon{width:28px;height:28px}
}
@media (max-height:700px){
  .trial-card{padding:12px 16px 12px}
  .trial-card-title{font-size:28px}
  .trial-lead{margin-bottom:8px}
  .trial-rule{margin-bottom:4px;font-size:13.5px}
  .trial-banner{margin-top:2px;font-size:12px;line-height:1.45}
  .origin-cer.path-cer{align-items:stretch;padding:6px 8px}
  .origin-cer .path-cer-panel{max-height:100%;height:100%;padding-top:6px}
  .origin-cer .path-cer-head{margin-bottom:4px;padding:0 12px}
  .origin-cer .path-cer-sealbox{width:36px;height:36px;margin-bottom:0}
  .origin-cer .path-cer-title{font-size:32px;margin-bottom:2px}
  .origin-cer .path-cer-lead{font-size:12.5px;line-height:1.55;min-height:0}
  .origin-cer .path-cer-body{padding:0 12px 4px}
  .origin-cer .path-opt{padding:5px 8px}
  .origin-cer .path-opt p{font-size:12px;line-height:1.45}
  .origin-cer .path-opt b{font-size:16px;margin-bottom:0}
  .origin-cer .path-opt em{margin-bottom:2px}
  .origin-cer .path-cer-foot{padding:6px 12px 8px}
  .scroll-paper{--juan-h:clamp(96px,16vh,120px)}
}
@media (orientation:landscape) and (max-height:540px) and (min-width:640px){
  .scroll-paper{--juan-h:72px}
  .juan-head{margin-top:4px}
}
@media (prefers-reduced-motion:reduce){
  .ink-bloom,.bt.pomo .bt-pomo,.ev-portrait,body.realm-shift #scenery > #realm-scape,.m-seal.land .m-ch,.margin-note.land,.choice.picked::after{animation:none!important}
  #juan-head > #realm-scape{animation-duration:.01s!important}
  .ink-bloom{display:none}
  .ev-portrait{opacity:.92}
  .bt.pomo .bt-pomo{opacity:0}
}
html[data-motion="lite"] body.go .title-menu .bb-ink,
html[data-fx="thin"] body.go .title-menu .bb-ink,
html[data-motion="lite"] body.go .title-menu .bb-text,
html[data-fx="thin"] body.go .title-menu .bb-text,
html[data-motion="lite"] body.go .title-menu small,
html[data-fx="thin"] body.go .title-menu small{
  animation:inkFade .32s ease .16s both!important;
  -webkit-mask-image:none!important;mask-image:none!important}
html[data-motion="lite"] .ink-bloom,html[data-fx="thin"] .ink-bloom{display:none}
html[data-motion="lite"] .ev-portrait,html[data-fx="thin"] .ev-portrait{animation:none;opacity:.92}
html[data-motion="lite"] #juan-head > #realm-scape,
html[data-fx="thin"] #juan-head > #realm-scape{animation-duration:.32s!important}
html[data-motion="lite"] .bt.pomo,html[data-fx="thin"] .bt.pomo{animation:none!important;opacity:0}
html[data-motion="lite"] .m-seal.land .m-ch,html[data-fx="thin"] .m-seal.land .m-ch,
html[data-motion="lite"] .margin-note.land,html[data-fx="thin"] .margin-note.land,
html[data-motion="lite"] .choice.picked::after,html[data-fx="thin"] .choice.picked::after{animation:none!important}

/* v51：遮罩压实。半透明渐变仍铺在实色上，底下的字不再透进卡片。
   不用 backdrop-filter：简动效与旧引擎本来就拿掉整屏模糊，实色不另付这一笔。 */
.bt-shade,
.rite-shade,
.duel-shade,
.auc-shade,
.path-cer-shade,
.fb-cer-shade,
.ask-shade,
.scroll-shade,
.modal-shade,
.sheet-shade,
.end{
  background-color:#3a2e24 !important;
  background-image:none !important;
}
html[data-theme="night"] .bt-shade,
html[data-theme="night"] .rite-shade,
html[data-theme="night"] .duel-shade,
html[data-theme="night"] .auc-shade,
html[data-theme="night"] .path-cer-shade,
html[data-theme="night"] .fb-cer-shade,
html[data-theme="night"] .ask-shade,
html[data-theme="night"] .scroll-shade,
html[data-theme="night"] .modal-shade,
html[data-theme="night"] .sheet-shade,
html[data-theme="night"] .end{
  background-color:#2a221c !important;
  background-image:none !important;
}
.modal-shade{top:12px;right:12px;bottom:12px;left:12px}
.path-cer-panel{background-color:#161310 !important}
.hpaper,
.sheet-panel,
.end-paper,
.map,
.mj,
.dan-shade,
.ask-card,
.fb-cer-panel{
  background-color:#f6f1e4 !important;
}

/* v53：开卷此身、铺子，以及宽屏把纸页收在可读的宽度里 */
.who-pick{display:flex;flex-direction:column;gap:8px;margin:14px 0 4px}
.who-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.who-line>span{flex:none;width:3em;font-family:var(--f-head);letter-spacing:.2em;color:var(--ink3);font-size:14px}
.who-pick .look-opt{min-width:52px}
.bag-shop{display:block;width:100%;margin:0 0 10px;padding:8px 2px;border:0;border-bottom:1px solid rgba(27,24,20,.12);
  background:transparent;text-align:left;font-family:var(--f-head);letter-spacing:.18em;color:var(--ink2);cursor:pointer}
.shop-sheet .look-lead,.shop-note{font-size:14px;line-height:1.8;color:var(--ink2)}
.shop-note{margin:6px 0 10px}
.shop-col{margin-top:12px}
.shop-col>b{display:block;font-weight:400;font-family:var(--f-head);letter-spacing:.28em;color:var(--ink3);margin-bottom:6px}
.shop-row{display:flex;justify-content:space-between;align-items:baseline;width:100%;gap:12px;padding:8px 0;
  border:0;border-bottom:1px solid rgba(27,24,20,.1);background:transparent;color:var(--ink);font-size:15px;cursor:pointer;text-align:left}
.shop-row small{color:var(--ink3);letter-spacing:.12em;flex:none}
.auc-banner .shop-col{margin:8px 0 14px;text-align:left}
@media (hover:hover) and (pointer:fine){
  .act:hover{transform:translateY(-2px)}
  .choice:hover{filter:brightness(.97)}
  .side-card:hover{box-shadow:0 12px 28px rgba(60,40,20,.16)}
  .menu-item:hover,.shop-row:hover,.bag-shop:hover{color:var(--zhu)}
  .look-opt:hover,.who-pick .look-opt:hover{filter:brightness(.96)}
  .brush-btn:hover{filter:brightness(1.03)}
}
@media (min-width:1280px) and (min-height:700px){
  .hscroll{width:min(100%,680px)}
  .end-paper{width:min(560px,46vw)}
  .sheet-panel{width:min(720px,calc(100vw - 96px)) !important}
  .map-scroll-wrap{width:100%;max-width:1200px;margin-left:auto;margin-right:auto}
  .mj{align-items:center}
  .mj-body,.mj-head,.mj-chain,.mj-bars,.mj-loot{width:min(760px,calc(100% - 48px))}
  .dan-stage{width:min(58vh,560px);height:min(58vh,560px)}
  #scr-create{max-width:640px;margin-left:auto;margin-right:auto}
}
@media (min-width:1440px) and (min-height:800px){
  #scr-main{grid-template-columns:minmax(240px,300px) minmax(0,760px) minmax(240px,300px)}
  .hscroll{width:min(100%,720px)}
  .end-paper{width:min(600px,42vw)}
  .entry-text{font-size:17.5px}
}
@media (min-width:1800px) and (min-height:900px){
  #scr-main{grid-template-columns:minmax(280px,340px) minmax(0,820px) minmax(280px,340px);column-gap:48px}
  .hscroll{width:min(100%,780px)}
  .end-paper{width:min(640px,36vw)}
  .log{padding:10px 48px 36px}
  .realm-name{font-size:64px}
}

/* v54 公告：左缘一方小印，不进底栏那四枚。有未读时印角点一颗朱砂。 */
#btn-notice.notice-seal{
  position:absolute;z-index:4;
  left:max(14px, calc(var(--sal) + 10px));
  top:calc(var(--sat) + 28vh);
  width:44px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;
  color:var(--seal-paper);-webkit-tap-highlight-color:transparent;
  opacity:0;transform:rotate(-8deg);
}
body.go #btn-notice.notice-seal{animation:noticeIn 1.1s 2.4s var(--ease-ink) both}
@keyframes noticeIn{
  from{opacity:0;transform:translate3d(0,8px,0) rotate(-8deg)}
  to{opacity:1;transform:rotate(-8deg)}
}
#btn-notice.notice-seal svg{display:block;width:100%;height:100%;overflow:visible}
#btn-notice.notice-seal:active{transform:rotate(-8deg) scale(.94)}
.notice-dot{
  position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;
  background:#c4372f;box-shadow:0 0 0 2px #f4efe2;pointer-events:none;
}
#btn-notice:not(.has-news) .notice-dot{display:none}
.notice-list{padding:2px 0 8px}
.notice-card{padding:12px 2px 13px;border-bottom:1px solid rgba(27,24,20,.1)}
.notice-card header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;margin-bottom:4px}
.notice-card b{font-family:var(--f-head);font-weight:400;font-size:20px;letter-spacing:.08em;color:var(--ink)}
.notice-card time{flex:none;font-size:12px;letter-spacing:.06em;color:var(--ink3)}
.notice-card ul{margin:0;padding:0;list-style:none}
.notice-card li{position:relative;padding:2px 0 2px 1em;font-size:14.5px;line-height:1.75;color:var(--ink2)}
.notice-card li::before{
  content:"";position:absolute;left:0;top:.72em;width:5px;height:5px;border-radius:50%;
  background:var(--zhu);opacity:.85;
}
@media (max-height:700px){
  #btn-notice.notice-seal{top:calc(var(--sat) + 22vh);width:38px;height:38px}
}
@media (max-width:360px){
  #btn-notice.notice-seal{left:max(8px, var(--sal));width:36px;height:36px}
}
@media (orientation:landscape) and (max-height:540px){
  #btn-notice.notice-seal{
    top:calc(var(--sat) + 72px);
    left:max(10px, calc(var(--sal) + 8px));
    width:32px;height:32px;
  }
}
/* 宽屏卷首被收成中间一条。印改钉在视口左缘的空山上，不挤进题诗和红日。 */
@media (min-width:700px){
  #btn-notice.notice-seal{
    position:fixed;
    left:max(22px, var(--sal));
    top:max(16vh, 108px);
    width:46px;height:46px;
  }
}
@media (min-width:1000px) and (min-aspect-ratio:5/4){
  #btn-notice.notice-seal{
    left:max(36px, calc(var(--sal) + 12px));
    top:20vh;
    width:48px;height:48px;
  }
}
@media (hover:hover) and (pointer:fine){
  #btn-notice.notice-seal:hover{filter:brightness(1.06)}
}

/* v55 轮回印、奈何、仙途志。印只钉在问道印下，不进底栏。 */
.lunhui-seal{
  width:34px;height:34px;margin-top:-8px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--seal-red);color:var(--seal-paper);border-radius:2px;
  transform:rotate(-8deg);box-shadow:1px 2px 0 rgba(80,20,16,.22);
  opacity:0;pointer-events:none;
}
.lunhui-seal[hidden]{display:none !important}
.lunhui-seal b{font-family:var(--f-head);font-weight:400;font-size:14px;line-height:1;letter-spacing:0}
.lunhui-seal i{font-style:normal;font-family:var(--f-head);font-size:10px;line-height:1.1;letter-spacing:.08em;opacity:.92}
body.go .lunhui-seal{animation:lunhuiIn 1.1s 3.35s var(--ease-ink) both}
@keyframes lunhuiIn{from{opacity:0}to{opacity:1}}
html[data-motion="lite"] body.go .lunhui-seal,
html[data-fx="thin"] body.go .lunhui-seal{animation-duration:.01s;animation-delay:0s}
.lunhui-hud{background:#3d342c}
.naihe{
  position:fixed;top:0;right:0;bottom:0;left:0;z-index:46;
  display:flex;align-items:center;justify-content:center;
  padding:calc(var(--sat) + 16px) 16px calc(var(--sab) + 16px);
  background-color:#0c0a08;
}
.naihe[hidden]{display:none !important}
html[data-theme="night"] .naihe{background-color:#070605}
.naihe-paper{
  width:min(100%,420px);max-height:min(92vh,860px);overflow:auto;-webkit-overflow-scrolling:touch;
  padding:26px 22px 18px;text-align:center;
  background-color:#f6f1e4;color:var(--panel-ink);
  --ink:var(--panel-ink);--ink2:#3a332b;--ink3:#6e6457;--zhu:#9d342e;
}
.naihe-bridge{display:block;width:min(100%,260px);height:46px;margin:0 auto;color:var(--panel-ink)}
.naihe-title{font-family:var(--f-body);font-size:40px;line-height:1;letter-spacing:.46em;text-indent:.46em;margin:2px 0 12px;color:var(--panel-ink)}
.naihe-lead{margin:0 0 8px;text-align:left;font-size:14.5px;line-height:1.85;color:#3a332b}
.naihe-opt{
  display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;
  border:0;border-top:1px solid rgba(27,24,20,.12);background:transparent;
  padding:12px 2px;cursor:pointer;color:var(--panel-ink);
}
.naihe-opt:active{background:rgba(179,48,42,.05)}
.naihe-seal{
  flex:none;width:36px;height:36px;margin-top:2px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--f-head);font-size:18px;line-height:1;color:var(--seal-paper);background:#9d342e;
  border-radius:2px;transform:rotate(-6deg);
}
.naihe-body{min-width:0;flex:1}
.naihe-body b{display:block;font-family:var(--f-head);font-weight:400;font-size:17px;letter-spacing:.18em}
.naihe-body em{display:block;font-style:normal;margin-top:3px;font-size:13.5px;line-height:1.7;color:#6e6457}
.codex-tabs{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 8px}
.codex-tab{
  border:0;background:transparent;padding:4px 0;cursor:pointer;
  font-family:var(--f-head);font-size:15px;letter-spacing:.14em;color:var(--ink3);
}
.codex-tab.on{color:var(--zhu);box-shadow:inset 0 -1px 0 currentColor}
.codex-count{margin:0 0 6px;font-size:12px;letter-spacing:.12em;color:var(--ink3)}
.codex-reward{margin:0 0 8px;font-size:13.5px;line-height:1.7;color:var(--ink2)}
.codex-reward.dim{color:var(--ink3)}
.codex-pals{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.codex-pal{
  border:0;background:transparent;box-shadow:inset 0 0 0 1px rgba(27,24,20,.18);
  padding:4px 10px;cursor:pointer;font-family:var(--f-head);letter-spacing:.16em;color:var(--ink2);
}
.codex-pal.on{background:rgba(179,48,42,.08);color:var(--zhu);box-shadow:inset 0 0 0 1px rgba(179,48,42,.35)}
.codex-grid{display:block}
.codex-card{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid rgba(27,24,20,.08)}
.codex-art{flex:none;width:96px;height:58px;overflow:hidden;color:var(--ink2);display:flex;align-items:center;justify-content:center}
.codex-art svg{display:block;width:100%;height:100%}
.codex-art.portrait{width:52px;height:68px}
.codex-art.seal-art b,.seal-face{font-family:var(--f-head);font-weight:400;font-size:26px;letter-spacing:.08em}
.codex-copy{min-width:0;flex:1}
.codex-copy b{display:block;font-family:var(--f-head);font-weight:400;font-size:16px;letter-spacing:.12em}
.codex-copy em{display:block;font-style:normal;margin-top:2px;font-size:13px;line-height:1.65;color:var(--ink3)}
.codex-card.sil .codex-copy b{color:var(--ink4);letter-spacing:.22em}
.sil-ink{display:flex;align-items:center;justify-content:center;width:64px;height:56px;border-radius:0;background:none;box-shadow:none;transform:none;color:rgba(27,24,20,.58)}
.sil-ink.sil-face{width:46px;height:56px}
.sil-ink svg{display:block;width:100%;height:100%;overflow:visible}
.codex-art.sil-art{background:transparent}
html[data-palette="songyan"] #paper{filter:saturate(.86) contrast(1.03)}
html[data-palette="lengjin"] #paper{filter:sepia(.14) saturate(1.05)}
html[data-palette="yuqing"] #paper{filter:sepia(.06) hue-rotate(14deg) saturate(.9)}
html[data-theme="night"][data-palette="songyan"] #paper{filter:contrast(1.18) brightness(.2) sepia(.32) saturate(.5)}
html[data-theme="night"][data-palette="lengjin"] #paper{filter:contrast(1.2) brightness(.2) sepia(.7) saturate(.85)}
html[data-theme="night"][data-palette="yuqing"] #paper{filter:contrast(1.16) brightness(.2) sepia(.35) hue-rotate(16deg) saturate(.62)}
@media (max-width:380px){
  .codex-tab{font-size:14px;letter-spacing:.08em}
  .naihe-title{font-size:34px}
}
.loop-block{margin-top:16px;padding-top:12px;border-top:1px solid rgba(27,24,20,.12)}
.loop-stat{font-family:var(--f-head);letter-spacing:.16em;margin:0 0 6px;color:var(--ink)}
.loop-note,.loop-tut{font-size:13.5px;line-height:1.75;color:var(--ink2);margin:0 0 8px}
.loop-actions{display:flex;flex-direction:column;gap:8px}
.zhen-table{width:100%;border-collapse:collapse;font-size:12.5px;line-height:1.55;margin:0 0 10px}
.zhen-table th,.zhen-table td{border-bottom:1px solid rgba(27,24,20,.1);padding:4px 4px;text-align:left;vertical-align:top}
.zhen-table th{font-weight:400;letter-spacing:.12em;color:var(--ink3)}
.page-aside{display:none}
.page-aside i{font-style:normal}
@media (min-width:1000px) and (min-height:600px){
  body[data-screen=main] .page-aside{
    display:block;position:fixed;z-index:4;top:34%;
    font-size:15px;line-height:1.35;letter-spacing:.28em;color:var(--ink2);
    pointer-events:none;
    writing-mode:vertical-rl;
    text-orientation:upright;
  }
  body[data-screen=main] #margin-l{left:18px;right:auto}
  body[data-screen=main] #margin-r{right:20px;left:auto}
  body[data-screen=main] #scenery .m1,
  body[data-screen=main] #scenery .m2,
  body[data-screen=main] #scenery .m3,
  body[data-screen=main] #scenery .m4{opacity:0}
  /* 栏外远峰：几团洇开的淡墨，下缘化进纸色，不是一块实色。 */
  body[data-screen=main] #vignette::before{
    content:"";position:absolute;left:-8%;right:-8%;top:6%;height:42%;pointer-events:none;
    background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 420'><defs><filter id='w' x='-15%25' y='-40%25' width='130%25' height='180%25'><feGaussianBlur stdDeviation='18'/></filter><linearGradient id='g' x1='0' y1='0' x2='0' y2='1'><stop offset='0' stop-color='%23515f68' stop-opacity='.55'/><stop offset='.5' stop-color='%23515f68' stop-opacity='.2'/><stop offset='1' stop-color='%23515f68' stop-opacity='0'/></linearGradient></defs><g filter='url(%23w)' fill='url(%23g)'><ellipse cx='70' cy='250' rx='150' ry='100'/><ellipse cx='250' cy='200' rx='190' ry='140'/><ellipse cx='470' cy='240' rx='160' ry='90'/><ellipse cx='700' cy='180' rx='210' ry='150'/><ellipse cx='940' cy='220' rx='180' ry='110'/><ellipse cx='1160' cy='190' rx='200' ry='145'/><ellipse cx='1360' cy='245' rx='160' ry='95'/></g></svg>") center/100% 100% no-repeat;
  }
}
@media (max-width:1679px){
  body[data-screen=main] .page-aside{display:none}
}

/* v63: consecutive entries share one date without changing saved logs. */
#log .entry-time[hidden],#log .entry-div[hidden]{display:none}
#scr-main #log .entry-followed{margin-bottom:6px}
#log .entry-cont{padding-left:1em}
#log .entry-year .entry-time{letter-spacing:.22em;opacity:.55}

/* v64: trial results use the existing paper, with a readable four-character title. */
.end-trial .end-title { font-family: 'MoShu', serif; font-size: clamp(32px, 8vw, 56px); letter-spacing: .12em; }

/* v66: 已知道路仍是虚线，实际行过处留下淡墨实线与墨点。 */
.road-known{stroke:rgba(27,24,20,.22)}
.road-trail{stroke:rgba(27,24,20,.5);stroke-width:1.6}
.map-pt{background:rgba(27,24,20,.2)}
.map-pt.walked{background:rgba(27,24,20,.55)}

/* 红尘仍用原纸卷，账目按行展开，长风险与报价在窄屏内换行。 */
.shop-sheet .menu-item{display:block;width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.55;text-align:left;letter-spacing:.06em}
.shop-sheet .menu-item small{white-space:normal;display:block;line-height:1.5}
.shop-sheet .menu-item:disabled{opacity:.45;cursor:default}
.shop-sheet .shop-col{margin:18px 0;padding-top:12px;border-top:1px solid var(--line)}
.shop-sheet p{line-height:1.8;overflow-wrap:anywhere}
.shop-sheet summary{cursor:pointer;font-family:'MoShu',serif;line-height:1.8}
.shop-ledger p+p{padding-top:9px;border-top:1px solid var(--line)}
.shop-prices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.shop-prices .menu-item{padding:8px 4px;font-size:16px}

/* v75：矮桌面窗口里行藏写满时，在笺内滚动。修持在上，行迹在下，都还能翻到。 */
@media (min-width:1280px) and (min-height:600px){
  #scr-main .side{
    max-height:calc(100% - 40px);
    min-height:0;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  #scr-main .sd-name,#scr-main .sd-row{overflow-wrap:anywhere}
}

/* v79：暖墨背板、行藏离边。遮罩仍压实，纸页本身不透字。 */
.modal-shade,
.sheet-shade{
  background-color:rgba(58,44,32,.9) !important;
  background-image:radial-gradient(ellipse at 50% 42%, rgba(112,84,58,.42), rgba(36,26,18,.72)) !important;
}
.goal-cer .path-cer-shade{
  background-color:rgba(54,40,28,.9) !important;
  background-image:radial-gradient(ellipse at 50% 40%, rgba(104,78,54,.4), rgba(32,24,16,.78)) !important;
}
.goal-cer .path-cer-panel{
  background-color:#3f3329 !important;
  background-image:linear-gradient(180deg, rgba(132,100,70,.2), rgba(40,28,20,0)) !important;
  color:#f4ead8;
  box-shadow:0 22px 56px rgba(28,18,10,.4), inset 0 0 0 1px rgba(243,232,210,.16);
}
html[data-theme="night"] .modal-shade,
html[data-theme="night"] .sheet-shade{
  background-color:rgba(36,28,22,.92) !important;
  background-image:radial-gradient(ellipse at 50% 42%, rgba(78,58,42,.36), rgba(20,14,10,.7)) !important;
}
html[data-theme="night"] .goal-cer .path-cer-shade{
  background-color:rgba(32,24,18,.92) !important;
  background-image:radial-gradient(ellipse at 50% 40%, rgba(70,52,38,.34), rgba(16,12,8,.74)) !important;
}
html[data-theme="night"] .goal-cer .path-cer-panel{
  background-color:#342820 !important;
  background-image:linear-gradient(180deg, rgba(110,82,58,.16), rgba(24,16,12,0)) !important;
  color:#f6eee2;
}
@media (min-width:1280px) and (min-height:600px){
  #scr-main{
    padding-left:max(44px, calc(var(--sal) + 20px));
    padding-right:max(56px, calc(var(--sar) + 28px));
  }
  #scr-main .side-card{padding-left:22px;padding-right:24px}
  #scr-main .sd-empty{display:block;padding:6px 0 2px;letter-spacing:.18em}
}
@media (min-width:700px) and (min-height:520px){
  .sheet-panel{
    width:min(720px, calc(100vw - 96px));
    min-width:min(420px, calc(100vw - 96px));
    padding-left:32px;
    padding-right:32px;
  }
}

/* v80：祠前有人未应时，禁用原因要能读出来。 */
.shop-sheet .menu-item.is-wait:disabled{opacity:.92}
.shop-sheet .menu-item.is-wait small{color:var(--zhu);letter-spacing:.14em}

/* v86：题额落定后，这一张纸展开成卷首。四字留在原处淡去，山河、竖题、印和开卷在同一张纸上陆续出来。 */
#splash.unfold{pointer-events:none;cursor:default}
#splash.unfold::before{
  animation:sheetOpen var(--handoff,5.8s) cubic-bezier(.45,.06,.2,1) forwards!important}
#splash.unfold .splash-board{
  transform-origin:50% 62%;
  animation:boardGrow var(--handoff,5.8s) cubic-bezier(.42,.04,.2,1) forwards!important}
#splash.unfold .inkslot,
#splash.unfold .splash-seal,
#splash.unfold .splash-sub{
  animation:colophonFade var(--handoff,5.8s) cubic-bezier(.4,.05,.25,1) forwards!important}
body.opening[data-screen=title] #scenery .cam{
  animation:landOpen var(--handoff,5.8s) cubic-bezier(.33,.04,.2,1) forwards!important}
body.opening[data-screen=title] #scenery .m1,
body.opening[data-screen=title] #scenery .m2,
body.opening[data-screen=title] #scenery .mist,
body.opening[data-screen=title] #scenery .atmo{
  animation:landDeepen var(--handoff,5.8s) ease-out forwards!important}
body.opening[data-screen=title] #scenery .m3,
body.opening[data-screen=title] #scenery .m4,
body.opening[data-screen=title] #scenery .lake{
  animation:landEmerge var(--handoff,5.8s) ease-out forwards!important}
body.opening[data-screen=title] #scenery .sun{
  animation:landEmerge var(--handoff,5.8s) ease-out forwards,sunArc 84s linear infinite!important}
body.opening[data-screen=title] #scenery .pine{
  animation:landPine var(--handoff,5.8s) ease-out forwards,sway 9s ease-in-out infinite alternate!important}
@keyframes sheetOpen{
  0%{opacity:1}
  16%{opacity:.78}
  40%{opacity:.32}
  64%{opacity:.06}
  100%{opacity:0}}
@keyframes boardGrow{
  0%{opacity:1;transform:scale(1)}
  24%{opacity:.9;transform:scale(1.08)}
  46%{opacity:.4;transform:scale(1.2)}
  70%{opacity:.06;transform:scale(1.34)}
  100%{opacity:0;transform:scale(1.42)}}
@keyframes colophonFade{
  0%{opacity:1}
  14%{opacity:.92}
  38%{opacity:0}
  100%{opacity:0}}
@keyframes landOpen{
  0%{transform:scale(1.34) translate3d(-1%,5%,0)}
  100%{transform:scale(1.045) translate3d(-1.6%,.4%,0)}}
@keyframes landDeepen{
  0%{opacity:.22}
  42%{opacity:.7}
  100%{opacity:1}}
@keyframes landEmerge{
  0%{opacity:0}
  18%{opacity:0}
  56%{opacity:1}
  100%{opacity:1}}
@keyframes landPine{
  0%{opacity:0}
  22%{opacity:0}
  60%{opacity:.82}
  100%{opacity:.82}}
/* 动效简、系统减少动态：同一张纸展开，只是更短。盖过更早的 .01s，顺序仍是题、诗、印、开卷。 */
body.unfold-quick:not(.intro-done) .tch b{
  animation-duration:.68s!important;
  animation-delay:calc(.18s + var(--d) * .1s)!important}
body.unfold-quick:not(.intro-done) .tch::after{
  animation-duration:1s!important;
  animation-delay:calc(.28s + var(--d) * .1s)!important}
body.unfold-quick:not(.intro-done) .title-sub{
  animation-duration:.7s!important;
  animation-delay:.48s!important}
body.unfold-quick:not(.intro-done) .title-poem{
  animation-duration:.8s!important;
  animation-delay:.58s!important}
body.unfold-quick:not(.intro-done) .seal-title,
body.unfold-quick:not(.intro-done) .seal-title::before{
  animation-duration:.62s!important;
  animation-delay:.72s!important}
body.unfold-quick:not(.intro-done) .seal-halo{
  animation-duration:.7s!important;
  animation-delay:.86s!important}
body.unfold-quick:not(.intro-done) .title-menu{--ink-d:1.05s}
body.unfold-quick:not(.intro-done) #btn-notice.notice-seal{
  animation-duration:.55s!important;
  animation-delay:.64s!important}
