/* ============================================================
   幻梦智造 · 第一卷 · 一日幻梦
   印刷漫画 / 撞色 / 分格 / Live2D 式层动
   ============================================================ */

:root{
  --paper:#F2E8D5;
  --paper-2:#E7D8BB;
  --ink:#14100E;
  --ink-2:#3C332B;
  --red:#E23A2E;
  --red-deep:#A8221A;
  --teal:#0E5A55;
  --mustard:#F0B429;
  --violet:#5A3B8C;
  --blue:#2C5FA8;
  --sans:"Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC","PingFang SC","Microsoft YaHei UI",sans-serif;
  --serif:"Noto Serif SC","Noto Serif CJK SC","Songti SC","STSong","SimSun",serif;
  --kai:"Kaiti SC","STKaiti","KaiTi","Noto Serif SC",serif;
  --mono:ui-monospace,"Cascadia Code","JetBrains Mono",Consolas,monospace;
  --ease:cubic-bezier(.22,1,.36,1);
  --spring:cubic-bezier(.16,1,.3,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-snap-type:y mandatory}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
::selection{background:var(--red);color:var(--paper)}
:focus-visible{outline:3px solid var(--red);outline-offset:4px}

.mono{font-family:var(--mono);font-weight:500;letter-spacing:.06em}
.v{writing-mode:vertical-rl}

/* 纸张与网点 */
.paper-grain,.halftone-global{position:fixed;inset:0;pointer-events:none}
.paper-grain{
  z-index:90;opacity:.5;mix-blend-mode:multiply;
  background-image: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='.82' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");
}
.halftone-global{
  z-index:89;opacity:.14;mix-blend-mode:multiply;
  background-image:radial-gradient(rgba(20,16,14,.9) .8px,transparent 1px);
  background-size:4px 4px;
}

/* ============ 页眉 ============ */
.masthead{
  position:fixed;left:0;right:0;top:0;z-index:60;
  display:flex;align-items:center;gap:10px;
  padding:11px clamp(12px,2.4vw,28px);
  opacity:0;transform:translateY(-10px);pointer-events:none;
  transition:opacity .45s var(--ease),transform .45s var(--ease);
}
body.is-scrolled .masthead{opacity:1;transform:none;pointer-events:auto}
.mh-mark{
  display:flex;align-items:baseline;gap:8px;text-decoration:none;
  background:var(--paper);border:2px solid var(--ink);
  padding:5px 10px;box-shadow:3px 3px 0 var(--ink);
}
.mh-mark b{font-size:13px;font-weight:900;letter-spacing:.08em}
.mh-mark span{font-size:8px;letter-spacing:.18em}
.mh-vol{
  margin-left:auto;background:var(--paper);border:2px solid var(--ink);
  padding:5px 9px;font-size:9.5px;letter-spacing:.06em;
}
.mh-toc{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  background:var(--red);color:var(--paper);border:2px solid var(--ink);
  padding:5px 12px;font-size:11px;font-weight:800;letter-spacing:.1em;
  box-shadow:3px 3px 0 var(--ink);transition:transform .2s,box-shadow .2s;
}
.mh-toc:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}
.mh-toc i{font-style:normal;font-size:13px}

.read-progress{position:fixed;left:0;top:0;height:4px;width:100%;z-index:70;background:transparent;pointer-events:none}
.read-progress span{display:block;height:100%;width:0;background:var(--red);box-shadow:0 0 0 1px rgba(20,16,14,.15)}

.page-ind{
  position:fixed;right:clamp(12px,2.4vw,26px);bottom:clamp(12px,2.4vw,24px);z-index:55;
  display:flex;align-items:baseline;gap:5px;background:var(--paper);
  border:2px solid var(--ink);padding:4px 9px;box-shadow:3px 3px 0 var(--ink);
  font-size:12px;opacity:0;transition:opacity .4s;
}
body.is-scrolled .page-ind{opacity:1}
.page-ind i{font-style:normal;opacity:.4;font-size:9px}

/* ============ 目次 ============ */
.toc{
  position:fixed;inset:0;z-index:120;background:var(--paper);color:var(--ink);
  overflow:auto;padding:clamp(20px,4.5vw,64px);
  display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  gap:clamp(24px,5vw,70px);align-content:center;
  animation:tocIn .42s var(--ease);
}
.toc::before{
  content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;
  background-image:radial-gradient(rgba(20,16,14,.9) .8px,transparent 1px);
  background-size:5px 5px;
}
.toc[hidden]{display:none}
@keyframes tocIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.toc-head{position:relative}
.toc-kicker{margin:0 0 18px;font-size:10px;letter-spacing:.18em;color:var(--red-deep);font-weight:600}
.toc-head h2{
  margin:0;font-size:clamp(58px,10vw,150px);font-weight:900;
  line-height:.82;letter-spacing:-.04em;writing-mode:vertical-rl;
  height:min(56vh,420px);
}
.toc-close{
  position:fixed;right:clamp(18px,4vw,54px);top:clamp(18px,4vw,44px);left:auto;width:46px;height:46px;
  border:3px solid var(--ink);background:var(--red);color:var(--paper);
  font-size:26px;line-height:1;cursor:pointer;box-shadow:4px 4px 0 var(--ink);
}
.toc-list{display:flex;flex-direction:column;justify-content:center}
.toc-list a{
  display:grid;grid-template-columns:56px 1fr auto;align-items:baseline;gap:14px;
  text-decoration:none;padding:clamp(9px,1.4vw,16px) 10px;border-bottom:2px solid var(--ink);
  transition:background .25s,color .25s,padding .25s;
}
.toc-list a:first-child{border-top:2px solid var(--ink)}
.toc-list i{font-style:normal;font-size:12px;color:var(--red-deep);font-weight:700}
.toc-list b{font-size:clamp(24px,3.4vw,44px);font-weight:900;line-height:1.1;letter-spacing:-.02em}
.toc-list em{font-style:normal;font-size:10px;letter-spacing:.08em;opacity:.72}
.toc-list a:hover{background:var(--red);color:var(--paper);padding-left:20px}
.toc-list a:hover i{color:var(--paper)}
.toc-list a:hover em{opacity:.8}
.toc-foot{grid-column:1/-1;margin:0;font-size:9px;letter-spacing:.14em;opacity:.5}

/* ============ 封面 ============ */
.cover{
  height:100svh;min-height:100svh;background:var(--paper);scroll-snap-align:start;scroll-snap-stop:always;
  padding:clamp(10px,1.6vw,20px);display:flex;flex-direction:column;
  justify-content:center;align-items:center;gap:8px;
}
.cover-frame{
  position:relative;width:min(1520px,100%);
  height:calc(100svh - clamp(44px,6vw,70px));min-height:540px;
  border:3px solid var(--ink);box-shadow:10px 10px 0 var(--ink);
  overflow:hidden;background:var(--ink);isolation:isolate;
}
.cover-art{position:absolute;inset:0;z-index:0}
.cover-art img{
  width:100%;height:100%;object-fit:cover;object-position:50% 45%;
  filter:contrast(1.07) saturate(1.04);
  animation:coverBreath 16s ease-in-out infinite alternate;
}
@keyframes coverBreath{from{transform:scale(1.02)}to{transform:scale(1.075) translateY(-1.2%)}}
.cover-frame::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(10,8,7,.86) 0%,rgba(10,8,7,.55) 34%,rgba(10,8,7,.05) 66%),
    linear-gradient(0deg,rgba(10,8,7,.9) 0%,rgba(10,8,7,.25) 45%,transparent 66%);
}
.cover-ht{
  position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.14;
  background-image:radial-gradient(rgba(242,232,213,.75) .8px,transparent 1px);
  background-size:5px 5px;mix-blend-mode:overlay;
}
.cover-issue{
  position:absolute;top:0;left:0;z-index:5;
  writing-mode:vertical-rl;background:#C22E24;color:var(--paper);
  border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);
  padding:16px 7px;font-size:9.5px;line-height:1.5;letter-spacing:.22em;
}
.cover-title{position:absolute;left:clamp(18px,4vw,58px);bottom:clamp(98px,13.5vh,142px);z-index:5;color:var(--paper)}
.cover-title h1{
  margin:0;display:flex;flex-direction:column;
  font-size:clamp(62px,11.4vw,166px);font-weight:900;line-height:.8;
  letter-spacing:-.055em;
  text-shadow:4px 4px 0 var(--red);
}
.cover-title h1 span:last-child{margin-left:.55em}
.cover-sub{
  margin:18px 0 0;display:inline-block;
  background:var(--paper);color:var(--ink);border:2px solid var(--ink);
  box-shadow:4px 4px 0 var(--red);
  padding:7px 11px;font-size:clamp(9.5px,1.02vw,12.5px);letter-spacing:.07em;font-weight:800;
}
.cover-tag{
  position:absolute;top:clamp(22px,5vh,48px);right:clamp(64px,8vw,104px);z-index:5;
  max-width:min(300px,42vw);background:var(--paper);color:var(--ink);
  border:3px solid var(--ink);box-shadow:7px 7px 0 var(--red);
  padding:14px 17px;transform:rotate(1.2deg);
}
.cover-tag p{margin:0;font-family:var(--serif);font-weight:700;font-size:clamp(15px,1.45vw,21px);line-height:1.6;letter-spacing:.01em}
.cover-band{
  position:absolute;top:0;right:0;bottom:0;width:clamp(40px,4.2vw,62px);z-index:6;
  background:#C22E24;border-left:3px solid var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;
  padding:16px 0;color:var(--paper);writing-mode:vertical-rl;
  font-weight:900;font-size:clamp(12px,1.15vw,16px);letter-spacing:.34em;
}
.cover-stamp{
  position:absolute;right:calc(clamp(40px,4.2vw,62px) + 18px);bottom:clamp(64px,9vh,92px);
  z-index:5;text-align:right;color:var(--paper);
  font-size:8.5px;line-height:1.8;letter-spacing:.1em;
  text-shadow:0 1px 6px rgba(0,0,0,.7);
}
.cover-stamp p{margin:0}
.cover-barcode{
  position:absolute;right:calc(clamp(40px,4.2vw,62px) + 18px);bottom:18px;z-index:5;
  display:flex;align-items:flex-end;gap:2px;height:30px;
}
.cover-barcode i{display:block;width:2px;height:100%;background:var(--paper);opacity:.85}
.cover-barcode i:nth-child(2n){width:4px}
.cover-barcode i:nth-child(3n){height:72%}
.cover-barcode i:nth-child(5n){height:86%}
.cover-barcode i:nth-child(7n){width:1px}
.open-btn{
  position:absolute;left:clamp(18px,4vw,58px);bottom:20px;z-index:6;
  display:inline-flex;align-items:center;gap:14px;text-decoration:none;
  min-height:46px;background:var(--mustard);color:var(--ink);border:3px solid var(--ink);
  padding:11px 19px;font-size:13px;font-weight:900;letter-spacing:.1em;
  box-shadow:6px 6px 0 var(--ink);
  transition:transform .25s var(--spring),box-shadow .25s;
}
.open-btn span{font-size:15px;line-height:1}
.open-btn:hover{transform:translate(-2px,-2px);box-shadow:9px 9px 0 var(--ink)}
.cover-note{
  margin:2px 0 0;font-family:var(--kai);font-size:clamp(11px,1.05vw,14px);
  letter-spacing:.1em;color:var(--ink);
}

/* ============ 场景 / 舞台 ============ */
.scene{position:relative;height:100svh;min-height:100svh;overflow:hidden;background:var(--ink);scroll-snap-align:start;scroll-snap-stop:always}
.scene-last{height:100svh}
.stage{position:relative;height:100svh;overflow:hidden;perspective:1400px}
.stage-inner{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.art{position:absolute;inset:-5%;overflow:hidden;transform:translateZ(-30px)}
.art img{
  width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.03) translate3d(calc(var(--mx,0) * -12px),calc(var(--my,0) * -9px),0);
  transition:transform .18s linear;
}
#ch1 .art img{object-position:50% 56%}
#ch2 .art img{object-position:60% 50%}
#ch3 .art img{object-position:50% 46%}
#ch4 .art img{object-position:50% 42%}
#ch5 .art img{object-position:50% 50%}

.scrim{position:absolute;inset:0;z-index:1;pointer-events:none}
.scrim-l{background:
  linear-gradient(90deg,rgba(10,8,7,.9) 0%,rgba(10,8,7,.58) 36%,rgba(10,8,7,.04) 70%),
  linear-gradient(0deg,rgba(10,8,7,.78) 0%,transparent 46%)}
.scrim-r{background:
  linear-gradient(270deg,rgba(10,8,7,.9) 0%,rgba(10,8,7,.5) 34%,transparent 64%),
  linear-gradient(0deg,rgba(10,8,7,.78) 0%,transparent 50%)}
.scrim-b{background:
  linear-gradient(0deg,rgba(10,8,7,.94) 0%,rgba(10,8,7,.42) 42%,transparent 72%),
  linear-gradient(180deg,rgba(10,8,7,.55) 0%,transparent 34%)}
#ch5 .scrim{background:
  linear-gradient(90deg,rgba(10,8,7,.8) 0%,rgba(10,8,7,.35) 45%,transparent 70%),
  linear-gradient(0deg,rgba(10,8,7,.9) 0%,transparent 55%)}
.ht{
  position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.13;mix-blend-mode:overlay;
  background-image:radial-gradient(rgba(242,232,213,.8) .8px,transparent 1px);
  background-size:5px 5px;
}

.scene-ui{position:absolute;inset:0;z-index:3;padding:clamp(14px,3vw,44px)}

/* 章节头 */
.ch-meta{
  position:absolute;top:clamp(58px,8.5vh,96px);left:clamp(16px,4vw,56px);
  display:flex;align-items:center;gap:9px;
  background:var(--paper);border:2px solid var(--ink);
  padding:5px 9px;box-shadow:4px 4px 0 var(--red);
  transform:rotate(-.8deg);z-index:6;
}
.ch-meta span{font-size:10px;letter-spacing:.1em}
.ch-meta b{background:var(--red-deep);color:var(--paper);padding:2px 7px;font-size:10px;letter-spacing:.12em}

.ch-title{
  position:absolute;right:clamp(14px,3.6vw,52px);top:15vh;margin:0;z-index:5;
  font-size:clamp(40px,6.4vw,94px);font-weight:900;line-height:.96;letter-spacing:.01em;
  color:var(--paper);
  text-shadow:0 2px 18px rgba(10,8,7,.6);
  -webkit-text-stroke:1px rgba(20,16,14,.55);
}
.chapter-ghost{
  position:absolute;left:-.02em;bottom:-.12em;z-index:1;
  font-size:clamp(160px,30vw,420px);font-weight:900;line-height:.7;
  color:transparent;-webkit-text-stroke:2px rgba(242,232,213,.16);
  pointer-events:none;
}

/* 旁白框 */
.cap{
  position:absolute;z-index:6;background:var(--ink);color:var(--paper);
  border:2px solid var(--paper);padding:11px 15px 13px;
  max-width:min(380px,74vw);box-shadow:8px 8px 0 var(--red);
  transform:rotate(-.7deg);
}
.cap>span{display:block;color:#FF9C8C;font-size:9.5px;letter-spacing:.16em;margin-bottom:5px}
.cap p{margin:0;font-family:var(--serif);font-size:clamp(13.5px,1.2vw,16.5px);line-height:1.8;letter-spacing:.01em}
.cap-a{top:21vh;left:clamp(16px,5.4vw,76px)}
.cap-b{top:17vh;left:clamp(16px,5.4vw,76px)}
.cap-c{top:14vh;left:clamp(16px,5.4vw,76px)}
.cap-d{top:15vh;left:clamp(16px,5.4vw,76px)}
.cap-e{top:17vh;left:clamp(16px,5.4vw,76px)}

/* 对话气泡 */
.bubble{
  position:absolute;z-index:6;background:var(--paper);color:var(--ink);
  border:3px solid var(--ink);border-radius:20px;padding:10px 15px;
  font-size:clamp(12px,1.1vw,15px);font-weight:700;line-height:1.55;
  box-shadow:5px 5px 0 rgba(20,16,14,.35);
}
.bubble::after{
  content:"";position:absolute;left:24px;bottom:-13px;width:16px;height:16px;
  background:var(--paper);border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);
  transform:rotate(45deg);
}
.bubble-a{top:29vh;left:36vw;transform:rotate(1.4deg)}
.bubble-b{top:23vh;right:22vw;transform:rotate(-1.2deg)}
.bubble-c{top:27vh;right:13vw;transform:rotate(1deg)}

/* 拟声 */
.sfx{
  position:absolute;z-index:5;font-weight:900;line-height:1;
  color:var(--red);font-size:clamp(42px,7.4vw,104px);
  text-shadow:3px 3px 0 var(--ink);
  letter-spacing:.04em;pointer-events:none;
}
.sfx-b{top:35vh;right:29vw;transform:rotate(-7deg)}
.sfx-c{top:40vh;right:31vw;transform:rotate(5deg);color:var(--mustard)}

/* 大标语 */
.big-line{
  position:absolute;z-index:5;margin:0;left:clamp(16px,5.4vw,76px);
  -webkit-text-stroke:.8px rgba(20,16,14,.55);
  font-weight:900;font-size:clamp(28px,4.2vw,62px);line-height:1.16;
  letter-spacing:-.025em;color:var(--paper);max-width:13em;
  text-shadow:0 3px 22px rgba(0,0,0,.45);
}
.big-line em{
  font-style:normal;background:var(--red);color:var(--paper);white-space:nowrap;
  padding:0 .1em;box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
.big-a{bottom:17vh}
.big-b{bottom:45vh;font-size:clamp(26px,3.5vw,50px)}
.big-c{bottom:10vh;right:clamp(16px,5.4vw,76px);left:auto;text-align:right;max-width:11em}
.big-e{top:30vh;font-size:clamp(42px,6.6vw,100px);line-height:1.04}

/* 内文 */
.para{
  position:absolute;z-index:5;left:clamp(16px,5.4vw,76px);top:45vh;
  max-width:25em;color:var(--paper);font-family:var(--serif);
  font-size:clamp(14px,1.32vw,19px);line-height:1.9;
  border-left:4px solid var(--red);padding:10px 13px 10px 14px;
  background:rgba(14,10,8,.66);box-shadow:5px 5px 0 rgba(226,58,46,.3);
  text-shadow:0 1px 8px rgba(0,0,0,.6);
}
.para-a{top:44vh}

/* 页边注 */
.notes{position:absolute;z-index:6;left:clamp(16px,5.4vw,76px);bottom:6vh;display:flex;gap:10px}
.notes>div{
  background:var(--paper);border:2px solid var(--ink);padding:7px 11px;
  min-width:112px;box-shadow:4px 4px 0 var(--ink);transform:rotate(-1deg);
}
.notes>div:nth-child(2){transform:rotate(.8deg)}
.notes b{display:block;font-size:22px;line-height:1;margin-bottom:4px}
.notes span{font-size:11px;letter-spacing:.02em;color:var(--ink-2)}

.cue{
  position:absolute;left:50%;bottom:3vh;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:7px;z-index:6;
  color:var(--paper);opacity:clamp(0,calc(.95 - var(--p,0)),1);
}
.cue span{font-size:8px;letter-spacing:.22em}
.cue i{display:block;width:1px;height:26px;background:var(--paper);animation:cueDrop 2s ease-in-out infinite}
@keyframes cueDrop{0%,100%{transform:scaleY(.4);transform-origin:top;opacity:.3}50%{transform:scaleY(1);opacity:1}}

/* ============ 五格方向 ============ */
.dirs{
  position:absolute;left:3vw;right:3vw;bottom:7.5vh;z-index:8;
  display:flex;gap:clamp(7px,1vw,15px);justify-content:center;align-items:flex-end;
}
.dir-panel{
  position:relative;flex:0 0 clamp(146px,16.2vw,212px);
  height:clamp(212px,28vh,282px);
  background:var(--c);color:var(--paper);
  border:3px solid var(--ink);box-shadow:8px 8px 0 var(--ink);
  padding:12px 13px 11px;text-align:left;cursor:pointer;
  transform:rotate(var(--rot));transform-origin:50% 100%;
  transition:transform .45s var(--spring),box-shadow .45s var(--spring);
  display:flex;flex-direction:column;gap:6px;overflow:hidden;
}
.dir-panel:nth-child(3){color:var(--ink)}
.dir-panel::before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.18;
  background-image:radial-gradient(currentColor .8px,transparent 1px);
  background-size:4px 4px;
}
.dir-panel:hover,.dir-panel:focus-visible,.dir-panel.is-open{
  transform:rotate(0deg) translateY(-10px) scale(1.025);
  box-shadow:12px 16px 0 var(--ink);z-index:9;
}
.dp-no{position:relative;font-size:9px;letter-spacing:.12em;opacity:.8}
.dir-panel h3{position:relative;margin:0;font-size:clamp(17px,1.55vw,21px);font-weight:900;letter-spacing:-.01em;line-height:1.15}
.dp-line{position:relative;margin:0;font-family:var(--serif);font-size:clamp(12px,1.02vw,14.5px);line-height:1.65;font-weight:700}
.dp-more{
  position:relative;display:none;margin:0;font-size:11.5px;line-height:1.68;
  opacity:.96;font-weight:500;
}
.dp-tags{
  position:relative;margin-top:auto;padding-top:7px;
  border-top:1.5px solid currentColor;font-size:10px;letter-spacing:.04em;opacity:.9;
}
.dir-panel:hover .dp-more,.dir-panel.is-open .dp-more{display:block}
.dir-panel:hover .dp-line,.dir-panel.is-open .dp-line{display:none}
.tap-hint{
  position:absolute;left:50%;bottom:2.2vh;transform:translateX(-50%);
  z-index:8;font-size:8px;letter-spacing:.16em;color:var(--paper);opacity:.55;display:none;
}

/* ============ 赛场 ============ */
.score{
  position:absolute;left:clamp(16px,5.4vw,76px);top:29vh;z-index:7;
  width:min(430px,82vw);background:var(--paper);color:var(--ink);
  border:3px solid var(--ink);box-shadow:10px 10px 0 var(--red);
  padding:0 0 7px;transform:rotate(-.5deg);
}
.score-k{margin:0;background:var(--red-deep);color:var(--paper);padding:5px 11px;font-size:9px;letter-spacing:.15em}
.score h3{margin:10px 13px 5px;font-size:clamp(21px,2.3vw,32px);font-weight:900;line-height:1.12;letter-spacing:-.02em}
.score-sub{margin:0 13px 9px;font-family:var(--serif);font-size:12.5px;line-height:1.65;color:var(--ink-2)}
.track-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.track-list li{display:grid;grid-template-columns:28px 1fr;gap:2px 6px;padding:6px 11px;border-bottom:1px solid rgba(20,16,14,.22)}
.track-list li:last-child{border-bottom:0}
.track-list i{grid-row:span 2;font-style:normal;font-size:8px;color:var(--red);padding-top:2px}
.track-list b{font-size:12.5px;line-height:1.35;font-weight:800}
.track-list span{font-size:10.5px;color:#4a4037}
.flight{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;opacity:.6}
#flight-plane{transform-origin:center}

/* ============ 信条 ============ */
.creed{position:absolute;left:clamp(16px,5.4vw,76px);top:31vh;z-index:6;margin:0;max-width:min(780px,84vw)}
.creed p{
  margin:0;font-weight:900;font-size:clamp(38px,6.1vw,92px);line-height:1.02;
  letter-spacing:-.04em;color:var(--paper);
  text-shadow:0 2px 22px rgba(10,8,7,.7);
}
.creed p::before{content:"“";display:block;height:.42em;font-size:.55em;line-height:.6;color:var(--red);text-shadow:none}
.creed cite{
  display:inline-block;margin-top:16px;font-style:normal;font-family:var(--serif);
  font-size:clamp(13px,1.15vw,17px);letter-spacing:.04em;
  background:var(--red);color:var(--paper);padding:5px 10px;
  border:2px solid var(--ink);
}
.gains{position:absolute;left:clamp(16px,5.4vw,76px);right:clamp(16px,5.4vw,76px);bottom:6.5vh;z-index:7;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.gain{
  background:var(--paper);color:var(--ink);border:2.5px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);padding:9px 11px;transform:rotate(-.5deg);
}
.gain:nth-child(2n){transform:rotate(.6deg)}
.gain i{font-style:normal;font-size:8px;color:var(--c)}
.gain b{display:block;font-size:14px;margin:2px 0 4px;font-weight:900}
.gain b::before{content:"";display:inline-block;width:7px;height:7px;background:var(--c);border:1.5px solid var(--ink);margin-right:6px;vertical-align:1px}
.gain p{margin:0;font-size:11px;line-height:1.55;color:var(--ink-2)}

/* ============ 加入 ============ */
.join-card{
  position:absolute;right:clamp(16px,5.4vw,76px);bottom:12vh;z-index:7;
  width:min(378px,86vw);background:var(--paper);color:var(--ink);
  border:3px solid var(--ink);box-shadow:10px 10px 0 var(--red);
  padding:13px 16px 12px;transform:rotate(1deg);
}
.jc-k{margin:0;background:var(--red-deep);color:var(--paper);padding:4px 8px;font-size:9px;letter-spacing:.13em}
.join-card h3{margin:10px 0 8px;font-size:clamp(24px,2.7vw,36px);font-weight:900;line-height:1.08;letter-spacing:-.02em}
.jc-addr{margin:0;font-family:var(--serif);font-size:13px;line-height:1.7;border-left:3px solid var(--ink);padding-left:9px}
.jc-rows{display:grid;grid-template-columns:1fr auto;gap:6px 10px;border-top:1.5px solid var(--ink);margin-top:10px;padding-top:9px;font-size:12px}
.jc-rows em{font-style:normal;color:var(--red-deep);font-size:9px;letter-spacing:.08em;font-weight:700}
.jc-coord{margin:9px 0 0;font-size:9.5px;color:#4a4037;letter-spacing:.1em}
.last-line{position:absolute;left:clamp(16px,5.4vw,76px);bottom:9vh;z-index:6;margin:0;font-family:var(--kai);font-size:clamp(16px,1.7vw,22px);color:var(--paper);letter-spacing:.1em}
.the-end{position:absolute;right:clamp(16px,5.4vw,76px);bottom:3.4vh;z-index:6;font-size:9px;letter-spacing:.32em;color:var(--paper);opacity:.72}

/* ============ 版权页 ============ */
.colophon{
  min-height:100svh;align-content:center;scroll-snap-align:start;scroll-snap-stop:always;
  background:var(--ink);color:var(--paper);border-top:10px solid var(--red);
  padding:clamp(34px,6vw,74px) clamp(18px,5vw,64px);
  display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:26px;align-items:start;
}
.colo-mark b{display:block;font-size:clamp(30px,4vw,54px);font-weight:900;line-height:1;letter-spacing:-.02em}
.colo-mark span{display:inline-block;margin-top:7px;font-size:9px;letter-spacing:.22em;color:var(--red)}
.colo-mid p,.colo-right p{margin:0 0 7px;font-size:11px;line-height:1.7;opacity:.8}
.colo-right{text-align:right}
.noscript{position:fixed;left:12px;bottom:12px;z-index:200;background:var(--paper);border:2px solid var(--ink);padding:10px;font-size:12px;max-width:320px}

/* ============ 进场 ============ */
.rv{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:calc(var(--i,0) * 70ms)}
.rv.on{opacity:1;transform:none}
.ch-meta.rv{transform:translateY(24px) rotate(-.8deg)}
.ch-meta.rv.on{transform:rotate(-.8deg)}
.cap.rv{transform:translateY(24px) rotate(-.7deg)}
.cap.rv.on{transform:rotate(-.7deg)}
.bubble.rv{transform:translateY(24px) rotate(1deg)}
.bubble.rv.on{transform:rotate(1deg)}
.score.rv{transform:translateY(24px) rotate(-.5deg)}
.score.rv.on{transform:rotate(-.5deg)}
.join-card.rv{transform:translateY(24px) rotate(1deg)}
.join-card.rv.on{transform:rotate(1deg)}
.notes.rv,.dirs.rv{transform:translateY(26px)}
.notes.rv.on,.dirs.rv.on{transform:none}

/* ============ 响应式 ============ */
@media (max-width:1100px){
  .cover-title h1{font-size:clamp(58px,11vw,132px)}
  .ch-title{font-size:clamp(38px,6.2vw,72px)}
  .big-line{font-size:clamp(26px,4.4vw,48px)}
  .dir-panel{flex-basis:clamp(140px,17.4vw,190px);height:clamp(204px,27vh,262px)}
  .bubble-b{right:12vw}
  .sfx-b{right:22vw}
  .gains{grid-template-columns:repeat(2,1fr)}
  .gain p{font-size:10.5px}
}

@media (max-width:900px){
  .mh-vol{display:none}
  .page-ind{display:none}
  .cover-frame{height:calc(100svh - 44px);min-height:0;box-shadow:6px 6px 0 var(--ink)}
  .cover-title{bottom:104px;left:16px}
  .cover-title h1{font-size:clamp(50px,16.5vw,96px);text-shadow:3px 3px 0 var(--red)}
  .cover-sub{margin-top:14px;font-size:8.5px;letter-spacing:.05em;padding:5px 7px}
  .cover-tag{top:11vh;right:48px;max-width:53vw;padding:10px 12px;box-shadow:5px 5px 0 var(--red)}
  .cover-tag p{font-size:13px;line-height:1.55}
  .cover-stamp,.cover-barcode{display:none}
  .cover-band{width:36px;font-size:10px;letter-spacing:.24em;padding:12px 0}
  .cover-issue{padding:10px 5px;font-size:8px}
  .open-btn{left:16px;bottom:14px;padding:8px 12px;font-size:10.5px;box-shadow:4px 4px 0 var(--red)}
  .cover-note{font-size:9.5px;letter-spacing:.06em}

  .scene{height:100svh}
  .scene-last{height:100svh}
  .art{inset:-3%}
  .ch-meta{top:10vh;left:14px;padding:4px 7px;box-shadow:3px 3px 0 var(--red)}
  .ch-meta span,.ch-meta b{font-size:8px}
  .ch-title{right:18px;top:13vh;font-size:clamp(30px,8.6vw,44px);text-shadow:0 2px 14px rgba(10,8,7,.65);-webkit-text-stroke:.8px rgba(20,16,14,.55)}
  .chapter-ghost{display:none}
  .cap{max-width:84vw;padding:9px 11px 10px;box-shadow:5px 5px 0 var(--red)}
  .cap>span{font-size:8px;margin-bottom:3px}
  .cap p{font-size:11.5px;line-height:1.65}
  .cap-a{top:16vh;left:14px}
  .cap-b{top:15vh;left:14px}
  .cap-c{top:12vh;left:14px}
  .cap-d{top:11vh;left:14px}
  .cap-e{top:12vh;left:14px}
  .bubble{display:none}
  .sfx{font-size:clamp(36px,11vw,60px)}
  .sfx-b{top:31vh;right:9vw}
  .sfx-c{top:44vh;right:10vw}
  .big-line{left:14px;font-size:clamp(27px,8.2vw,42px);max-width:10em}
  .big-a{bottom:15vh}
  .big-b{top:32vh;bottom:auto;font-size:clamp(24px,7.4vw,34px);max-width:8em}
  .big-c{left:auto;right:14px;bottom:5vh;font-size:clamp(23px,7vw,34px);max-width:9em}
  .big-e{top:30vh;font-size:clamp(36px,11.4vw,58px);max-width:8em}
  .para{left:14px;top:38vh;font-size:12px;line-height:1.8;max-width:58vw;padding-left:10px;border-left-width:3px}
  .notes{left:14px;right:14px;bottom:4vh;gap:6px}
  .notes>div{flex:1;min-width:0;padding:6px 7px;box-shadow:3px 3px 0 var(--ink)}
  .notes b{font-size:15px}
  .notes span{font-size:8px;line-height:1.35;display:block}
  .cue{display:none}

  .dirs{
    left:0;right:0;bottom:4.5vh;justify-content:flex-start;gap:10px;
    padding:0 14px 6px;overflow-x:auto;overflow-y:hidden;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
  }
  .dirs::-webkit-scrollbar{height:0}
  .dir-panel{
    flex:0 0 63vw;height:215px;scroll-snap-align:center;
    transform:rotate(calc(var(--rot) * .5));padding:10px 11px;
  }
  .dir-panel:hover,.dir-panel:focus-visible,.dir-panel.is-open{transform:rotate(0) translateY(-6px) scale(1.01)}
  .dp-line{font-size:12px}
  .dp-more{font-size:10.5px}
  .tap-hint{display:block;bottom:1.2vh}

  .score{left:14px;top:26vh;width:88vw;box-shadow:6px 6px 0 var(--red);padding-bottom:4px}
  .score h3{font-size:19px;margin:8px 10px 4px}
  .score-sub{font-size:10px;margin:0 10px 7px}
  .track-list li{padding:5px 9px;grid-template-columns:24px 1fr}
  .track-list b{font-size:10.5px}
  .track-list span{font-size:8.5px}
  .flight{display:none}

  .creed{left:14px;top:24vh;max-width:88vw}
  .creed p{font-size:clamp(34px,10.6vw,56px)}
  .creed cite{font-size:10px;margin-top:10px}
  .gains{left:12px;right:12px;bottom:5vh;grid-template-columns:repeat(2,1fr);gap:7px}
  .gain{padding:7px 8px;box-shadow:3px 3px 0 var(--ink)}
  .gain b{font-size:11px;margin:1px 0 3px}
  .gain p{font-size:9px;line-height:1.45}
  .gain i{font-size:7px}

  .join-card{left:14px;right:14px;bottom:6vh;width:auto;transform:none;padding:11px 13px;box-shadow:6px 6px 0 var(--red)}
  .join-card h3{font-size:22px;margin:8px 0 6px}
  .jc-addr{font-size:11px}
  .jc-rows{font-size:10px;margin-top:8px;padding-top:7px}
  .last-line{display:none}
  .the-end{right:14px;bottom:1.6vh;font-size:8px}

  .colophon{grid-template-columns:1fr;gap:16px;padding:34px 18px}
  .colo-right{text-align:left}
  .toc{grid-template-columns:1fr;align-content:start;gap:18px;padding:24px 18px}
  .toc-head h2{writing-mode:horizontal-tb;height:auto;font-size:64px}
  .toc-close{left:auto;right:14px;top:14px;width:40px;height:40px;font-size:22px}
  .toc-list b{font-size:24px}
  .toc-list a{grid-template-columns:34px 1fr auto;gap:8px;padding:10px 6px}
  .toc-list em{font-size:8px}
  .toc-foot{font-size:8px}
}

@media (max-width:560px){
  .cover-title h1{font-size:clamp(48px,17vw,86px)}
  .cover-tag{right:44px;max-width:54vw;top:10vh}
  .cover-tag p{font-size:12px}
  .cover-sub{font-size:7.5px;max-width:62vw;line-height:1.5}
  .big-a{font-size:clamp(25px,7.8vw,34px)}
  .notes span{font-size:7.5px}
  .dir-panel{flex-basis:70vw}
  .score{top:20vh}
  .creed p{font-size:clamp(32px,10vw,46px)}
  .gain p{display:none}
  .join-card{bottom:4vh}
  .jc-rows{gap:4px 8px}
}

@media (max-height:820px) and (min-width:901px){
  .cover-title h1{font-size:clamp(54px,9.4vw,128px)}
  .cover-title{bottom:92px}
  .cover-tag{top:3.4vh;padding:10px 13px}
  .cover-tag p{font-size:clamp(13px,1.15vw,17px)}
  .cap-a,.cap-b,.cap-c,.cap-d,.cap-e{top:12vh}
  .ch-title{top:11vh;font-size:clamp(34px,5.2vw,70px)}
  .para-a{top:36vh;font-size:clamp(12.5px,1.05vw,16px);line-height:1.8;padding:8px 11px}
  .big-a{bottom:19vh;font-size:clamp(24px,3.2vw,44px)}
  .notes-a{bottom:4vh}
  .notes b{font-size:18px}
  .notes span{font-size:9.5px}
  .big-b{bottom:42vh;font-size:clamp(22px,2.8vw,38px)}
  .dirs{bottom:5vh}
  .dir-panel{height:clamp(186px,24vh,226px)}
  .score{top:24vh;width:min(392px,76vw)}
  .score h3{font-size:22px;margin:8px 11px 4px}
  .score-sub{font-size:10.5px;margin:0 11px 7px}
  .track-list li{padding:4px 9px}
  .track-list b{font-size:11px}
  .big-c{bottom:6vh;font-size:clamp(22px,2.8vw,40px)}
  .creed{top:30vh}
  .creed p{font-size:clamp(34px,5vw,70px)}
  .gains{bottom:4vh}
  .gain p{font-size:9.5px}
  .big-e{top:27vh;font-size:clamp(38px,5.4vw,76px)}
  .join-card{bottom:7vh;width:338px;padding:10px 13px}
  .join-card h3{font-size:25px;margin:7px 0 6px}
  .jc-addr{font-size:11.5px}
  .jc-rows{font-size:10.5px;margin-top:7px;padding-top:6px}
}
@media (max-height:700px) and (min-width:901px){
  .ch-meta{top:52px}
  .cap-a,.cap-b,.cap-c,.cap-d,.cap-e{top:10vh}
  .ch-title{top:10vh;font-size:clamp(32px,4.8vw,62px)}
  .big-a{bottom:16vh}
  .big-b{bottom:40vh}
  .notes{bottom:4vh}
  .dirs{bottom:4vh}
  .dir-panel{height:clamp(180px,26vh,216px)}
  .score{top:23vh}
  .creed{top:28vh}
  .join-card{bottom:7vh}
  .big-e{top:28vh}
}

/* 减少动态 */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .cover-art img{animation:none;transform:scale(1.03)}
  .cue i{animation:none}
  .art img{transition:none;transform:none!important}
  .stage-inner{transform:none!important}
  .rv{opacity:1!important;transform:none!important;transition:none!important}
  .ch-meta.rv{transform:rotate(-.8deg)!important}
  .cap.rv{transform:rotate(-.7deg)!important}
  .score.rv{transform:rotate(-.5deg)!important}
  .join-card.rv{transform:rotate(1deg)!important}
  .toc{animation:none}
}
.fm-rm .cover-art img,.fm-rm .cue i{animation:none}
.fm-rm .art img,.fm-rm .stage-inner{transform:none!important}
.fm-rm .rv{opacity:1!important;transform:none!important}

/* 跳到正文 */
.skip{
  position:fixed;left:12px;top:-80px;z-index:200;background:var(--paper);
  color:var(--ink);border:3px solid var(--ink);padding:8px 12px;
  font-size:12px;font-weight:800;text-decoration:none;box-shadow:4px 4px 0 var(--red);
  transition:top .2s;
}
.skip:focus{top:12px}

/* 翻页：每格结尾的一张纸 */
.turn{
  position:absolute;inset:0;z-index:25;background:var(--paper);color:var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  border-top:8px solid var(--ink);transform:translateY(102%);
  transition:transform .62s var(--spring);pointer-events:none;
}
.turn::before{
  content:"";position:absolute;inset:0;opacity:.14;pointer-events:none;
  background-image:radial-gradient(rgba(20,16,14,.9) .8px,transparent 1px);
  background-size:5px 5px;
}
.stage.is-turning .turn{transform:none}
.turn-k{position:relative;font-size:9px;letter-spacing:.32em;color:var(--red-deep);font-weight:700}
.turn-no{position:relative;font-size:clamp(96px,17vw,230px);line-height:.78;font-weight:900;color:var(--red);letter-spacing:-.05em}
.turn-title{position:relative;font-size:clamp(22px,2.6vw,36px);font-weight:900;letter-spacing:.04em}
.turn::after{content:"↓  继续向下";position:relative;margin-top:18px;font-family:var(--mono);font-size:9px;letter-spacing:.24em;color:var(--ink-2)}
body.turning .masthead,body.turning .page-ind{opacity:0!important;pointer-events:none}
body.turning .read-progress{opacity:0;transition:opacity .3s}
.fm-rm .turn{display:none}
@media (prefers-reduced-motion:reduce){.turn{display:none}}
@media (max-width:900px){
  .turn-no{font-size:30vw}
  .turn-title{font-size:20px}
}

.nowrap{white-space:nowrap}
