/* =========================================================
   GALGAME 卡 完整 CSS  v2（整体替换 builtInCss）
   已修复：翻页热区 / 导航点类名与嵌套 / 角色名 / 台词裸文本
           选项层选择器方向 / pos-* 特异性 / 非最新回复整块禁用
           页数上限 12→20
   兼容两套类名：character-name|name、dialogue-nav>nav-dot|nav>dot
   ========================================================= */

/* =========================================================
   代码块美化
   ========================================================= */
.markdown-body pre{position:relative !important;border-radius:12px !important;border:1px solid rgba(200,200,200,0.6) !important;background-color:rgba(255,255,255,0.65) !important;overflow:hidden !important;transition:border-color 0.3s ease;width:calc(100% + 2rem) !important;margin-left:-1rem !important;margin-right:-1rem !important;overflow-x:auto !important}
.markdown-body pre::-webkit-scrollbar{height:6px}
.markdown-body pre::-webkit-scrollbar-track{background:rgba(200,200,200,0.3)}
.markdown-body pre::-webkit-scrollbar-thumb{background:rgba(120,120,120,0.6);border-radius:3px}
.markdown-body pre::before{content:'' !important;position:absolute !important;top:0 !important;left:0 !important;width:80px !important;height:100% !important;background:linear-gradient(to right,rgba(160,160,160,0.5),transparent) !important;pointer-events:none !important;z-index:15 !important;border-radius:12px 0 0 12px !important}
.markdown-body pre::after{content:'' !important;position:absolute !important;top:0 !important;right:0 !important;width:80px !important;height:100% !important;background:linear-gradient(to left,rgba(160,160,160,0.5),transparent) !important;pointer-events:none !important;z-index:15 !important;border-radius:0 12px 12px 0 !important}
.markdown-body pre:hover{border-color:#999 !important}
.markdown-body pre>div>div.flex.justify-between.h-8,.markdown-body pre>div>div.border-b{position:absolute !important;top:0 !important;left:0 !important;width:100% !important;height:100% !important;background:transparent !important;border:none !important;z-index:10 !important;pointer-events:none !important}
.markdown-body pre>div>div.flex.justify-between>div:first-child{display:none !important}
.markdown-body pre div[data-tooltip-id^="copy-tooltip"],.markdown-body pre button[data-tooltip-id^="copy-tooltip"],.markdown-body pre div.size-5.group[data-tooltip-id^="copy-tooltip"]{position:absolute !important;top:0 !important;left:0 !important;width:100% !important;height:100% !important;display:flex !important;cursor:pointer !important;pointer-events:auto !important;z-index:20 !important;opacity:0 !important;background:transparent !important;border:none !important;margin:0 !important;padding:0 !important}
.markdown-body pre svg.lucide-copy,.markdown-body pre div[data-tooltip-id^="copy-tooltip"]>svg{display:none !important;width:0 !important;height:0 !important}
.markdown-body pre .tooltip-container,.markdown-body .tooltip-container{display:inline-block !important;visibility:visible !important;z-index:100 !important}
.markdown-body pre>div>div[node],.markdown-body pre code,.markdown-body pre>code[node]{user-select:none !important;-webkit-user-select:none !important;padding:8px 20px !important;background-color:transparent !important;color:#3e2723 !important;font-family:"JetBrains Mono",Menlo,monospace !important;font-size:16px !important;line-height:1.4 !important;pointer-events:none !important;position:relative !important;z-index:1 !important}
.markdown-body pre code span{color:#3e2723 !important;opacity:1;font-weight:inherit}
.markdown-body pre>code[node]{padding:8px 20px !important;display:block !important}
.markdown-body{overflow-x:hidden !important}

/* =========================================================
   全局 UI 调整
   ========================================================= */
#customized-question-avatar,#customized-answer-avatar{display:none !important}
.group.flex.mb-2:not(#ai-chat-answer),#ai-chat-answer{justify-content:center !important;width:100% !important}
.group.relative.ml-2.md\:ml-4.mr-4.md\:mr-0,#ai-chat-answer .group.relative.ml-4.md\:ml-0{margin-left:0 !important;margin-right:0 !important;margin:0 auto !important;width:100% !important;max-width:850px !important}
#customized-question-content .MuiStack-root.css-1dzoql9,#customized-answer-content .MuiStack-root.css-1dzoql9{display:flex !important;position:relative !important;z-index:10 !important;margin-top:8px !important}
[id="ai-chat-answer"] [class*="bg-\[\#F1CBCB\]"],[id="customized-question-content"] [class*="bg-\[\#c9e1e9\]"]{display:none !important}

/* =========================================================
   GAL 容器与全屏逻辑
   ========================================================= */
.gal-root{position:relative;width:100%;margin:16px 0;display:flex;justify-content:center}
.gal-fullscreen-cb{display:none !important}
.gal-wrapper{position:relative;height:450px;max-height:60vh;aspect-ratio:5/3;max-width:100%;background:#000;border-radius:12px;overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,0.15);transition:all 0.4s cubic-bezier(0.25,0.8,0.25,1)}
.gal-btn-expand{position:absolute;top:12px;right:12px;z-index:100;display:flex;align-items:center;gap:6px;padding:8px 14px;background:rgba(0,0,0,0.4);color:#fff;font-size:13px;border-radius:8px;border:1px solid rgba(255,255,255,0.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;transition:all 0.2s ease}
.gal-btn-expand:hover{background:rgba(0,0,0,0.6);transform:scale(1.05)}
.gal-btn-close{position:fixed;top:24px;right:24px;z-index:10001;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,0.1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.2);cursor:pointer;display:none;transition:all 0.3s ease}
.gal-btn-close::before,.gal-btn-close::after{content:'';position:absolute;top:50%;left:50%;width:20px;height:2px;background:#fff;border-radius:2px}
.gal-btn-close::before{transform:translate(-50%,-50%) rotate(45deg)}
.gal-btn-close::after{transform:translate(-50%,-50%) rotate(-45deg)}
.gal-btn-close:hover{background:rgba(255,255,255,0.25);transform:rotate(90deg)}
.gal-fullscreen-cb:checked~.gal-wrapper{position:fixed;top:0;left:0;width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;z-index:9999;background:rgba(10,10,15,0.95);display:flex;align-items:center;justify-content:center}
.gal-fullscreen-cb:checked~.gal-wrapper .stage{position:relative !important;width:100vw !important;height:60vw !important;max-height:100vh !important;max-width:166.67vh !important;margin:auto !important;border-radius:8px !important;box-shadow:0 0 60px rgba(0,0,0,0.8)}
.gal-fullscreen-cb:checked~.gal-wrapper .gal-btn-expand{display:none}
.gal-fullscreen-cb:checked~.gal-btn-close{display:block}
[id="ai-chat-answer"]:not(:last-of-type) .gal-btn-expand{display:none !important}
[id="ai-chat-answer"]:not(:last-of-type) .gal-wrapper{opacity:0.82;filter:grayscale(0.15)}

/* =========================================================
   舞台核心逻辑
   ========================================================= */
.stage{position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;pointer-events:none;background:#000;overflow:hidden}
.stage .chat-dialogue,.stage .dialogue-nav,.stage .nav,.stage .click-area,.stage .dot,.stage .nav-dot,.stage label{pointer-events:auto !important}
.stage .radio{position:absolute;opacity:0;pointer-events:none;width:0;height:0;clip:rect(0,0,0,0)}
.stage .scene-backgrounds{position:absolute;inset:0;z-index:0}
.stage .scene-bg{position:absolute;inset:0;display:none}
.stage .radio:nth-of-type(1):checked~.scene-backgrounds>.scene-bg:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.scene-backgrounds>.scene-bg:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.scene-backgrounds>.scene-bg:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.scene-backgrounds>.scene-bg:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.scene-backgrounds>.scene-bg:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.scene-backgrounds>.scene-bg:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.scene-backgrounds>.scene-bg:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.scene-backgrounds>.scene-bg:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.scene-backgrounds>.scene-bg:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.scene-backgrounds>.scene-bg:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.scene-backgrounds>.scene-bg:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.scene-backgrounds>.scene-bg:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.scene-backgrounds>.scene-bg:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.scene-backgrounds>.scene-bg:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.scene-backgrounds>.scene-bg:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.scene-backgrounds>.scene-bg:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.scene-backgrounds>.scene-bg:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.scene-backgrounds>.scene-bg:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.scene-backgrounds>.scene-bg:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.scene-backgrounds>.scene-bg:nth-of-type(20){display:block}
.stage .scene-portraits{position:absolute;inset:0;z-index:5;pointer-events:none}
.stage .scene-portrait{position:absolute;inset:0;display:none;background-position:center top !important;background-size:auto 180% !important}
.stage .radio:nth-of-type(1):checked~.scene-portraits>.scene-portrait:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.scene-portraits>.scene-portrait:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.scene-portraits>.scene-portrait:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.scene-portraits>.scene-portrait:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.scene-portraits>.scene-portrait:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.scene-portraits>.scene-portrait:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.scene-portraits>.scene-portrait:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.scene-portraits>.scene-portrait:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.scene-portraits>.scene-portrait:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.scene-portraits>.scene-portrait:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.scene-portraits>.scene-portrait:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.scene-portraits>.scene-portrait:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.scene-portraits>.scene-portrait:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.scene-portraits>.scene-portrait:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.scene-portraits>.scene-portrait:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.scene-portraits>.scene-portrait:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.scene-portraits>.scene-portrait:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.scene-portraits>.scene-portrait:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.scene-portraits>.scene-portrait:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.scene-portraits>.scene-portrait:nth-of-type(20){display:block}
.stage .scene-portraits-secondary{position:absolute;inset:0;z-index:6;pointer-events:none}
.stage .scene-portrait2{position:absolute;inset:0;display:none;background-size:auto 180% !important;background-repeat:no-repeat;background-position:center top !important}
.stage .radio:nth-of-type(1):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.scene-portraits-secondary>.scene-portrait2:nth-of-type(20){display:block}

/* =========================================================
   对话框
   ========================================================= */
.chat-dialogue{
  --vn-bottom:16px;
  --vn-side:16px;
  --vn-radius:18px;
  --vn-bg:rgba(8,6,15,0.78);
  --vn-border:rgba(255,255,255,0.12);
  --vn-blur:14px;
  --vn-shadow:0 12px 40px rgba(0,0,0,0.35),inset 0 1px 0 rgba(255,255,255,0.08);
  position:absolute;
  bottom:var(--vn-bottom);
  left:var(--vn-side);
  right:var(--vn-side);
  z-index:10;
  max-height:40%
}
.stage:has(> .dialogue-nav) .chat-dialogue{--vn-bottom:34px}

.dialogue-page{display:none;flex-direction:column}
.stage .radio:nth-of-type(1):checked~.chat-dialogue .dialogue-page:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.chat-dialogue .dialogue-page:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.chat-dialogue .dialogue-page:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.chat-dialogue .dialogue-page:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.chat-dialogue .dialogue-page:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.chat-dialogue .dialogue-page:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.chat-dialogue .dialogue-page:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.chat-dialogue .dialogue-page:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.chat-dialogue .dialogue-page:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.chat-dialogue .dialogue-page:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.chat-dialogue .dialogue-page:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.chat-dialogue .dialogue-page:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.chat-dialogue .dialogue-page:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.chat-dialogue .dialogue-page:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.chat-dialogue .dialogue-page:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.chat-dialogue .dialogue-page:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.chat-dialogue .dialogue-page:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.chat-dialogue .dialogue-page:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.chat-dialogue .dialogue-page:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.chat-dialogue .dialogue-page:nth-of-type(20){display:flex}

.stage .dialogue-page .character-name{
  position:relative;z-index:2;
  align-self:flex-start;
  margin:0 0 -10px 16px;
  padding:5px 18px 12px;
  background:linear-gradient(135deg,#f0c97a,#d9a44f);
  color:#2d1e08;
  font-size:0.9rem;font-weight:700;letter-spacing:0.05em;
  border-radius:12px 12px 0 0;
  box-shadow:0 -2px 10px rgba(0,0,0,0.35);
  text-shadow:none
}
.stage .dialogue-frame .name{
  font-size:0.95rem;font-weight:700;color:#f0c97a;
  margin-bottom:6px;letter-spacing:0.04em;
  text-shadow:0 1px 4px rgba(0,0,0,0.5)
}
.stage .dialogue-page.narration .character-name,
.stage .dialogue-page.monologue .character-name,
.stage .dialogue-page.narration .dialogue-frame .name,
.stage .dialogue-page.monologue .dialogue-frame .name{display:none}

.stage .dialogue-frame{
  position:relative;
  background:var(--vn-bg);
  border:1px solid var(--vn-border);
  border-radius:var(--vn-radius);
  backdrop-filter:blur(var(--vn-blur));
  -webkit-backdrop-filter:blur(var(--vn-blur));
  box-shadow:var(--vn-shadow);
  padding:18px 24px 34px;
  min-height:80px;
  font-size:0.98rem;line-height:1.85;color:#e8e4f0;
  text-shadow:0 1px 3px rgba(0,0,0,0.4)
}
.stage .dialogue-page.monologue .dialogue-frame{color:#c8bfda;font-style:italic}
.stage .dialogue-page.narration .dialogue-frame{color:#b8b0c8;text-align:center;font-size:0.93rem;line-height:2}
.stage .dialogue-frame .text{font-size:inherit;line-height:inherit;color:inherit;text-shadow:inherit}

.stage .dialogue-frame .next-indicator{
  position:absolute;inset:0;margin:0;
  display:flex;align-items:flex-end;justify-content:flex-end;
  padding:0 18px 9px 0;
  border-radius:inherit;
  font-size:13px;color:rgba(255,255,255,0.45);
  cursor:pointer;pointer-events:auto !important;
  animation:nextBlink 1.2s ease-in-out infinite;
  transition:background 0.2s ease
}
.stage .dialogue-frame .next-indicator:hover{background:rgba(255,255,255,0.06)}
.stage .dialogue-frame .next-indicator:active{background:rgba(255,255,255,0.12)}
@keyframes nextBlink{0%,100%{opacity:0.4}50%{opacity:0.9}}
.stage .click-area{position:absolute;inset:-18px -24px -44px;cursor:pointer;z-index:6;pointer-events:auto !important}

/* =========================================================
   导航点
   ========================================================= */
.stage .dialogue-nav{
  position:absolute;left:0;right:0;bottom:6px;z-index:11;
  display:flex;justify-content:center;align-items:center;gap:10px;
  padding:4px 16px;
  pointer-events:auto !important
}
.stage .nav{
  display:flex;justify-content:center;align-items:center;gap:10px;
  padding:8px 16px 14px;
  pointer-events:auto !important
}
.stage .nav-dot,.stage .dot{
  display:block;flex:0 0 auto;
  width:10px;height:10px;border-radius:50%;
  background:rgba(255,255,255,0.22);
  border:1px solid rgba(255,255,255,0.18);
  box-shadow:0 1px 3px rgba(0,0,0,0.5);
  cursor:pointer;pointer-events:auto !important;
  transition:all 0.25s ease
}
.stage .nav-dot:hover,.stage .dot:hover{background:rgba(255,255,255,0.5);transform:scale(1.25)}
.stage .radio:nth-of-type(1):checked~.dialogue-nav .nav-dot:nth-of-type(1),
.stage .radio:nth-of-type(1):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(1),
.stage .radio:nth-of-type(1):checked~.chat-dialogue .nav .dot:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.dialogue-nav .nav-dot:nth-of-type(2),
.stage .radio:nth-of-type(2):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(2),
.stage .radio:nth-of-type(2):checked~.chat-dialogue .nav .dot:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.dialogue-nav .nav-dot:nth-of-type(3),
.stage .radio:nth-of-type(3):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(3),
.stage .radio:nth-of-type(3):checked~.chat-dialogue .nav .dot:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.dialogue-nav .nav-dot:nth-of-type(4),
.stage .radio:nth-of-type(4):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(4),
.stage .radio:nth-of-type(4):checked~.chat-dialogue .nav .dot:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.dialogue-nav .nav-dot:nth-of-type(5),
.stage .radio:nth-of-type(5):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(5),
.stage .radio:nth-of-type(5):checked~.chat-dialogue .nav .dot:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.dialogue-nav .nav-dot:nth-of-type(6),
.stage .radio:nth-of-type(6):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(6),
.stage .radio:nth-of-type(6):checked~.chat-dialogue .nav .dot:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.dialogue-nav .nav-dot:nth-of-type(7),
.stage .radio:nth-of-type(7):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(7),
.stage .radio:nth-of-type(7):checked~.chat-dialogue .nav .dot:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.dialogue-nav .nav-dot:nth-of-type(8),
.stage .radio:nth-of-type(8):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(8),
.stage .radio:nth-of-type(8):checked~.chat-dialogue .nav .dot:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.dialogue-nav .nav-dot:nth-of-type(9),
.stage .radio:nth-of-type(9):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(9),
.stage .radio:nth-of-type(9):checked~.chat-dialogue .nav .dot:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.dialogue-nav .nav-dot:nth-of-type(10),
.stage .radio:nth-of-type(10):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(10),
.stage .radio:nth-of-type(10):checked~.chat-dialogue .nav .dot:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.dialogue-nav .nav-dot:nth-of-type(11),
.stage .radio:nth-of-type(11):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(11),
.stage .radio:nth-of-type(11):checked~.chat-dialogue .nav .dot:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.dialogue-nav .nav-dot:nth-of-type(12),
.stage .radio:nth-of-type(12):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(12),
.stage .radio:nth-of-type(12):checked~.chat-dialogue .nav .dot:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.dialogue-nav .nav-dot:nth-of-type(13),
.stage .radio:nth-of-type(13):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(13),
.stage .radio:nth-of-type(13):checked~.chat-dialogue .nav .dot:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.dialogue-nav .nav-dot:nth-of-type(14),
.stage .radio:nth-of-type(14):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(14),
.stage .radio:nth-of-type(14):checked~.chat-dialogue .nav .dot:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.dialogue-nav .nav-dot:nth-of-type(15),
.stage .radio:nth-of-type(15):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(15),
.stage .radio:nth-of-type(15):checked~.chat-dialogue .nav .dot:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.dialogue-nav .nav-dot:nth-of-type(16),
.stage .radio:nth-of-type(16):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(16),
.stage .radio:nth-of-type(16):checked~.chat-dialogue .nav .dot:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.dialogue-nav .nav-dot:nth-of-type(17),
.stage .radio:nth-of-type(17):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(17),
.stage .radio:nth-of-type(17):checked~.chat-dialogue .nav .dot:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.dialogue-nav .nav-dot:nth-of-type(18),
.stage .radio:nth-of-type(18):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(18),
.stage .radio:nth-of-type(18):checked~.chat-dialogue .nav .dot:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.dialogue-nav .nav-dot:nth-of-type(19),
.stage .radio:nth-of-type(19):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(19),
.stage .radio:nth-of-type(19):checked~.chat-dialogue .nav .dot:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.dialogue-nav .nav-dot:nth-of-type(20),
.stage .radio:nth-of-type(20):checked~.chat-dialogue .dialogue-nav .nav-dot:nth-of-type(20),
.stage .radio:nth-of-type(20):checked~.chat-dialogue .nav .dot:nth-of-type(20){background:#f0c97a;border-color:#f0c97a;box-shadow:0 0 8px rgba(240,201,122,0.6);transform:scale(1.2)}

/* =========================================================
   选项层
   ========================================================= */
.gal-options-layer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:8;pointer-events:none;display:none;align-items:center;justify-content:center;flex-direction:column;gap:0;padding:5% 12% 38%}
.stage .radio:last-of-type:checked~.gal-options-layer{display:flex;pointer-events:auto}
.gal-options-layer::before{content:'';position:absolute;inset:0;background:rgba(0,0,0,0.35);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:-1}
.stage .gal-options-layer pre{
  margin:5px auto !important;
  width:82% !important;max-width:480px !important;
  border-radius:10px !important;
  background-color:rgba(255,248,238,0.78) !important;
  border:1px solid rgba(255,255,255,0.45) !important;
  backdrop-filter:blur(8px) !important;-webkit-backdrop-filter:blur(8px) !important;
  overflow:hidden !important;cursor:pointer !important;
  transition:all 0.25s ease !important
}
.stage .gal-options-layer pre::before,
.stage .gal-options-layer pre::after{display:none !important}
.stage .gal-options-layer pre:hover{background-color:rgba(255,240,220,0.92) !important;transform:scale(1.03) !important;box-shadow:0 6px 20px rgba(0,0,0,0.25) !important}
.stage .gal-options-layer pre code,
.stage .gal-options-layer pre>div>div[node],
.stage .gal-options-layer pre>code[node]{
  text-align:center !important;font-size:15px !important;color:#3b2518 !important;
  font-weight:600 !important;letter-spacing:0.06em !important
}

/* =========================================================
   全屏点击翻页层
   ========================================================= */
.stage .scene-clicks{position:absolute;inset:0;z-index:9;pointer-events:none}
.stage .scene-clicks>.click-next{position:absolute;inset:0;display:none;cursor:pointer;pointer-events:auto !important}
.stage .radio:nth-of-type(1):checked~.scene-clicks>.click-next:nth-of-type(1),
.stage .radio:nth-of-type(2):checked~.scene-clicks>.click-next:nth-of-type(2),
.stage .radio:nth-of-type(3):checked~.scene-clicks>.click-next:nth-of-type(3),
.stage .radio:nth-of-type(4):checked~.scene-clicks>.click-next:nth-of-type(4),
.stage .radio:nth-of-type(5):checked~.scene-clicks>.click-next:nth-of-type(5),
.stage .radio:nth-of-type(6):checked~.scene-clicks>.click-next:nth-of-type(6),
.stage .radio:nth-of-type(7):checked~.scene-clicks>.click-next:nth-of-type(7),
.stage .radio:nth-of-type(8):checked~.scene-clicks>.click-next:nth-of-type(8),
.stage .radio:nth-of-type(9):checked~.scene-clicks>.click-next:nth-of-type(9),
.stage .radio:nth-of-type(10):checked~.scene-clicks>.click-next:nth-of-type(10),
.stage .radio:nth-of-type(11):checked~.scene-clicks>.click-next:nth-of-type(11),
.stage .radio:nth-of-type(12):checked~.scene-clicks>.click-next:nth-of-type(12),
.stage .radio:nth-of-type(13):checked~.scene-clicks>.click-next:nth-of-type(13),
.stage .radio:nth-of-type(14):checked~.scene-clicks>.click-next:nth-of-type(14),
.stage .radio:nth-of-type(15):checked~.scene-clicks>.click-next:nth-of-type(15),
.stage .radio:nth-of-type(16):checked~.scene-clicks>.click-next:nth-of-type(16),
.stage .radio:nth-of-type(17):checked~.scene-clicks>.click-next:nth-of-type(17),
.stage .radio:nth-of-type(18):checked~.scene-clicks>.click-next:nth-of-type(18),
.stage .radio:nth-of-type(19):checked~.scene-clicks>.click-next:nth-of-type(19),
.stage .radio:nth-of-type(20):checked~.scene-clicks>.click-next:nth-of-type(20){display:block}
.stage .radio:last-of-type:checked~.scene-clicks{display:none}

/* =========================================================
   天气面板
   ========================================================= */
.weather-toggle{position:absolute;top:12px;left:12px;z-index:50;pointer-events:auto}
.weather-toggle details{position:relative}
.weather-toggle summary{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:rgba(0,0,0,0.35);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.15);cursor:pointer;font-size:20px;list-style:none;transition:all 0.3s ease;user-select:none}
.weather-toggle summary::-webkit-details-marker{display:none}
.weather-toggle summary:hover{background:rgba(0,0,0,0.55);transform:scale(1.1)}
.weather-panel{position:absolute;top:48px;left:0;min-width:180px;padding:14px 18px;background:rgba(20,18,28,0.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,0.12);border-radius:14px;color:#e8e4f0;font-size:13px;line-height:1.7;box-shadow:0 12px 36px rgba(0,0,0,0.4);white-space:nowrap}

/* =========================================================
   小屏适配
   ========================================================= */
@media(max-width:600px){
  .chat-dialogue{--vn-bottom:12px;--vn-side:12px;--vn-radius:16px;max-height:44%}
  .stage:has(> .dialogue-nav) .chat-dialogue{--vn-bottom:28px}
  .stage .dialogue-frame{padding:14px 18px 30px;min-height:64px;font-size:0.92rem;line-height:1.78}
  .stage .dialogue-page.narration .dialogue-frame{font-size:0.88rem;line-height:1.9}
  .stage .dialogue-page .character-name{font-size:0.85rem;padding:4px 14px 11px;margin-left:12px}
  .stage .dialogue-frame .name{font-size:0.92rem}
  .stage .dialogue-nav{bottom:4px;gap:8px}
  .stage .nav{gap:9px;padding:7px 16px 12px}
  .stage .nav-dot,.stage .dot{width:9px;height:9px}
  .stage .click-area{inset:-14px -18px -38px}
  .gal-options-layer{padding:5% 8% 42%}
  .stage .gal-options-layer pre{width:92% !important}
}

/* =========================================================
   背景图映射
   ========================================================= */
.bg-school-yard{background:url('https://image.acg.lol/file/2026/07/25/XYjiaoxuelou.png') center/cover no-repeat}
.bg-playground{background:url('https://image.acg.lol/file/2026/07/25/CCcaochang.png') center/cover no-repeat}
.bg-festival{background:url('https://image.acg.lol/file/2026/07/25/HHhuahuiyvpao.png') center/cover no-repeat}
.bg-living-room{background:url('https://image.acg.lol/file/2026/07/25/KTketing.png') center/cover no-repeat}
.bg-shopping-street{background:url('https://image.acg.lol/file/2026/07/25/QRJqingrenjie.png') center/cover no-repeat}
.bg-sister-room{background:url('https://image.acg.lol/file/2026/07/25/MMmeimeifang.png') center/cover no-repeat}
.bg-brother-room{background:url('https://image.acg.lol/file/2026/07/25/GGgegefang.png') center/cover no-repeat}

/* =========================================================
   立绘映射 — 家居服(JJF)
   ========================================================= */
.JJF-MX-BS{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-BS.png') center bottom/contain no-repeat}
.JJF-MX-CC{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-CC.png') center bottom/contain no-repeat}
.JJF-MX-HX{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-HX.png') center bottom/contain no-repeat}
.JJF-MX-JY{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-JY.png') center bottom/contain no-repeat}
.JJF-MX-KJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-KJ.png') center bottom/contain no-repeat}
.JJF-MX-RZ{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-RZ.png') center bottom/contain no-repeat}
.JJF-MX-SJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-SJ.png') center bottom/contain no-repeat}
.JJF-MX-SQ{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-SQ.png') center bottom/contain no-repeat}
.JJF-MX-WX{background:url('https://image.acg.lol/file/2026/07/23/JJF-MX-WX.png') center bottom/contain no-repeat}
.JJF-PB-BS{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-BS.png') center bottom/contain no-repeat}
.JJF-PB-CC{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-CC.png') center bottom/contain no-repeat}
.JJF-PB-HX{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-HX.png') center bottom/contain no-repeat}
.JJF-PB-JY{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-JY.png') center bottom/contain no-repeat}
.JJF-PB-KJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-KJ.png') center bottom/contain no-repeat}
.JJF-PB-RZ{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-RZ.png') center bottom/contain no-repeat}
.JJF-PB-SJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-SJ.png') center bottom/contain no-repeat}
.JJF-PB-SQ{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-SQ.png') center bottom/contain no-repeat}
.JJF-PB-WX{background:url('https://image.acg.lol/file/2026/07/23/JJF-PB-WX.png') center bottom/contain no-repeat}
.JJF-ZL-BS{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-BS.png') center bottom/contain no-repeat}
.JJF-ZL-CC{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-CC.png') center bottom/contain no-repeat}
.JJF-ZL-HX{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-HX.png') center bottom/contain no-repeat}
.JJF-ZL-JY{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-JY.png') center bottom/contain no-repeat}
.JJF-ZL-KJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-KJ.png') center bottom/contain no-repeat}
.JJF-ZL-RZ{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-RZ.png') center bottom/contain no-repeat}
.JJF-ZL-SJ{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-SJ.png') center bottom/contain no-repeat}
.JJF-ZL-SQ{background:url('https://image.acg.lol/file/2026/07/23/JJF-ZL-SQ.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 校服(XF)
   ========================================================= */
.XF-BS-BS{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-BS.png') center bottom/contain no-repeat}
.XF-BS-CC{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-CC.png') center bottom/contain no-repeat}
.XF-BS-HX{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-HX.png') center bottom/contain no-repeat}
.XF-BS-JY{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-JY.png') center bottom/contain no-repeat}
.XF-BS-KJ{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-KJ.png') center bottom/contain no-repeat}
.XF-BS-RZ{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-RZ.png') center bottom/contain no-repeat}
.XF-BS-SJ{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-SJ.png') center bottom/contain no-repeat}
.XF-BS-SQ{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-SQ.png') center bottom/contain no-repeat}
.XF-BS-WX{background:url('https://image.acg.lol/file/2026/07/23/XF-BS-WX.png') center bottom/contain no-repeat}
.XF-LB-BS{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-BS.png') center bottom/contain no-repeat}
.XF-LB-CC{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-CC.png') center bottom/contain no-repeat}
.XF-LB-HX{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-HX.png') center bottom/contain no-repeat}
.XF-LB-JY{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-JY.png') center bottom/contain no-repeat}
.XF-LB-KJ{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-KJ7742c5bff52bba78.png') center bottom/contain no-repeat}
.XF-LB-RZ{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-RZ36db37dda0f352ee.png') center bottom/contain no-repeat}
.XF-LB-SJ{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-SJ.png') center bottom/contain no-repeat}
.XF-LB-WX{background:url('https://image.acg.lol/file/2026/07/23/XF-LB-WX.png') center bottom/contain no-repeat}
.XF-PB-BS{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-BSdc3fcdb5e3aa0a48.png') center bottom/contain no-repeat}
.XF-PB-CC{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-CC18e749b921255bbf.png') center bottom/contain no-repeat}
.XF-PB-HX{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-HX4f33128ba1f4bfcb.png') center bottom/contain no-repeat}
.XF-PB-JY{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-JYb526b2eafd155dd5.png') center bottom/contain no-repeat}
.XF-PB-KJ{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-KJ24d67afb6c966366.png') center bottom/contain no-repeat}
.XF-PB-RZ{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-RZf47aa98e8211b043.png') center bottom/contain no-repeat}
.XF-PB-SJ{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-SJ795e6450b127bb1a.png') center bottom/contain no-repeat}
.XF-PB-SQ{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-SQ7906f10b41ca3e0c.png') center bottom/contain no-repeat}
.XF-PB-WX{background:url('https://image.acg.lol/file/2026/07/23/XF-PB-WXb1469803212f4563.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 体操服(TCF)
   ========================================================= */
.TCF-DJ-BS{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-BS.png') center bottom/contain no-repeat}
.TCF-DJ-CC{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-CC.png') center bottom/contain no-repeat}
.TCF-DJ-HX{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-HX.png') center bottom/contain no-repeat}
.TCF-DJ-JY{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-JY.png') center bottom/contain no-repeat}
.TCF-DJ-KJ{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-KJ.png') center bottom/contain no-repeat}
.TCF-DJ-RZ{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-RZ.png') center bottom/contain no-repeat}
.TCF-DJ-SJ{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-SJ.png') center bottom/contain no-repeat}
.TCF-DJ-SQ{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-SQ.png') center bottom/contain no-repeat}
.TCF-DJ-WX{background:url('https://image.acg.lol/file/2026/07/23/TCF-DJ-WX.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 浴衣(YY)
   ========================================================= */
.YY-LY-BS{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-BS.png') center bottom/contain no-repeat}
.YY-LY-CC{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-CC.png') center bottom/contain no-repeat}
.YY-LY-HX{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-HX.png') center bottom/contain no-repeat}
.YY-LY-JY{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-JY.png') center bottom/contain no-repeat}
.YY-LY-KJ{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-KJ.png') center bottom/contain no-repeat}
.YY-LY-RZ{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-RZ.png') center bottom/contain no-repeat}
.YY-LY-SJ{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-SJ.png') center bottom/contain no-repeat}
.YY-LY-SQ{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-SQ.png') center bottom/contain no-repeat}
.YY-LY-WX{background:url('https://image.acg.lol/file/2026/07/23/YY-LY-WX.png') center bottom/contain no-repeat}
.YY-YK-BS{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-BS.png') center bottom/contain no-repeat}
.YY-YK-CC{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-CC.png') center bottom/contain no-repeat}
.YY-YK-HX{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-HX.png') center bottom/contain no-repeat}
.YY-YK-JY{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-JY.png') center bottom/contain no-repeat}
.YY-YK-KJ{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-KJ.png') center bottom/contain no-repeat}
.YY-YK-RZ{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-RZ.png') center bottom/contain no-repeat}
.YY-YK-SJ{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-SJ.png') center bottom/contain no-repeat}
.YY-YK-SQ{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-SQ.png') center bottom/contain no-repeat}
.YY-YK-WX{background:url('https://image.acg.lol/file/2026/07/23/YY-YK-WX.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 内衣(NY)
   ========================================================= */
.NY-BX-BS{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-BS.png') center bottom/contain no-repeat}
.NY-BX-CC{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-CC.png') center bottom/contain no-repeat}
.NY-BX-HX{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-HX.png') center bottom/contain no-repeat}
.NY-BX-KJ{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-KJ.png') center bottom/contain no-repeat}
.NY-BX-RZ{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-RZ.png') center bottom/contain no-repeat}
.NY-BX-SJ{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-SJ.png') center bottom/contain no-repeat}
.NY-BX-SQ{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-SQ.png') center bottom/contain no-repeat}
.NY-BX-WX{background:url('https://image.acg.lol/file/2026/07/23/NY-BX-WX.png') center bottom/contain no-repeat}
.NY-GD-BS{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-BS.png') center bottom/contain no-repeat}
.NY-GD-CC{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-CC.png') center bottom/contain no-repeat}
.NY-GD-CJ{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-CJ.png') center bottom/contain no-repeat}
.NY-GD-HX{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-HX.png') center bottom/contain no-repeat}
.NY-GD-JY{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-JY.png') center bottom/contain no-repeat}
.NY-GD-KJ{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-KJ.png') center bottom/contain no-repeat}
.NY-GD-RZ{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-RZ.png') center bottom/contain no-repeat}
.NY-GD-SQ{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-SQ.png') center bottom/contain no-repeat}
.NY-GD-WX{background:url('https://image.acg.lol/file/2026/07/23/NY-GD-WX.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 裸体(LT)
   ========================================================= */
.LT-ZJ-RZ{background:url('https://image.acg.lol/file/2026/07/23/LT-ZJ-RZ.png') center bottom/contain no-repeat}
.LT-ZX-BS{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-BS.png') center bottom/contain no-repeat}
.LT-ZX-CC{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-CC.png') center bottom/contain no-repeat}
.LT-ZX-HX{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-HX.png') center bottom/contain no-repeat}
.LT-ZX-JY{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-JY.png') center bottom/contain no-repeat}
.LT-ZX-KJ{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-KJ.png') center bottom/contain no-repeat}
.LT-ZX-SJ{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-SJ.png') center bottom/contain no-repeat}
.LT-ZX-SQ{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-SQ.png') center bottom/contain no-repeat}
.LT-ZX-WX{background:url('https://image.acg.lol/file/2026/07/23/LT-ZX-WX.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — 情人节私服(QRJ/SQJ)
   ========================================================= */
.QRJ-JJ-CC{background:url('https://image.acg.lol/file/2026/07/23/QRJ-JJ-CC.png') center bottom/contain no-repeat}
.QRJ-JJ-HX{background:url('https://image.acg.lol/file/2026/07/23/QRJ-JJ-HX.png') center bottom/contain no-repeat}
.QRJ-JJ-JY{background:url('https://image.acg.lol/file/2026/07/23/QRJ-JJ-JY.png') center bottom/contain no-repeat}
.QRJ-JJ-RZ{background:url('https://image.acg.lol/file/2026/07/23/QRJ-JJ-RZ.png') center bottom/contain no-repeat}
.QRJ-JJ-SJ{background:url('https://image.acg.lol/file/2026/07/23/QRJ-JJ-SJ.png') center bottom/contain no-repeat}
.SQJ-JJ-WX{background:url('https://image.acg.lol/file/2026/07/23/SQJ-JJ-WX.png') center bottom/contain no-repeat}

/* =========================================================
   立绘映射 — NPC
   NPC没有差分表情/动作，每人只有一张立绘，用角色代号做class名
   用法：scene-portrait 填 npc01，scene-portrait2 填 npc01（双人同框时）
   ========================================================= */
.npc01{background:url('https://image.acg.lol/file/2026/07/26/NPC01-.png') center bottom/contain no-repeat}
.npc02{background:url('https://image.acg.lol/file/2026/07/26/NPC02-.png') center bottom/contain no-repeat}
.npc03{background:url('https://image.acg.lol/file/2026/07/26/NPC03-.png') center bottom/contain no-repeat}
.npc04{background:url('https://image.acg.lol/file/2026/07/26/NPC04-.png') center bottom/contain no-repeat}

/* =========================================================
   CG 映射 — 单图
   ========================================================= */
.cg01{background:url('https://image.acg.lol/file/2026/07/25/CG01---CG02.png') center/cover no-repeat}
.cg02{background:url('https://image.acg.lol/file/2026/07/25/CG02---CG01CG02.png') center/cover no-repeat}
.cg03{background:url('https://image.acg.lol/file/2026/07/25/CG03---.png') center/cover no-repeat}
.cg04{background:url('https://image.acg.lol/file/2026/07/25/CG04---.png') center/cover no-repeat}
.cg05{background:url('https://image.acg.lol/file/2026/07/25/CG05----.png') center/cover no-repeat}
.cg06{background:url('https://image.acg.lol/file/2026/07/25/CG06---.png') center/cover no-repeat}
.cg07{background:url('https://image.acg.lol/file/2026/07/25/CG07----CG08.png') center/cover no-repeat}
.cg08{background:url('https://image.acg.lol/file/2026/07/25/CG08----CG07CG09.png') center/cover no-repeat}
.cg09{background:url('https://image.acg.lol/file/2026/07/25/CG09---CG08CG10.png') center/cover no-repeat}
.cg10{background:url('https://image.acg.lol/file/2026/07/25/CG10----CG09.png') center/cover no-repeat}
.cg11{background:url('https://image.acg.lol/file/2026/07/25/CG11---.png') center/cover no-repeat}
.cg12{background:url('https://image.acg.lol/file/2026/07/25/CG12---.png') center/cover no-repeat}
.cg13{background:url('https://image.acg.lol/file/2026/07/25/CG13---.png') center/cover no-repeat}
.cg14{background:url('https://image.acg.lol/file/2026/07/25/CG14----CG15.png') center/cover no-repeat}
.cg15{background:url('https://image.acg.lol/file/2026/07/25/CG15---CG14.png') center/cover no-repeat}
.cg16{background:url('https://image.acg.lol/file/2026/07/25/CG16---.png') center/cover no-repeat}
.cg17{background:url('https://image.acg.lol/file/2026/07/25/CG17---.png') center/cover no-repeat}
.cg18{background:url('https://image.acg.lol/file/2026/07/25/CG18---.png') center/cover no-repeat}

/* =========================================================
   CG 映射 — 差分（3连播）
   ========================================================= */
.cg19a{background:url('https://image.acg.lol/file/2026/07/25/CG19---A-.png') center/cover no-repeat}
.cg19b{background:url('https://image.acg.lol/file/2026/07/25/CG19---B--.png') center/cover no-repeat}
.cg19c{background:url('https://image.acg.lol/file/2026/07/25/CG19---C---.png') center/cover no-repeat}
.cg20a{background:url('https://image.acg.lol/file/2026/07/25/CG20---A-.png') center/cover no-repeat}
.cg20b{background:url('https://image.acg.lol/file/2026/07/25/CG20---B--.png') center/cover no-repeat}
.cg20c{background:url('https://image.acg.lol/file/2026/07/25/CG20---C---.png') center/cover no-repeat}
.cg21a{background:url('https://image.acg.lol/file/2026/07/25/CG21---A-.png') center/cover no-repeat}
.cg21b{background:url('https://image.acg.lol/file/2026/07/25/CG21---B--.png') center/cover no-repeat}
.cg21c{background:url('https://image.acg.lol/file/2026/07/25/CG21---C---.png') center/cover no-repeat}
.cg22a{background:url('https://image.acg.lol/file/2026/07/25/CG22----A---.png') center/cover no-repeat}
.cg22b{background:url('https://image.acg.lol/file/2026/07/25/CG22----B--.png') center/cover no-repeat}
.cg22c{background:url('https://image.acg.lol/file/2026/07/25/CG22----C-.png') center/cover no-repeat}
.cg23a{background:url('https://image.acg.lol/file/2026/07/25/CG23-------A-.png') center/cover no-repeat}
.cg23b{background:url('https://image.acg.lol/file/2026/07/25/CG23-------B--.png') center/cover no-repeat}
.cg23c{background:url('https://image.acg.lol/file/2026/07/25/CG23-------C--.png') center/cover no-repeat}
.cg24a{background:url('https://image.acg.lol/file/2026/07/25/CG24----A.png') center/cover no-repeat}
.cg24b{background:url('https://image.acg.lol/file/2026/07/25/CG24----B.png') center/cover no-repeat}
.cg24c{background:url('https://image.acg.lol/file/2026/07/25/CG24----C.png') center/cover no-repeat}
.cg25a{background:url('https://image.acg.lol/file/2026/07/25/CG25----A-.png') center/cover no-repeat}
.cg25b{background:url('https://image.acg.lol/file/2026/07/25/CG25----B--.png') center/cover no-repeat}
.cg25c{background:url('https://image.acg.lol/file/2026/07/25/CG25----C---.png') center/cover no-repeat}
.cg26a{background:url('https://image.acg.lol/file/2026/07/25/CG26----A---.png') center/cover no-repeat}
.cg26b{background:url('https://image.acg.lol/file/2026/07/25/CG26----B--.png') center/cover no-repeat}
.cg26c{background:url('https://image.acg.lol/file/2026/07/25/CG26----C--.png') center/cover no-repeat}
.cg27a{background:url('https://image.acg.lol/file/2026/07/25/CG27----A---.png') center/cover no-repeat}
.cg27b{background:url('https://image.acg.lol/file/2026/07/25/CG27----B--.png') center/cover no-repeat}
.cg27c{background:url('https://image.acg.lol/file/2026/07/25/CG27----C---.png') center/cover no-repeat}

/* =========================================================
   立绘位置辅助类
   ========================================================= */
.stage .scene-portrait.pos-center,.stage .scene-portrait2.pos-center{background-position:50% bottom}
.stage .scene-portrait.pos-left,.stage .scene-portrait2.pos-left{background-position:25% bottom}
.stage .scene-portrait.pos-right,.stage .scene-portrait2.pos-right{background-position:75% bottom}
.stage .scene-portrait.pos-far-left,.stage .scene-portrait2.pos-far-left{background-position:10% bottom}
.stage .scene-portrait.pos-far-right,.stage .scene-portrait2.pos-far-right{background-position:90% bottom}
.pos-center{background-position:50% bottom}
.pos-left{background-position:25% bottom}
.pos-right{background-position:75% bottom}
.pos-far-left{background-position:10% bottom}
.pos-far-right{background-position:90% bottom}

/* =========================================================
   立绘动画辅助类
   ========================================================= */
.anim-breath{animation:breath 3.5s ease-in-out infinite}
@keyframes breath{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.anim-bounce{animation:bounce 0.6s ease-out 1}
@keyframes bounce{0%{transform:translateY(0)}30%{transform:translateY(-12px)}60%{transform:translateY(-4px)}100%{transform:translateY(0)}}
.anim-shake{animation:shake 0.5s ease-in-out 1}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.anim-fadein{animation:portraitFadeIn 0.8s ease-out both}
@keyframes portraitFadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.anim-slide-left{animation:slideFromLeft 0.6s ease-out both}
@keyframes slideFromLeft{from{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:translateX(0)}}
.anim-slide-right{animation:slideFromRight 0.6s ease-out both}
@keyframes slideFromRight{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}

/* =========================================================
   无默认选中时的黑屏保护：自动显示第一页
   ========================================================= */
.stage:not(:has(> .radio:checked)) .scene-backgrounds>.scene-bg:first-child{display:block}
.stage:not(:has(> .radio:checked)) .scene-portraits>.scene-portrait:first-child{display:block}
.stage:not(:has(> .radio:checked)) .scene-portraits-secondary>.scene-portrait2:first-child{display:block}
.stage:not(:has(> .radio:checked)) .chat-dialogue .dialogue-page:first-child{display:flex}
.stage:not(:has(> .radio:checked)) .dialogue-nav .nav-dot:first-child,
.stage:not(:has(> .radio:checked)) .nav .dot:first-child{background:#f0c97a;border-color:#f0c97a;box-shadow:0 0 8px rgba(240,201,122,0.6);transform:scale(1.2)}

/* =========================================================
   默认页兜底 · 不依赖 :has()
   ========================================================= */
.stage .scene-backgrounds>.scene-bg:first-of-type,
.stage .scene-portraits>.scene-portrait:first-of-type,
.stage .scene-portraits-secondary>.scene-portrait2:first-of-type{display:block}
.stage .chat-dialogue .dialogue-page:first-of-type{display:flex}
.stage .radio:checked~.scene-backgrounds>.scene-bg:first-of-type,
.stage .radio:checked~.scene-portraits>.scene-portrait:first-of-type,
.stage .radio:checked~.scene-portraits-secondary>.scene-portrait2:first-of-type{display:none}
.stage .radio:checked~.chat-dialogue .dialogue-page:first-of-type{display:none}
/* =========================================================
   状态面板 + 角色卡 + 对话修复  补丁 v1.1
   替换上一版补丁 · 追加到现有CSS最底部
   ========================================================= */

/* ---- 隐藏额外控件 ---- */
.char-card-cb,
.ptab-radio{position:absolute !important;width:0 !important;height:0 !important;opacity:0 !important;pointer-events:none !important}

/* =========================================================
   天气按钮放大
   ========================================================= */
.weather-toggle summary{
  width:50px !important;
  height:50px !important;
  font-size:26px !important
}
.status-panel{
  top:58px !important
}

/* =========================================================
   角色介绍卡
   ========================================================= */
.char-intro-card{position:absolute;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);pointer-events:auto}
.char-card-cb:checked~.gal-wrapper .char-intro-card{display:none !important}
.card-close-btn{position:absolute;top:14px;right:18px;font-size:28px;color:rgba(255,255,255,0.5);cursor:pointer;transition:color 0.3s,transform 0.3s;z-index:61;line-height:1;pointer-events:auto}
.card-close-btn:hover{color:#f0c97a;transform:rotate(90deg)}
.card-ribbon{position:absolute;top:28px;left:0;background:linear-gradient(135deg,#f0c97a,#d9a44f);color:#2d1e08;padding:4px 24px 4px 16px;font-size:12px;font-weight:700;letter-spacing:2px;clip-path:polygon(0 0,100% 0,92% 100%,0 100%)}
.card-body{display:flex;flex-direction:column;align-items:center;gap:18px;padding:20px;max-width:300px}
.card-photo-area{width:120px;height:120px;border-radius:50%;border:3px solid rgba(240,201,122,0.5);overflow:hidden;flex-shrink:0}
.card-photo{width:100%;height:100%;background-size:cover;background-position:center top}
.card-info-area{display:flex;flex-direction:column;gap:6px;width:100%}
.card-field{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,0.06)}
.card-label{flex-shrink:0;width:44px;font-size:11px;color:rgba(255,255,255,0.4);text-align:right}
.card-value{font-size:13px;color:rgba(255,255,255,0.88);font-weight:500}

/* =========================================================
   状态面板容器
   ========================================================= */
.status-panel{position:absolute;top:58px;left:0;width:270px;max-height:300px;background:rgba(20,18,28,0.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,0.1);border-radius:12px;box-shadow:0 10px 32px rgba(0,0,0,0.5);overflow:hidden;pointer-events:auto}
.panel-tabs-wrap{position:relative}
.panel-tabs-bar{display:flex;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid rgba(255,255,255,0.08);background:rgba(0,0,0,0.25)}
.panel-tabs-bar::-webkit-scrollbar{display:none}
.ptab-label{flex-shrink:0;padding:7px 5px;font-size:11px;color:rgba(255,255,255,0.4);cursor:pointer;transition:all 0.3s;border-bottom:2px solid transparent;text-align:center;white-space:nowrap;user-select:none;pointer-events:auto}
.ptab-label:hover{color:rgba(255,255,255,0.7);background:rgba(255,255,255,0.04)}

/* ---- 标签页内容 ---- */
.ptab-page{display:none;padding:10px 14px;font-size:12px;color:rgba(255,255,255,0.8);line-height:1.75;max-height:220px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,0.12) transparent}
.ptab-page::-webkit-scrollbar{width:3px}
.ptab-page::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.12);border-radius:3px}

/* ---- 默认显示第一页 + 第一标签高亮 ---- */
.ptab-p1{display:block}
.panel-tabs-bar>.ptab-label:first-child{color:#fff;border-bottom-color:#f0c97a;background:rgba(255,255,255,0.06)}

/* ---- 标签切换核心 ---- */
.panel-tabs-wrap>.ptab-radio:nth-of-type(1):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(2):checked~.ptab-p2,
.panel-tabs-wrap>.ptab-radio:nth-of-type(3):checked~.ptab-p3,
.panel-tabs-wrap>.ptab-radio:nth-of-type(4):checked~.ptab-p4,
.panel-tabs-wrap>.ptab-radio:nth-of-type(5):checked~.ptab-p5,
.panel-tabs-wrap>.ptab-radio:nth-of-type(6):checked~.ptab-p6,
.panel-tabs-wrap>.ptab-radio:nth-of-type(7):checked~.ptab-p7{display:block}
.panel-tabs-wrap>.ptab-radio:nth-of-type(2):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(3):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(4):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(5):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(6):checked~.ptab-p1,
.panel-tabs-wrap>.ptab-radio:nth-of-type(7):checked~.ptab-p1{display:none}
.panel-tabs-wrap>.ptab-radio:nth-of-type(1):checked~.panel-tabs-bar>.ptab-label:nth-child(1),
.panel-tabs-wrap>.ptab-radio:nth-of-type(2):checked~.panel-tabs-bar>.ptab-label:nth-child(2),
.panel-tabs-wrap>.ptab-radio:nth-of-type(3):checked~.panel-tabs-bar>.ptab-label:nth-child(3),
.panel-tabs-wrap>.ptab-radio:nth-of-type(4):checked~.panel-tabs-bar>.ptab-label:nth-child(4),
.panel-tabs-wrap>.ptab-radio:nth-of-type(5):checked~.panel-tabs-bar>.ptab-label:nth-child(5),
.panel-tabs-wrap>.ptab-radio:nth-of-type(6):checked~.panel-tabs-bar>.ptab-label:nth-child(6),
.panel-tabs-wrap>.ptab-radio:nth-of-type(7):checked~.panel-tabs-bar>.ptab-label:nth-child(7){color:#fff;border-bottom-color:#f0c97a;background:rgba(255,255,255,0.06)}
.panel-tabs-wrap>.ptab-radio:nth-of-type(2):checked~.panel-tabs-bar>.ptab-label:first-child,
.panel-tabs-wrap>.ptab-radio:nth-of-type(3):checked~.panel-tabs-bar>.ptab-label:first-child,
.panel-tabs-wrap>.ptab-radio:nth-of-type(4):checked~.panel-tabs-bar>.ptab-label:first-child,
.panel-tabs-wrap>.ptab-radio:nth-of-type(5):checked~.panel-tabs-bar>.ptab-label:first-child,
.panel-tabs-wrap>.ptab-radio:nth-of-type(6):checked~.panel-tabs-bar>.ptab-label:first-child,
.panel-tabs-wrap>.ptab-radio:nth-of-type(7):checked~.panel-tabs-bar>.ptab-label:first-child{color:rgba(255,255,255,0.4);border-bottom-color:transparent;background:transparent}

/* =========================================================
   面板子组件样式
   ========================================================= */
.aff-title{font-size:13px;font-weight:600;margin-bottom:6px;color:#f0c97a}
.aff-bar{width:100%;height:6px;background:rgba(255,255,255,0.1);border-radius:3px;overflow:hidden;margin-bottom:3px}
.aff-fill{height:100%;background:linear-gradient(90deg,#f0c97a,#e88a3a);border-radius:3px;transition:width 0.6s ease}
.aff-num{font-size:11px;color:rgba(255,255,255,0.5);text-align:right;margin-bottom:4px}
.aff-stage{font-size:11px;color:rgba(255,255,255,0.45);margin-bottom:3px}
.aff-delta{font-size:11px;color:rgba(255,200,100,0.75)}
.money-display{font-size:13px;font-weight:600;color:#ffd700;margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid rgba(255,255,255,0.06)}
.inv-list{display:flex;flex-direction:column;gap:3px}
.inv-item{font-size:11px;padding:3px 6px;background:rgba(255,255,255,0.03);border-radius:3px;color:rgba(255,255,255,0.7)}
.mem-list{display:flex;flex-direction:column;gap:3px}
.mem-item{font-size:11px;color:rgba(255,255,255,0.65);padding:2px 0;border-bottom:1px dotted rgba(255,255,255,0.05)}
.shop-title{font-size:13px;font-weight:600;color:#ffa500;margin-bottom:6px}
.shop-list{display:flex;flex-direction:column;gap:3px}
.shop-item{display:flex;justify-content:space-between;align-items:center;padding:4px 6px;background:rgba(255,255,255,0.03);border-radius:3px;font-size:11px}
.shop-name{color:rgba(255,255,255,0.75)}
.shop-price{color:#ffd700;font-weight:600}
.shop-hint{margin-top:6px;font-size:10px;color:rgba(255,255,255,0.3);font-style:italic}

/* =========================================================
   对话框显示强化（修复不显示问题）
   ========================================================= */
.stage>.chat-dialogue{
  display:block !important;
  visibility:visible !important;
  opacity:1 !important
}
.stage>.chat-dialogue>.dialogue-page:first-child{
  display:flex !important;
  flex-direction:column !important
}
.stage>.radio:checked~.chat-dialogue>.dialogue-page:first-child{
  display:none !important
}
.stage>.radio:nth-of-type(1):checked~.chat-dialogue>.dialogue-page:nth-of-type(1),
.stage>.radio:nth-of-type(2):checked~.chat-dialogue>.dialogue-page:nth-of-type(2),
.stage>.radio:nth-of-type(3):checked~.chat-dialogue>.dialogue-page:nth-of-type(3),
.stage>.radio:nth-of-type(4):checked~.chat-dialogue>.dialogue-page:nth-of-type(4),
.stage>.radio:nth-of-type(5):checked~.chat-dialogue>.dialogue-page:nth-of-type(5),
.stage>.radio:nth-of-type(6):checked~.chat-dialogue>.dialogue-page:nth-of-type(6),
.stage>.radio:nth-of-type(7):checked~.chat-dialogue>.dialogue-page:nth-of-type(7),
.stage>.radio:nth-of-type(8):checked~.chat-dialogue>.dialogue-page:nth-of-type(8),
.stage>.radio:nth-of-type(9):checked~.chat-dialogue>.dialogue-page:nth-of-type(9),
.stage>.radio:nth-of-type(10):checked~.chat-dialogue>.dialogue-page:nth-of-type(10),
.stage>.radio:nth-of-type(11):checked~.chat-dialogue>.dialogue-page:nth-of-type(11),
.stage>.radio:nth-of-type(12):checked~.chat-dialogue>.dialogue-page:nth-of-type(12){
  display:flex !important;
  flex-direction:column !important
}

/* ---- 导航点强化 ---- */
.stage>.chat-dialogue>.dialogue-nav,
.stage>.dialogue-nav{
  display:flex !important;
  visibility:visible !important
}