/* 《晚舟堂》烟雨江南水墨视觉层
   不改变原玩法结构，只覆盖视觉、动效与移动端呈现。 */
:root{
  --paper:#f4f0e5;
  --paper-deep:#ddd5c3;
  --ink:#202927;
  --muted:#66716d;
  --red:#8a3f36;
  --gold:#9a7b43;
  --green:#536b64;
  --panel:rgba(247,244,235,.90);
  --shadow:0 18px 54px rgba(31,40,38,.18);
  --radius:5px;
  --font-serif:"FZKai-Z03","STKaiti","KaiTi","Songti SC","SimSun",serif;
  --font-sans:"Noto Sans SC","Microsoft YaHei",sans-serif;
}
html{background:#d9ded9}
body{color:var(--ink);letter-spacing:.025em;background:#d9ded9}
body::before{
  background:
    linear-gradient(rgba(229,233,228,.88),rgba(219,226,222,.88)),
    url("assets/ink_cover.webp") center/cover fixed no-repeat!important;
  filter:saturate(.62) contrast(.94);
}
body::after{
  opacity:.13;
  mix-blend-mode:multiply;
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 260 260' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.36' numOctaves='5' seed='9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.22'/%3E%3C/svg%3E");
}
body.theme-cover::before{background:url("assets/ink_cover.webp") center/cover no-repeat!important;filter:saturate(.72) contrast(.96) brightness(1.03)}
body.theme-warm::before{background:linear-gradient(rgba(227,222,208,.55),rgba(214,219,213,.73)),url("assets/ink_cover.webp") center/cover fixed no-repeat!important}
body.theme-cool::before{background:linear-gradient(rgba(201,213,211,.72),rgba(204,214,213,.8)),url("assets/ink_ferry.webp") center/cover fixed no-repeat!important}
body.theme-fog::before{background:linear-gradient(rgba(206,213,211,.82),rgba(187,198,196,.86)),url("assets/ink_ferry.webp") center/cover fixed no-repeat!important}
body.theme-cold::before{background:linear-gradient(rgba(181,194,193,.82),rgba(175,187,186,.9)),url("assets/ink_hut_hd.webp") center/cover fixed no-repeat!important}
body.theme-healing::before,body.theme-clear::before{background:linear-gradient(rgba(232,227,211,.68),rgba(220,225,216,.72)),url("assets/ink_courtyard_hd.webp") center/cover fixed no-repeat!important}
body.theme-dusk::before{background:linear-gradient(rgba(151,161,160,.82),rgba(116,129,128,.88)),url("assets/ink_courtyard_hd.webp") center/cover fixed no-repeat!important}

.weather-layer{z-index:1;opacity:.58;mix-blend-mode:screen}
.weather-layer::before,.weather-layer::after{content:"";position:absolute;inset:-12%;pointer-events:none}
.weather-layer::before{background:radial-gradient(ellipse at 48% 42%,rgba(255,255,255,.58),rgba(238,244,241,.08) 48%,transparent 73%);filter:blur(26px);animation:jiangnanMist 13s ease-in-out infinite alternate}
.weather-layer::after{background:repeating-linear-gradient(105deg,transparent 0 28px,rgba(216,231,229,.26) 29px 30px,transparent 31px 56px);opacity:0;transform:translateY(-10%);animation:drizzle 2.4s linear infinite}
body.theme-cool .weather-layer::after,body.theme-fog .weather-layer::after,body.theme-cold .weather-layer::after{opacity:.34}
.weather-layer span{width:5px;height:5px;background:rgba(255,255,255,.32);filter:blur(1px)}
body.theme-cold .weather-layer span{background:rgba(233,242,240,.36)}
@keyframes jiangnanMist{from{transform:translate3d(-2%,1%,0) scale(1)}to{transform:translate3d(3%,-1%,0) scale(1.08)}}
@keyframes drizzle{to{transform:translate(-3%,16%)}}

.cover-screen{place-items:stretch;isolation:isolate}
.cover-art{background:url("assets/ink_cover.webp") center/cover no-repeat;filter:saturate(.72) contrast(.98);animation:inkBreath 18s ease-in-out infinite alternate}
.cover-art::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(247,245,237,.96) 0%,rgba(247,245,237,.83) 35%,rgba(247,245,237,.17) 69%,rgba(232,238,235,.09));mix-blend-mode:screen}
@keyframes inkBreath{to{transform:scale(1.035) translateX(-.35%)}}
.cover-shade{background:linear-gradient(90deg,rgba(247,245,237,.94) 0%,rgba(247,245,237,.78) 37%,rgba(241,243,238,.08) 71%),linear-gradient(0deg,rgba(33,47,45,.18),transparent 48%)}
.cover-copy{align-self:center;width:min(670px,91vw);margin:0 0 0 clamp(28px,7vw,118px);padding:44px 48px 42px;color:#25302e;text-shadow:none;background:linear-gradient(120deg,rgba(248,246,239,.78),rgba(248,246,239,.34) 62%,transparent);border-left:2px solid rgba(73,89,83,.34);box-shadow:-20px 0 45px rgba(255,255,255,.18)}
.cover-copy::before{content:"晚舟";position:absolute;right:24px;top:28px;width:42px;height:42px;display:grid;place-items:center;color:#963d34;border:2px solid #963d34;border-radius:4px;font-family:var(--font-serif);font-size:.8rem;line-height:1.05;writing-mode:vertical-rl;opacity:.82;transform:rotate(-3deg)}
.eyebrow,.dialog-eyebrow,.section-kicker{color:#6c7771;letter-spacing:.28em}
.cover-copy h1{font-family:"STKaiti","KaiTi",var(--font-serif);font-size:clamp(4.7rem,10vw,8.7rem);font-weight:500;color:#182321;letter-spacing:.08em;text-shadow:0 2px 1px rgba(255,255,255,.55)}
.subtitle{color:#6f3b34;letter-spacing:.72em;margin-left:.5em}
.cover-intro{max-width:590px;color:#3d4b48;line-height:2.15;font-size:1.03rem}
.cover-intro::before{content:"一卷旧账，一场春雨，一段无人知晓的往事。";display:block;margin:0 0 14px;padding:0 0 10px;color:#7a4b40;font-size:.92rem;letter-spacing:.14em;border-bottom:1px solid rgba(78,92,87,.22)}
.cover-actions{gap:12px}
.cover-note{color:#64716d;opacity:1}

.primary-btn,.secondary-btn,.danger-btn,.compact-btn,.top-action,.icon-button,.chapter-button,.hint-level,.option-button,.sequence-item,.puzzle-reset,.puzzle-submit{
  border-radius:3px!important;
  box-shadow:none;
}
.primary-btn{background:linear-gradient(180deg,rgba(55,71,67,.94),rgba(37,51,48,.96));color:#f5f1e7;border:1px solid rgba(25,38,35,.65);padding:12px 25px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),0 7px 16px rgba(39,53,49,.16)}
.primary-btn:hover{background:#314641;transform:translateY(-1px)}
.secondary-btn{background:rgba(247,245,237,.58);color:#34423f;border:1px solid rgba(54,71,66,.42)}
.cover-copy .secondary-btn{color:#34423f}
.secondary-btn:hover{background:rgba(255,255,255,.78)}
.text-btn{color:#6d3f37;text-decoration-style:dotted}

.topbar{background:rgba(238,239,232,.91);color:#26332f;border-bottom:1px solid rgba(48,66,61,.25);box-shadow:0 8px 30px rgba(53,66,62,.12);backdrop-filter:blur(14px) saturate(.75)}
.topbar::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:8px;background:url("assets/brush-divider.svg") center/100% 100% no-repeat;opacity:.38;pointer-events:none}
.brand-title{font-family:"STKaiti","KaiTi",var(--font-serif);font-size:1.38rem;color:#26332f}
.chapter-label{color:#68736f}
.brand-button{color:#7a4038;border-color:rgba(75,91,86,.3);background:rgba(255,255,255,.52)}
.top-action{color:#33423e;background:rgba(252,250,243,.54);border:1px solid rgba(56,75,69,.26);padding:9px 12px}
.top-action:hover{background:rgba(255,255,255,.9);border-color:rgba(75,94,88,.52)}
#supportBtn{color:#7a4138!important;background:rgba(139,76,60,.07)!important;border-color:rgba(139,76,60,.28)!important}

.layout{padding:23px;gap:20px;grid-template-columns:220px minmax(0,1fr) 292px}
.chapter-rail,.evidence-panel,.story-panel{position:relative;background:var(--panel);border:1px solid rgba(53,70,65,.23);box-shadow:var(--shadow);backdrop-filter:blur(13px) saturate(.75)}
.chapter-rail::before,.evidence-panel::before,.story-panel::before,.paper-dialog .dialog-shell::before{content:"";position:absolute;inset:7px;pointer-events:none;border:1px solid rgba(83,99,93,.1)}
.chapter-rail{border-radius:4px;padding:20px 13px}
.rail-heading{color:#713d36;border-bottom-color:rgba(70,87,81,.22);font-family:"STKaiti","KaiTi",var(--font-serif);font-size:1rem}
.chapter-button:hover:not(:disabled),.chapter-button.active{background:linear-gradient(90deg,rgba(78,103,95,.14),transparent)}
.chapter-number{background:transparent;border:1px solid rgba(77,94,88,.38);color:#6e4038}
.chapter-button.active .chapter-number,.chapter-button.complete .chapter-number{background:#536b64;color:#f5f1e7}
.progress-track{background:rgba(65,84,78,.12)}
.progress-track span{background:linear-gradient(90deg,#4b6860,#8b7252)}

.scene-frame{min-height:320px;aspect-ratio:16/7;border-radius:3px;background:#e8e7dd;border:7px solid rgba(246,243,233,.84);outline:1px solid rgba(43,61,56,.27);box-shadow:0 17px 45px rgba(35,48,44,.18);isolation:isolate}
.scene-frame::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.10),transparent 52%,rgba(34,48,44,.10)),radial-gradient(ellipse at center,transparent 45%,rgba(34,45,42,.18));mix-blend-mode:multiply}
.scene-frame::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");opacity:.16;mix-blend-mode:multiply}
.scene-frame img{filter:saturate(.62) contrast(.96) brightness(1.04);transform:scale(1.006)}
.theme-fog .scene-frame img{filter:saturate(.48) brightness(.91) contrast(.98)}
.theme-cold .scene-frame img{filter:saturate(.42) brightness(.85) contrast(1.03)}
.theme-healing .scene-frame img,.theme-clear .scene-frame img{filter:saturate(.68) brightness(1.06) contrast(.94)}
.scene-caption,.scene-mood{z-index:4;color:#eef1ea;background:rgba(31,46,42,.68);border:1px solid rgba(238,242,233,.16);border-radius:2px;letter-spacing:.08em}
.scene-mood{color:#eee0bb}

.story-panel{border-radius:4px;padding:29px 32px 31px}
.story-header{padding-bottom:17px;border-bottom:1px solid rgba(63,81,75,.2)}
.story-header::after{content:"";display:block;width:178px;height:18px;margin-top:10px;background:url("assets/brush-divider.svg") left center/100% 100% no-repeat;opacity:.44}
.story-header h2{font-family:"STKaiti","KaiTi",var(--font-serif);font-weight:500;font-size:clamp(1.55rem,2.1vw,2.15rem);letter-spacing:.08em}
.section-kicker{color:#7b463d}
.story-content{color:#34433f;line-height:2.05}
.story-content p:first-child::first-letter{font-size:1.72em;color:#7c463c}
.document{position:relative;background:linear-gradient(145deg,rgba(246,242,230,.96),rgba(227,224,211,.88));border:1px solid rgba(74,91,84,.25);border-left:4px solid #71827a;border-radius:2px;color:#3b4844;box-shadow:inset 0 0 28px rgba(92,99,82,.07)}
.document::after{content:"卷";position:absolute;right:12px;bottom:9px;color:rgba(139,61,51,.5);border:1px solid rgba(139,61,51,.45);padding:2px 4px;font-size:.7rem;transform:rotate(-5deg)}
.dialogue{position:relative;margin:18px 0;padding:15px 18px 15px 24px;background:linear-gradient(90deg,rgba(218,225,220,.74),rgba(244,242,232,.28));border:0;border-left:3px solid #607870;color:#31413d;line-height:2}
.dialogue::before{content:"";position:absolute;left:-9px;top:13px;width:12px;height:28px;background:#637b73;opacity:.28;filter:blur(2px)}
.speaker{color:#7d443b;font-weight:700;letter-spacing:.09em}
.objective-card{background:rgba(224,230,224,.65);border:1px solid rgba(67,88,80,.22);border-radius:2px;color:#34443f}
.objective-icon{color:#79443b;border-color:rgba(121,68,59,.4)}
.objective-label{color:#6c423a}
.puzzle-card{background:rgba(248,246,238,.84);border:1px solid rgba(56,76,69,.24);border-radius:3px;box-shadow:inset 0 0 34px rgba(78,91,77,.055)}
.puzzle-card h3{font-family:"STKaiti","KaiTi",var(--font-serif);font-size:1.35rem;color:#2d3e39}
.sequence-item,.option-button,.hint-level{background:rgba(235,235,225,.64);color:#34433f;border:1px solid rgba(63,83,76,.22)}
.sequence-item:hover,.option-button:hover,.hint-level:hover,.sequence-item.selected{background:rgba(205,217,210,.66);border-color:rgba(70,96,87,.5)}
.order-badge{background:#526e65;color:#f6f2e8}
.puzzle-submit{background:#354d46;color:#f4f0e5;border:1px solid #293d37}
.puzzle-reset{background:transparent;color:#6b3d36;border:1px solid rgba(107,61,54,.34)}
.feedback.success{background:rgba(199,218,204,.62);border-color:rgba(63,105,75,.32);color:#34533e}
.feedback.error{background:rgba(231,211,201,.64);border-color:rgba(137,70,54,.32);color:#79473c}

.evidence-panel{border-radius:4px;padding:20px 17px}
.evidence-panel h2{font-family:"STKaiti","KaiTi",var(--font-serif);font-weight:500;letter-spacing:.12em}
.evidence-item{background:rgba(248,246,238,.55);border-color:rgba(68,87,81,.18);border-radius:2px}
.character-card{background:linear-gradient(135deg,rgba(217,225,219,.76),rgba(246,243,232,.52));border-color:rgba(59,80,73,.18);border-radius:2px}
.portrait{filter:grayscale(.12) sepia(.08) saturate(.82) contrast(1.03);border:1px solid rgba(55,73,67,.32);box-shadow:0 5px 16px rgba(35,47,43,.18),inset 0 0 18px rgba(246,240,222,.12)}
.speaker-name{color:#6e4038}

.paper-dialog,.ending-dialog{background:transparent}
.paper-dialog::backdrop,.ending-dialog::backdrop{background:rgba(33,45,42,.58);backdrop-filter:blur(6px)}
.paper-dialog .dialog-shell{position:relative;background:linear-gradient(145deg,rgba(248,246,238,.98),rgba(226,226,216,.97));border:1px solid rgba(46,65,58,.34);border-radius:4px;box-shadow:0 26px 80px rgba(25,35,32,.34)}
.dialog-shell header{border-bottom-color:rgba(62,81,74,.2)}
.dialog-close{color:#566762}
.hint-result{background:rgba(221,228,222,.62);border-left-color:#657f75;color:#364943}
.clue-card{border-color:rgba(61,82,74,.2);background:rgba(246,244,235,.62);border-radius:2px}
.settings-grid,.save-tools{border-color:rgba(61,82,74,.18)}
.text-input,.select-input,textarea{background:rgba(252,250,243,.72);border:1px solid rgba(58,79,71,.28);color:#2f3e39;border-radius:2px}

.ending-content{background-position:center;background-size:cover;border:7px solid rgba(244,241,231,.85);outline:1px solid rgba(40,59,52,.4)}
.ending-content::before{background:linear-gradient(90deg,rgba(238,238,229,.94),rgba(238,238,229,.72) 61%,rgba(236,239,233,.22))}
.ending-inner{color:#263732}
.ending-tag{color:#77433a}
.ending-inner h2{font-family:"STKaiti","KaiTi",var(--font-serif);font-size:2.8rem;font-weight:500}

@media(max-width:1180px){.layout{grid-template-columns:205px minmax(0,1fr)}.evidence-panel{grid-column:1/-1;position:static;max-height:none}.scene-frame{min-height:270px}}
@media(max-width:820px){
  .cover-copy{margin:0;width:100%;align-self:end;padding:35px 24px 48px;background:linear-gradient(0deg,rgba(246,245,238,.96),rgba(246,245,238,.83) 70%,transparent)}
  .cover-copy::before{right:24px;top:20px}
  .cover-copy h1{font-size:clamp(4.1rem,22vw,6.2rem)}
  .cover-shade{background:linear-gradient(0deg,rgba(246,245,238,.96) 0%,rgba(246,245,238,.82) 53%,rgba(242,245,241,.07) 88%)}
  .topbar{align-items:flex-start}.top-actions{justify-content:flex-end}.action-text{display:inline}
  .layout{grid-template-columns:1fr;padding:12px}.chapter-rail{position:static;max-height:none}.chapter-rail #chapterNav{display:flex;overflow:auto}.chapter-button{min-width:155px}
  .story-panel{padding:23px 19px}.scene-frame{min-height:230px;aspect-ratio:16/9}.scene-caption,.scene-mood{font-size:.66rem}
}
@media(max-width:520px){
  .cover-copy{padding:31px 18px 34px}.cover-copy h1{font-size:4rem}.cover-intro{font-size:.91rem;line-height:1.85}.cover-intro::before{font-size:.82rem}
  .topbar{padding:8px}.brand-title{font-size:1rem}.chapter-label{font-size:.67rem}.top-actions{gap:5px}.top-action{padding:7px 8px;font-size:.7rem}.action-text{display:none}.top-action:nth-child(2) .action-text,.top-action:nth-child(3) .action-text{display:inline}
  .scene-frame{min-height:205px}.scene-caption{left:7px;bottom:7px}.scene-mood{right:7px;bottom:7px}.story-panel{padding:21px 15px}.story-header h2{font-size:1.5rem}
}
@media(prefers-reduced-motion:reduce){.cover-art,.weather-layer::before,.weather-layer::after{animation:none!important}}

/* 自愿支持浮层同步水墨风格 */
.paywall-overlay{background:rgba(32,46,42,.58);backdrop-filter:blur(8px) saturate(.7)}
.paywall-card{border-radius:4px;border:1px solid rgba(49,71,63,.36);background:linear-gradient(145deg,rgba(248,246,238,.98),rgba(219,224,216,.98));color:#2f403a;box-shadow:0 28px 82px rgba(25,37,33,.38),inset 0 0 0 7px rgba(255,255,255,.18)}
.paywall-card::before{content:"";position:absolute;inset:8px;pointer-events:none;border:1px solid rgba(65,84,77,.12)}
.paywall-title{font-family:"STKaiti","KaiTi",var(--font-serif);color:#30443d;font-size:1.65rem;font-weight:500}
.paywall-subtitle,.paywall-msg-body,.paywall-msg-warm2,.paywall-hint{color:#63726d}
.paywall-msg-warm{color:#70443b}
.paywall-msg-cute{background:rgba(91,118,107,.11);color:#516b61;border-left:3px solid rgba(81,107,97,.52);border-radius:2px}
.paywall-btn{border-radius:3px}
.paywall-btn-support{background:linear-gradient(180deg,#7d4a40,#683a33);box-shadow:none}
.paywall-btn-later{background:rgba(249,247,239,.66);color:#40524b;border:1px solid rgba(61,83,75,.23)}
.paywall-qr-wrapper{border-radius:3px;border:1px solid rgba(61,82,75,.22)}
.paywall-close{border-radius:2px;color:#596b65;background:rgba(86,105,98,.07)}

/* 修正原版侧栏在平板/手机上的抽屉位移，避免页面产生横向滚动 */
@media(max-width:1180px){
  .evidence-panel{position:static!important;inset:auto!important;width:auto!important;max-width:none!important;max-height:none!important;transform:none!important;grid-column:1/-1;z-index:auto!important}
  .mobile-only{display:none!important}
}
@media(max-width:820px){
  .layout{display:grid!important;grid-template-columns:minmax(0,1fr)!important}
  .chapter-rail,.main-stage,.evidence-panel{min-width:0;width:100%}
  .topbar{overflow:hidden}
  .top-actions{min-width:0;max-width:68vw;overflow-x:auto;overflow-y:hidden}
}
