:root{
  --holo-blue:#9b2226;--holo-red:#9b2226;--holo-gold:#b07a1a;
  --bg:#efe7da;--fg:#2b2521;--mut:#8a7e72;--line:rgba(90,70,50,.2);--card:rgba(255,252,247,.94);
  --acc:#9b2226;--acc2:#b07a1a;--hot:#b07a1a;
  --jian:#2f6690;--xiu:#a8741a;--xing:#6a52a3;--guo:#b3261e;
  --panelW:340px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.75 "Noto Serif TC Site","Noto Serif TC","Songti TC","PMingLiU",serif;font-kerning:normal;-webkit-font-smoothing:antialiased}
button,select{font:inherit;color:inherit}
button{-webkit-tap-highlight-color:transparent}

/* ===== 載入 ===== */
#loading{position:fixed;inset:0;background:#efe7da;z-index:100;display:flex;flex-direction:column;justify-content:center;align-items:center;color:var(--mut);letter-spacing:.3em;font-size:14px;transition:opacity 1s}
.spinner{width:50px;height:50px;border:2px solid transparent;border-top-color:var(--holo-blue);border-bottom-color:var(--holo-blue);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ===== Hero ===== */
.hero{position:relative;height:100svh;min-height:640px;overflow:hidden;background:radial-gradient(ellipse at 42% 45%,#f8f4ec 0%,#f1eadf 55%,#e8dfd0 100%)}
.stage{position:absolute;inset:0;overflow:hidden}
#canvas-container{position:absolute;inset:0}
#canvas-container canvas{display:block;width:100%;height:100%;touch-action:none}
#crosshair{display:none;position:absolute;z-index:2;top:calc(50% - 55px);left:calc(50% - var(--panelW)/2 - 8px);width:20px;height:20px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(255,255,255,.28);pointer-events:none;transition:all .2s}
#crosshair::before,#crosshair::after{content:"";position:absolute;background:rgba(255,255,255,.5)}
#crosshair::before{top:50%;left:-5px;right:-5px;height:1px}
#crosshair::after{left:50%;top:-5px;bottom:-5px;width:1px}
#crosshair.active{border-color:var(--holo-blue);transform:translate(-50%,-50%) scale(1.5)}
#crosshair.active::before,#crosshair.active::after{background:var(--holo-blue)}
#leaders{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:visible}
#leaders path{fill:none;stroke:#7d7064;stroke-width:.8;opacity:.6}
#leaders path.main{stroke:var(--acc);stroke-width:1.1;stroke-dasharray:6 5;opacity:.7;animation:dash 20s linear infinite}
@keyframes dash{to{stroke-dashoffset:-1000}}
.nolines #leaders{display:none}
#labels,#focus-ui{position:absolute;inset:0;z-index:4;pointer-events:none}
#labels.hide{opacity:0}
#labels{transition:opacity .4s}
#labels.hide button{pointer-events:none}
.lab{letter-spacing:.08em;position:absolute;left:0;top:0;pointer-events:auto;background:none;border:0;padding:6px 8px;cursor:pointer;color:var(--fg);font-size:15px;line-height:1.2;white-space:nowrap;will-change:transform}
.lab:hover,.lab:focus-visible{color:var(--holo-blue);outline:none;text-decoration:underline}
#callout{position:absolute;left:0;top:0;pointer-events:none;text-align:left;opacity:0;transition:opacity .4s;will-change:transform;}
#callout.on{opacity:1}
#callout b{display:block;font-size:26px;font-weight:700;color:var(--acc);line-height:1.2}
#callout small{display:block;font-size:14px;color:var(--fg)}
#fan .fl{position:absolute;left:0;top:0;pointer-events:auto;background:none;border:0;padding:4px 6px;cursor:pointer;color:var(--fg);font-size:15px;white-space:nowrap;text-align:left}
#fan .fl:hover,#fan .fl:focus-visible{color:var(--holo-blue);text-decoration:underline;outline:none}
#gl-fail{position:absolute;z-index:5;left:20px;right:20px;top:90px;padding:14px;border:1px dashed var(--line);border-radius:10px;background:var(--card);margin:0}

.top{position:absolute;z-index:6;top:26px;left:34px;pointer-events:none;}
.top h1{margin:0;font-size:clamp(1.4rem,2.6vw,2rem);letter-spacing:.32em;font-weight:700;color:#2b2521}
.top h1::after{content:"";display:block;width:36px;height:2px;background:var(--acc);margin-top:14px}
.top h1 span{display:block;font-size:.5em;letter-spacing:.3em;color:var(--mut);font-weight:400;margin-top:10px}

.dock{position:absolute;z-index:6;top:54px;right:calc(var(--panelW) + 36px);display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.controls button,.controls select,.partbar button{min-height:44px;padding:6px 14px;border:1px solid var(--line);background:rgba(255,255,255,.75);border-radius:6px;cursor:pointer;color:var(--fg);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.controls select option{background:#fffcf7;color:var(--fg)}
.controls button:hover,.partbar button:hover,.controls button:focus-visible,.partbar button:focus-visible{border-color:var(--holo-blue);box-shadow:0 2px 8px rgba(90,60,30,.12)}
.chsel{display:flex;gap:8px;align-items:center;font-size:.85rem;color:var(--mut)}
.chsel select{max-width:min(60vw,260px)}
.partbar{display:none;flex-wrap:wrap;gap:6px}
.partbar button{font-size:.88rem;min-height:40px;padding:4px 12px}

#main-quote{position:absolute;z-index:6;left:34px;bottom:26px;width:calc(100% - var(--panelW) - 90px);max-width:900px;background:var(--card);border:1px solid var(--line);border-left:3px solid var(--acc);padding:16px 26px;border-radius:8px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 2px 8px rgba(90,60,30,.12);transition:opacity .5s}
#main-quote p{margin:0;font-size:15.5px;line-height:1.85;text-align:justify;letter-spacing:1px;user-select:text}
#main-quote.hide{opacity:0;pointer-events:none}

.panel{position:absolute;z-index:7;top:50px;right:32px;bottom:20px;width:var(--panelW);display:flex;flex-direction:column;overflow:hidden;border-radius:8px;
  background:var(--card);border:1px solid var(--line);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);
  box-shadow:0 2px 8px rgba(90,60,30,.12),inset 0 0 20px rgba(255,255,255,.75)}
.navbar{display:flex;gap:6px;padding:10px 10px 8px}
.navbar button{flex:1;min-height:44px;border:1px solid var(--line);background:rgba(255,255,255,.75);border-radius:6px;cursor:pointer}
.navbar button:hover,.navbar button:focus-visible{border-color:var(--holo-blue);box-shadow:0 2px 8px rgba(90,60,30,.12)}
.tabs{display:flex;border-bottom:1px solid var(--line)}
.tabs button{letter-spacing:.3em;flex:1;min-height:44px;border:0;background:none;cursor:pointer;border-bottom:3px solid transparent;color:var(--mut)}
.tabs button[aria-selected=true]{border-bottom-color:var(--holo-blue);color:var(--fg);font-weight:700}
.pane{padding:12px 16px 20px;overflow:auto;flex:1}
.pane[hidden]{display:none}
.pane h2{margin:.2em 0 .3em;font-size:1.3rem;line-height:1.4;}
.pane h3{margin:1.2em 0 .3em;font-size:.95rem;color:var(--holo-blue);font-weight:700;letter-spacing:.06em}
.crumb{font-size:.85rem;color:var(--mut);margin:0}
.pos{font-size:.9rem;margin:.4em 0;padding:6px 10px;background:rgba(255,255,255,.75);border-radius:6px;border:1px solid var(--line)}
.tag{display:inline-block;font-size:.72rem;padding:0 8px;border-radius:4px;border:1px solid currentColor;line-height:1.7;vertical-align:1px;white-space:nowrap}
.tag.book{color:#2f6690}.tag.quote{color:#9b2226}.tag.nav{color:#6a52a3}
.pend{color:var(--mut);font-style:italic}
.box{border-left:3px solid var(--holo-blue);padding:2px 12px;margin:.4em 0;background:rgba(255,255,255,.75)}
.notice{font-size:.88rem;color:var(--mut);border:1px dashed var(--line);border-radius:6px;padding:6px 10px;margin:.8em 0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:.3em 0}
.chip{min-height:40px;padding:4px 12px;border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.75);cursor:pointer;text-align:left;font-size:.92rem}
.chip:hover,.chip:focus-visible{border-color:var(--holo-blue);box-shadow:0 2px 8px rgba(90,60,30,.12)}
.chip small{color:var(--mut)}
.zone-jian{color:var(--jian)}.zone-xiu{color:var(--xiu)}.zone-xing{color:var(--xing)}.zone-guo{color:var(--guo)}
.toc,.toc ul{list-style:none;margin:0;padding:0}
.toc>li{border-bottom:1px solid var(--line)}
.toc button.row{display:flex;width:100%;gap:8px;align-items:baseline;text-align:left;min-height:44px;padding:8px 4px;border:0;background:none;cursor:pointer}
.toc button.row:hover,.toc button.row.on{background:rgba(255,255,255,.75)}
.toc button.row.on{font-weight:700;box-shadow:inset 3px 0 var(--holo-blue)}
.toc .n{flex:none;min-width:2.4em;color:var(--mut)}
.toc .dots{margin-left:auto;display:flex;gap:3px;flex:none}
.toc .dots b{width:18px;height:18px;border-radius:50%;font-size:.7rem;line-height:18px;text-align:center;color:#fff;font-weight:700}
.toc .sub{padding-left:2.6em;font-size:.92rem;color:var(--mut)}
.toc h4{margin:1em 0 .2em;font-size:.85rem;color:var(--mut)}

main{max-width:900px;margin:0 auto;padding:30px 18px 40px}
.about h2{font-size:1.2rem;letter-spacing:.14em;border-bottom:1px solid var(--line);padding-bottom:6px;color:var(--holo-blue)}
.srcnote{font-size:.9rem;color:var(--mut)}
.about ul{padding-left:1.2em}
footer{text-align:center;color:var(--mut);font-size:.85rem;padding:20px 16px 40px}

/* ===== 窄螢幕：上方 3D 固定、下方內容 ===== */
@media (max-width:900px){
  :root{--panelW:0px}
  body{font-size:16px}
  .hero{height:auto;min-height:0;overflow:visible;display:flex;flex-direction:column}
  .top{position:static;order:1;padding:14px 16px 8px;background:#f3ede3}
  .stage{position:sticky;top:0;z-index:8;height:48svh;min-height:300px;order:2;background:#f3ede3}
  #crosshair{left:50%;top:50%}
  .dock{position:static;order:3;align-items:stretch;padding:10px 12px;background:#f3ede3}
  .controls{justify-content:flex-start}
  .partbar{display:flex}
  #main-quote{position:static;order:4;width:auto;max-width:none;margin:8px 12px;padding:14px 16px}
  #main-quote.hide{opacity:1;pointer-events:auto}
  .panel{position:static;order:5;width:auto;border-radius:0;border-left:0;border-right:0}
  .pane{overflow:visible}
  .lab{font-size:13px}
  #callout b{font-size:20px}#callout small{font-size:12px}
}
@media (prefers-reduced-motion:reduce){.spinner,#leaders path.main{animation:none}}
/* 紙感版細節 */
@media (min-width:901px){
  .panel{font-size:15px}
  .navbar button{font-size:13.5px;min-height:40px}
  .controls button,.controls select{font-size:14px;min-height:40px;background:rgba(255,255,255,.7)}
  .pane h2{font-size:1.2rem}
}

.stage{z-index:1}

/* ===== 模式切換 ===== */
.modes{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:rgba(255,255,255,.75)}
.modes button{min-height:42px;padding:6px 18px;border:0;background:none;cursor:pointer;letter-spacing:.12em;color:var(--mut);font-size:15px}
.modes button+button{border-left:1px solid var(--line)}
.modes button[aria-pressed=true]{background:var(--acc);color:#fff;font-weight:700}
.modes button:focus-visible,.controls button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
body.mode-book .mala-only{display:none}

/* ===== 3D 旁文字 ===== */
.lab{font-size:16px;color:#2b2521;text-shadow:0 0 6px rgba(248,244,236,.95),0 0 2px rgba(248,244,236,.95)}
.lab-part{white-space:normal;width:max-content;max-width:250px;line-height:1.5;text-align:left}
.lab-part b{display:block;font-size:17px;color:var(--acc);letter-spacing:.12em}
.lab-part span{display:block;font-size:14px;color:#3d342d}
.lab-book{font-size:14.5px}
#fan .nb{position:absolute;left:0;top:0;pointer-events:auto;background:rgba(255,252,247,.82);border:0;border-radius:4px;padding:2px 8px;cursor:pointer;color:#5b5047;font-size:14px;white-space:nowrap}
#fan .nb:hover,#fan .nb:focus-visible{color:var(--acc);outline:none;text-decoration:underline}
#callout b{text-shadow:0 0 8px rgba(248,244,236,.95)}
#callout small{font-size:14.5px;color:#3d342d;max-width:420px;white-space:normal}
#fan .fl{color:#2b2521;text-shadow:0 0 6px rgba(248,244,236,.95)}

/* ===== 引文折疊 ===== */
#quote-toggle{margin-top:8px;border:0;background:none;padding:6px 0;min-height:36px;color:var(--acc);cursor:pointer;font-size:14.5px;letter-spacing:.06em;text-decoration:underline;text-underline-offset:3px}
#main-quote p#quote{font-size:17px}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ===== 面板內容 ===== */
.guide{font-size:1.02rem;color:var(--acc);font-weight:700;margin:.3em 0}
.small{font-size:.86rem}
.parts{list-style:none;margin:.3em 0;padding:0}
.prow{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:none;padding:8px 2px;cursor:pointer}
.prow b{color:var(--acc);margin-right:.6em;letter-spacing:.1em}
.prow span{font-size:.93rem}
.prow:hover b,.prow:focus-visible b{text-decoration:underline}
.chip.cross{border-style:dashed}
.box.big{font-size:1.08rem;line-height:1.8}
.cnt{font-size:.8rem;color:var(--mut);font-weight:400}
.notes{margin:.3em 0;padding-left:1.2em;font-size:.92rem}
.refs{list-style:none;margin:.3em 0;padding:0}
.refs li{border-bottom:1px solid var(--line)}
.ref{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 2px;cursor:pointer;font-size:.9rem;line-height:1.6}
.ref:hover,.ref:focus-visible{background:rgba(155,34,38,.05)}
.rk{display:inline-block;font-size:.72rem;border:1px solid currentColor;border-radius:3px;padding:0 4px;margin-right:6px;vertical-align:1px}
.rk.direct{color:#2f6690}.rk.rel{color:#a8741a}.rk.chonly{color:var(--mut)}
.batchbar{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:.6em 0 .3em}
.batchbar .bt{min-height:40px;padding:4px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer;font-size:.88rem}
.batchbar .bt:disabled{opacity:.35;cursor:default}
.batchbar .range{font-size:.88rem;color:var(--mut)}
.secs,.chlist,.items{list-style:none;margin:0;padding:0}
.srow,.irow{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:baseline;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:none;padding:8px 2px;cursor:pointer;min-height:44px}
.srow .sn,.irow .sn{color:var(--acc);font-size:.88rem;white-space:nowrap}
.srow .st{font-size:.98rem;line-height:1.55}
.srow .pg,.irow .pg{font-size:.8rem;color:var(--mut);white-space:nowrap}
.srow:hover,.irow:hover,.srow.on{background:rgba(155,34,38,.05)}
.items{margin-left:1.6em}
.irow{padding:5px 2px;min-height:38px}
.irow .st{font-size:.9rem;color:#3d342d}
.items.open{margin:.4em 0 .4em .4em}
.chh{font-size:1.15rem!important}
.sech{color:var(--fg)!important;font-size:1.1rem!important;letter-spacing:0!important;margin:.2em 0!important}
.secfocus{border-top:1px solid var(--line);margin-top:.6em;padding-top:.4em}
.prose{white-space:pre-wrap}
.fig{margin:.8em 0}
.fig img{width:100%;height:auto;border-radius:6px;display:block}
.fig figcaption{font-size:.82rem;color:var(--mut);margin-top:4px}
.fig.wide{max-width:720px}

/* ===== 完整目次 ===== */
#pane-toc h4{margin:1em 0 .3em;font-size:.9rem;color:var(--acc);letter-spacing:.2em}
.tocch{border-bottom:1px solid var(--line)}
.tocch summary{list-style:none;cursor:pointer}
.tocch summary::-webkit-details-marker{display:none}
.tocch .row{display:flex;width:100%;gap:8px;align-items:baseline;text-align:left;min-height:44px;padding:8px 4px;border:0;background:none;cursor:pointer}
.tocch .row .n{flex:none;min-width:1.8em;color:var(--mut)}
.tocch .row .cnt{margin-left:auto;flex:none}
.tocch ol{list-style:none;margin:0 0 .5em;padding:0 0 0 1.8em}
.tocch ol.ti{padding-left:1.4em;margin:0}
.trow{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;border:0;background:none;padding:4px 2px;cursor:pointer;font-size:.88rem;line-height:1.5}
.trow i{font-style:normal;color:var(--mut);font-size:.78rem;white-space:nowrap}
.trow:hover,.trow.on,.tocch .row.on{background:rgba(155,34,38,.06)}

@media (max-width:900px){
  .dock{gap:10px}
  .modes{align-self:stretch}.modes button{flex:1}
  #main-quote p#quote{font-size:16px}
}
@media (max-width:900px){
  #callout{width:min(86vw,340px)}
  #callout small{white-space:normal;line-height:1.45}
  #fan .nb{font-size:12.5px}
}

/* ===== 珠內閱讀：文字浮在放大、半透明的那顆 3D 數珠上（右側面板保留） ===== */
.bv{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;transition:opacity .7s ease;--cx:50%;--cy:50%;--D:500px;--lx:60px;--rx:90%}
.bv.on{opacity:1}
.bv[hidden]{display:none}
.bv-veil{position:absolute;left:calc(var(--cx) - var(--D) / 2);top:calc(var(--cy) - var(--D) / 2);width:var(--D);height:var(--D);border-radius:50%;
  background:radial-gradient(circle at 50% 50%,rgba(253,250,244,.72) 0%,rgba(253,250,244,.6) 50%,rgba(253,250,244,.2) 66%,rgba(253,250,244,0) 71%)}
.bv-scroll{position:absolute;left:var(--cx);top:var(--cy);width:calc(var(--D) * .68);height:calc(var(--D) * .66);transform:translate(-50%,-46%);
  overflow-y:auto;overscroll-behavior:contain;pointer-events:auto;padding:12px 6px;color:#2b2521;outline:none;scrollbar-width:thin;
  -webkit-mask-image:linear-gradient(transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(transparent,#000 7%,#000 93%,transparent)}
.bv-scroll h1{font-size:clamp(1.35rem,2.3vw,2rem);text-align:center;letter-spacing:.12em;margin:.2em 0 .5em;line-height:1.35}
.bv-scroll h1 small{display:block;font-size:.5em;letter-spacing:.2em;color:#9b2226;font-weight:400;margin-bottom:.3em}
.bv-scroll h2{font-size:1rem;color:#9b2226;letter-spacing:.35em;margin:1.3em 0 .5em;padding-bottom:.3em;border-bottom:1px solid rgba(155,34,38,.25)}
.bv-crumb{text-align:center;font-size:.84rem;color:#7d7064;letter-spacing:.06em;margin:0}
.bv-note{font-size:.9rem;color:#5e5249;text-align:center;margin:.3em 0}
.bv-notes{font-size:.95rem;padding-left:1.2em;margin:.5em 0}
.bv-links{display:flex;flex-wrap:wrap;gap:4px 14px;justify-content:center;margin:.6em 0}
#bv-content .chip{border:0;background:none;box-shadow:none;padding:4px 2px;min-height:36px;color:#7a1c1f;text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(155,34,38,.35);font-size:.98rem}
#bv-content .chip small{color:#7d7064}
#bv-content .pend{text-align:center}
#bv-content .refs li{border-bottom:1px dotted rgba(90,70,50,.3)}
#bv-content .ref{font-size:.96rem;padding:8px 2px}
#bv-content .srow,#bv-content .irow{background:none;border-bottom:1px dotted rgba(90,70,50,.3)}
#bv-content .batchbar .bt{background:rgba(255,255,255,.65)}
.bv-back{position:absolute;left:var(--cx);top:calc(var(--cy) - var(--D) * .44);transform:translateX(-50%);pointer-events:auto;border:0;background:none;cursor:pointer;
  font-size:16px;letter-spacing:.5em;padding:6px 6px 6px 14px;color:#5e5249;min-height:40px}
.bv-back:hover,.bv-back:focus-visible{color:#9b2226;outline:none;text-decoration:underline;text-underline-offset:6px}
.bv-side{position:absolute;top:var(--cy);transform:translate(-50%,-50%);pointer-events:auto;border:0;background:rgba(253,250,244,.55);border-radius:10px;cursor:pointer;
  display:flex;flex-direction:column;gap:.35em;align-items:center;max-width:150px;padding:8px 10px;font-size:15px;line-height:1.45;color:#3d342d;text-align:center}
.bv-left{left:var(--lx)}.bv-right{left:var(--rx)}
.bv-side:hover,.bv-side:focus-visible{outline:none;background:rgba(253,250,244,.85)}
.bv-dir{font-size:.8em;letter-spacing:.2em;color:#9b2226}
.bv-name{font-weight:700;letter-spacing:.05em}
@media (max-width:900px){
  .bv-scroll{width:calc(var(--D) * .74);height:calc(var(--D) * .7)}
  .bv-side{top:auto;bottom:8px;transform:translateX(-50%);font-size:12.5px;max-width:110px;padding:4px 6px}
  .bv-left{left:62px}.bv-right{left:auto;right:6px;transform:none}
}
@media (prefers-reduced-motion:reduce){.bv{transition:none}}

/* 閱讀時收起操作列（保留模式切換與右側面板），避免壓到放大的珠子 */
/* 2026-10-26：操作列固定在左上，閱讀珠面時也保留 */

/* ===== 見修行果名相頁：左右兩欄名相 ===== */
.lab-terms{font-size:13.5px;padding:0 4px;line-height:1.2;letter-spacing:.03em;white-space:nowrap}
.lab-z0{color:#2f6690}.lab-z1{color:#8a5d10}.lab-z2{color:#5b4597}.lab-z3{color:#a3231c}
.lab-sp{font-weight:700;letter-spacing:.12em;font-size:14px}
body.mode-terms #main-quote{display:none}
body.mode-terms #leaders path{opacity:.4}
.modes button{padding:6px 14px}

/* 名相頁：區畫面的名相與區標題 */
.lab-zterm{font-size:14.5px;padding:2px 6px;border-radius:4px;background:rgba(253,250,244,.72);white-space:nowrap;letter-spacing:.04em}
.lab-zterm:hover,.lab-zterm:focus-visible{background:#fff}
body.mode-terms #leaders path{opacity:.55}
#callout.zonehead b{font-size:28px;letter-spacing:.3em;color:var(--acc)}
#callout.zonehead small{font-size:14px;color:#5e5249;letter-spacing:.06em;max-width:none;white-space:nowrap}

/* 字體質感：思源宋體、舒展的字距（念珠旁的標籤與標題） */
.lab{letter-spacing:.14em;font-weight:400}
.lab-book{font-size:15.5px;letter-spacing:.16em}
.lab-terms.lab-sp{font-size:22px;letter-spacing:.24em;font-weight:400;padding:4px 10px}
.lab-zterm{letter-spacing:.1em}
.top h1{font-weight:700}

/* 珠體上的標題：透明底、黑色字（以淡淡的光暈維持可讀性，非底色） */
.lab,.lab-zterm,.lab-terms,.lab-terms.lab-sp,#fan .nb,#fan .fl{background:none!important;color:#1f1b18!important;text-shadow:0 0 3px rgba(250,247,240,.95),0 0 8px rgba(250,247,240,.8)}
.lab-zterm:hover,.lab-zterm:focus-visible,.lab:hover,.lab:focus-visible,#fan .nb:hover{background:none!important;color:#9b2226!important}
.lab-part b{color:#1f1b18!important}
.bv-side{background:none!important}
.bv-side .bv-name,.bv-side .bv-dir{color:#1f1b18;text-shadow:0 0 3px rgba(250,247,240,.95),0 0 8px rgba(250,247,240,.8)}

/* ===== 以數珠為喻：導師引文以「透明立體碑文」直書置於念珠中央（全文展開、無底色） ===== */
@media (min-width:901px){
  body.mode-mala #main-quote{left:var(--qx,40%);top:var(--qy,50%);bottom:auto;width:max-content;max-width:none;height:var(--qh,300px);padding:0;
    background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;transform:translate(-50%,-50%) perspective(1100px) rotateX(12deg);transform-origin:50% 60%;pointer-events:none}
  body.mode-mala #main-quote #quote,body.mode-mala #quote-toggle{display:none}
  body.mode-mala #main-quote #quote-full{position:static!important;width:auto;height:100%;overflow:visible;clip:auto;white-space:normal;margin:0;
    writing-mode:vertical-rl;font-size:var(--qf,15px);line-height:1.75;letter-spacing:.06em;color:rgba(52,38,28,.86);text-align:start;user-select:text;pointer-events:auto;
    text-shadow:1px 1px 0 rgba(255,255,255,.85),-1px -1px 0 rgba(90,60,35,.14),0 0 14px rgba(250,247,240,.9)}
  body.mode-mala #main-quote.hide{opacity:0}
}
@media (max-width:900px){ body.mode-mala #main-quote #quote,body.mode-mala #quote-toggle{display:none} body.mode-mala #main-quote #quote-full{position:static!important;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;font-size:17px;line-height:1.9} }
.lab-parts.lab-sp{font-size:17px;letter-spacing:.24em}
.lab-parts.lab-part{max-width:200px}

/* ===== 原書導讀：平實導師題辭，直書碑文置於念珠中央，兩段輪流淡入淡出 ===== */
body.mode-book #main-quote{display:none}
#book-stele{display:none}
body.mode-book #book-stele{display:grid}
#book-stele .verse{grid-area:1/1;margin:0;color:rgba(52,38,28,.88);user-select:text;
  text-shadow:1px 1px 0 rgba(255,255,255,.85),-1px -1px 0 rgba(90,60,35,.14),0 0 14px rgba(250,247,240,.9)}
#book-stele p{margin:0}
#book-stele .vt{font-weight:700;letter-spacing:.16em}
#book-stele .vs{font-weight:700;letter-spacing:.1em}
@media (min-width:901px){
  body.mode-book #book-stele{position:absolute;z-index:6;left:var(--qx,40%);top:var(--qy,50%);transform:translate(-50%,-50%) perspective(1100px) rotateX(12deg);transform-origin:50% 60%;
    pointer-events:none;transition:opacity .5s;place-items:center}
  #book-stele .verse{writing-mode:vertical-rl;height:calc(var(--bf,19px) * 13.8);font-size:var(--bf,19px);line-height:1.9;letter-spacing:.08em;pointer-events:auto;
    display:flex;flex-direction:column;gap:0}
  #book-stele .verse p+p{margin-block-start:.9em}
  #book-stele .vt{font-size:1.06em;margin-block-end:.5em}
  #book-stele .verse p.vs{margin-block-start:1.2em;text-align:end}
  #book-stele.hide{opacity:0}
}
@media (max-width:900px){
  body.mode-book #book-stele{order:4;margin:8px 12px;padding:14px 16px;place-items:start}
  #book-stele .verse{font-size:17px;line-height:1.9}
  #book-stele .verse p+p{margin-top:.5em}
  #book-stele .vs{text-align:right}
}
@media (prefers-reduced-motion:no-preference){
  #book-stele .verse{animation:verse 24s ease-in-out infinite}
  #book-stele .verse+.verse{animation-delay:-12s}
}
@media (prefers-reduced-motion:reduce){
  #book-stele .verse{animation:verse 24s steps(1) infinite}
  #book-stele .verse+.verse{animation-delay:-12s}
}
@keyframes verse{0%{opacity:0;visibility:visible}6%,46%{opacity:1;visibility:visible}52%{opacity:0;visibility:visible}53%,100%{opacity:0;visibility:hidden}}

/* ===== 手機版：與電腦版一致——標題標在念珠上、引文與題辭為無底色的直書碑文 ===== */
body.has3d .partbar{display:none!important}
#labels.narrow .lab-part span,#labels.narrow .lab-book .bt{display:none}
#labels.narrow .lab{font-size:12px;padding:3px 4px;letter-spacing:.04em}
#labels.narrow .lab-part b,#labels.narrow .lab-parts.lab-sp,#labels.narrow .lab-terms.lab-sp{font-size:13px;letter-spacing:.08em}
@media (max-width:900px){
  body.mode-mala #main-quote{display:flex;justify-content:center;background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;padding:6px 0 14px;margin:6px 12px}
  body.mode-mala #main-quote #quote-full{writing-mode:vertical-rl;height:calc(var(--mqf) * 19.4);font-size:var(--mqf);line-height:1.75;letter-spacing:.04em;text-align:start;color:rgba(52,38,28,.88);max-width:100%;
    text-shadow:1px 1px 0 rgba(255,255,255,.85),-1px -1px 0 rgba(90,60,35,.14)}
  :root{--mqf:clamp(15px,4.3vw,19px)}
  body.mode-book #book-stele{place-items:center;margin:6px 12px;padding:6px 0 14px}
  #book-stele .verse{writing-mode:vertical-rl;height:calc(var(--mbf) * 13.8);font-size:var(--mbf);line-height:1.85;letter-spacing:.06em;display:flex;flex-direction:column}
  :root{--mbf:clamp(14px,3.8vw,20px)}
  #book-stele .verse p+p{margin:0;margin-block-start:.8em}
  #book-stele .vt{font-size:1.06em;margin-block-end:.4em}
  #book-stele .verse p.vs{margin-block-start:1.1em;text-align:end}
}
.lab-terms.lab-sp .sub{display:block;font-size:14px;letter-spacing:.14em;color:#5e5249;margin-top:2px}
#labels.narrow .lab-terms.lab-sp .sub{font-size:11px;letter-spacing:.06em}
@media (max-width:900px){
  .modes button{padding:6px 4px;letter-spacing:.04em;font-size:14.5px;white-space:nowrap}
  #callout.zonehead b{font-size:22px}
  #callout.zonehead small{white-space:normal;max-width:min(86vw,340px);font-size:12px;line-height:1.5}
}
.bv-end{display:block;margin-top:4px;font-size:12px;line-height:1.5;color:#9b2226;letter-spacing:.04em;white-space:normal;max-width:9.5em;text-shadow:0 0 3px rgba(250,247,240,.95),0 0 8px rgba(250,247,240,.8)}
.bv-end[hidden]{display:none}
@media (max-width:900px){
  .dock{order:0!important;padding:10px 12px 6px!important;gap:8px}
  .top{order:1!important;padding:6px 16px 4px!important}
  .top h1{font-size:22px;margin:0}
  .bv-end{font-size:10.5px;max-width:100%}
}
.lab.dim{opacity:.28;transition:opacity .4s}.lab.on b{color:#9b2226!important}

/* ===== 珠面放大後的版面上限（珠子很大時，返回鈕與文字區不超出畫面） ===== */
.bv-back{top:max(66px,calc(var(--cy) - var(--D) * .44))}
.bv-scroll{height:min(calc(var(--D) * .66),calc(100% - 170px))}
@media (max-width:900px){.bv-back{top:max(6px,calc(var(--cy) - var(--D) * .46))}.bv-scroll{height:min(calc(var(--D) * .7),calc(100% - 96px))}}
.bv.can-enter .bv-veil{pointer-events:auto;cursor:zoom-in}

/* ===== 問題引導、重點摘要、進入珠內 ===== */
.guide-q{margin:.7em 0;padding:10px 14px;border-radius:10px;background:linear-gradient(135deg,rgba(155,34,38,.08),rgba(176,122,26,.06));border:1px solid rgba(155,34,38,.18)}
.guide-q span{display:block;font-size:.78rem;letter-spacing:.3em;color:var(--acc)}
.guide-q p{margin:.2em 0 0;font-size:1.06rem;font-weight:700;line-height:1.6}
.inner-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:.7em 0}
.chip.inner-go{background:#9b2226;color:#fff;border-color:#9b2226}
.chip.inner-go:hover{background:#7a1c1f}
.inner-row .prog{font-size:.85rem;color:var(--mut)}
.progsum{margin:1em 0;font-size:.92rem;color:#5e5249}.progsum small{color:var(--mut)}
.linkbtn{border:0;background:none;color:var(--acc);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:.85rem;padding:2px 4px}
.clr{color:#2f6b3a;font-weight:400;font-size:.85rem}
.lab-book.cleared .bn::after{content:" ✓";color:#2f6b3a}
.bv-q{text-align:center;font-size:1.14rem;font-weight:700;line-height:1.7;margin:.4em auto .3em;max-width:30em;color:#3a1412}
.bv-q span{display:block;font-size:.72rem;font-weight:400;letter-spacing:.4em;color:#9b2226;margin-bottom:.15em}
.bv-sum{font-size:.98rem;line-height:1.85;color:#3d342d;margin:.3em auto .6em;max-width:34em;text-align:justify}
.bv-inner{display:flex;flex-direction:column;align-items:center;gap:6px;margin:1em 0 .1em}
.inner-btn{pointer-events:auto;cursor:pointer;border:1px solid rgba(155,34,38,.5);border-radius:999px;padding:9px 22px;font-size:1rem;letter-spacing:.2em;color:#fff;
  background:radial-gradient(circle at 30% 30%,#c0392b,#7a1410 70%);box-shadow:0 0 0 0 rgba(155,34,38,.45),0 6px 18px rgba(90,15,10,.25);animation:innerPulse 2.6s ease-in-out infinite}
.inner-btn:hover,.inner-btn:focus-visible{outline:none;filter:brightness(1.08)}
@keyframes innerPulse{0%,100%{box-shadow:0 0 0 0 rgba(155,34,38,.35),0 6px 18px rgba(90,15,10,.25)}50%{box-shadow:0 0 0 10px rgba(155,34,38,0),0 6px 18px rgba(90,15,10,.25)}}
.bv-prog{font-size:.82rem;color:#7d7064;letter-spacing:.05em}
.bv-hint{text-align:center;font-size:.8rem;color:#9a8c7f;margin:0 0 .4em;letter-spacing:.15em}

/* ===== 珠內空間 ===== */
body.inside{overflow:hidden}
.inner{position:fixed;inset:0;z-index:300;color:#efe3cf;overflow:hidden;
  background:radial-gradient(ellipse at 50% 42%,#3b1c14 0%,#22100b 38%,#120806 70%,#070302 100%);
  clip-path:circle(0% at 50% 50%);opacity:0;transition:clip-path 1.1s cubic-bezier(.7,0,.2,1) .55s,opacity .5s ease .55s}
.inner.on{clip-path:circle(150% at 50% 50%);opacity:1}
.inner[hidden]{display:none}
.inner::before{content:"";position:absolute;inset:-10%;pointer-events:none;opacity:.55;
  background:radial-gradient(circle at 50% 50%,transparent 46%,rgba(214,170,120,.06) 58%,rgba(214,170,120,.12) 64%,transparent 70%),
    radial-gradient(circle at 18% 30%,rgba(120,60,40,.25) 0 2px,transparent 3px),radial-gradient(circle at 78% 64%,rgba(120,60,40,.22) 0 3px,transparent 4px),
    radial-gradient(circle at 64% 18%,rgba(120,60,40,.2) 0 2px,transparent 3px),radial-gradient(circle at 30% 80%,rgba(120,60,40,.2) 0 2px,transparent 3px)}
#in-bg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.in-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 45% at 50% 55%,rgba(150,20,12,.22),rgba(150,20,12,0) 70%);animation:cordPulse 6s ease-in-out infinite}
@keyframes cordPulse{0%,100%{opacity:.55}50%{opacity:.9}}
.in-top{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;justify-content:space-between;align-items:center;padding:14px 22px;
  background:linear-gradient(180deg,rgba(7,3,2,.85),rgba(7,3,2,0))}
.in-exit{border:1px solid rgba(217,183,122,.35);background:rgba(20,10,8,.5);color:#efe3cf;border-radius:999px;padding:7px 18px;cursor:pointer;letter-spacing:.2em;font-size:.95rem}
.in-exit:hover,.in-exit:focus-visible{outline:none;border-color:#d9b77a;color:#fff}
.in-meter{font-size:.85rem;letter-spacing:.2em;color:rgba(239,227,207,.7)}.in-meter b{color:#e6c88f;font-weight:400;letter-spacing:.05em}
.in-barwrap{position:absolute;top:0;left:0;right:0;height:3px;z-index:4;background:rgba(255,255,255,.06)}
#in-bar{display:block;height:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#6e100c,#d2463a 70%,#f0b46e);box-shadow:0 0 10px rgba(210,70,58,.7)}
.in-rail{position:absolute;z-index:2;left:44px;top:110px;bottom:70px;width:2px}
.in-thread{position:absolute;inset:0;background:linear-gradient(180deg,rgba(170,22,14,.25),rgba(170,22,14,.65),rgba(170,22,14,.25));box-shadow:0 0 8px rgba(160,20,12,.5)}
.in-bead{position:absolute;left:50%;top:0;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;transition:top .2s linear;
  background:radial-gradient(circle at 35% 30%,#ffd9a8,#c0392b 55%,#5a0b08);box-shadow:0 0 14px 3px rgba(210,70,58,.55)}
.in-dot{position:absolute;left:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;padding:0;cursor:pointer;border:1px solid rgba(217,183,122,.55);background:#1c0d09}
.in-dot.seen{background:#d9b77a;box-shadow:0 0 8px rgba(217,183,122,.6)}
.in-dot span{position:absolute;left:18px;top:50%;transform:translateY(-50%);white-space:nowrap;font-size:.75rem;letter-spacing:.15em;color:rgba(239,227,207,.0);transition:color .2s;pointer-events:none}
.in-dot:hover span,.in-dot:focus-visible span{color:rgba(239,227,207,.85)}
.in-scroll{position:absolute;inset:0;z-index:1;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;outline:none;scrollbar-width:thin;scrollbar-color:rgba(217,183,122,.3) transparent;
  -webkit-mask-image:linear-gradient(transparent 0,#000 90px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(transparent 0,#000 90px,#000 calc(100% - 40px),transparent)}
.in-col{max-width:760px;margin:0 auto;padding:16vh 28px 12vh}
.in-head{text-align:center;margin-bottom:10vh}
.in-crumb{font-size:.82rem;letter-spacing:.15em;color:rgba(239,227,207,.55);margin:0}
.in-head h1{font-size:clamp(1.6rem,3.2vw,2.5rem);letter-spacing:.14em;line-height:1.4;margin:.4em 0 .3em;font-weight:700;text-wrap:balance;color:#f6ead6;text-shadow:0 0 30px rgba(210,70,58,.35)}
.in-head h1 small{display:block;font-size:.42em;letter-spacing:.5em;color:#d9b77a;font-weight:400;margin-bottom:.6em}
.in-visit{font-size:.8rem;letter-spacing:.12em;color:rgba(217,183,122,.65);margin:0}
.in-card{position:relative;margin:0 0 16vh;padding:28px 34px 30px;border-radius:20px;border:1px solid rgba(217,183,122,.14);
  background:linear-gradient(160deg,rgba(42,19,13,.9),rgba(18,8,6,.86));box-shadow:0 20px 60px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,220,170,.05);
  opacity:.18;transform:translateY(28px) scale(.985);transition:opacity 1s ease,transform 1s cubic-bezier(.2,.7,.2,1),border-color .8s,box-shadow .8s}
.in-card.lit{opacity:1;transform:none;border-color:rgba(217,183,122,.28);box-shadow:0 20px 70px rgba(0,0,0,.4),0 0 40px rgba(170,30,20,.12),inset 0 1px 0 rgba(255,220,170,.08)}
.in-card.seen::after{content:"已看";position:absolute;top:14px;right:18px;font-size:.7rem;letter-spacing:.3em;color:rgba(217,183,122,.55);border:1px solid rgba(217,183,122,.3);border-radius:4px;padding:0 6px}
.in-chap{margin-bottom:18vh;text-align:center}
.in-k{font-size:.76rem;letter-spacing:.5em;color:#d9b77a;margin:.2em 0 .6em}
.in-chap .in-k:not(:first-child){margin-top:1.6em}
.in-q{font-size:1.32rem;line-height:1.75;margin:0;font-weight:700;color:#f6ead6;letter-spacing:.05em}
.in-chap .in-q{font-size:clamp(1.35rem,2.6vw,1.75rem);min-height:1.75em}
.in-type.typing::after{content:"";display:inline-block;width:2px;height:1.1em;margin-left:3px;vertical-align:-.15em;background:#d2463a;animation:caret .8s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
.in-qa{display:flex;gap:14px;align-items:flex-start;margin:.8em 0 .4em}
.in-mark{flex:0 0 auto;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:.9rem;color:#f6ead6;margin-top:.15em;
  background:radial-gradient(circle at 35% 30%,#c0392b,#6e100c);box-shadow:0 0 0 1px rgba(255,200,160,.25),0 0 16px rgba(210,70,58,.35)}
.in-mark.sm{width:26px;height:26px;font-size:.75rem}
.in-no{font-size:.78rem;letter-spacing:.2em;color:rgba(217,183,122,.75);margin:0}
.in-card h2{font-size:1.18rem;letter-spacing:.1em;margin:.35em 0 .2em;color:#efe3cf;font-weight:400;line-height:1.5}
.in-note{font-size:.82rem;color:rgba(239,227,207,.6);margin:.2em 0}
.in-s{font-size:1.03rem;line-height:2;color:rgba(239,227,207,.88);margin:.6em 0 0;text-align:justify}
.in-chap .in-s{text-align:justify;max-width:36em;margin-left:auto;margin-right:auto}
.ink span{opacity:0;filter:blur(5px)}
.lit .ink span{animation:ink .9s ease forwards;animation-delay:calc(var(--i) * 16ms + .25s)}
@keyframes ink{0%{opacity:0;filter:blur(5px);color:#e46a50}60%{opacity:.9;filter:blur(.5px)}100%{opacity:1;filter:none}}
.in-pend{color:rgba(239,227,207,.35);font-weight:400;font-style:italic;font-size:.9em}
.in-items{margin-top:1.2em;padding-left:22px;border-left:1px solid rgba(194,70,60,.35)}
.in-item{margin:1.2em 0;opacity:.35;transition:opacity .8s}
.in-item.lit{opacity:1}
.in-item h3{font-size:1.02rem;font-weight:400;letter-spacing:.08em;margin:.25em 0;color:#efe3cf}
.in-item .in-q{font-size:1.08rem}
.in-item .in-s{font-size:.97rem}
.in-item.seen .in-no::after{content:"・已看";color:rgba(217,183,122,.5)}
.in-fig{margin:1.6em auto 0;max-width:560px}
.in-fig img{width:100%;border-radius:12px;display:block}
.in-fig figcaption{font-size:.78rem;color:rgba(239,227,207,.5);margin-top:.4em}
.in-fig.ph{aspect-ratio:16/9;display:grid;place-items:center;border:1px dashed rgba(217,183,122,.25);border-radius:14px;background:radial-gradient(circle,rgba(217,183,122,.05),transparent 70%)}
.in-fig.ph span{font-size:.78rem;letter-spacing:.6em;color:rgba(217,183,122,.4)}
.in-end{text-align:center;padding:4vh 0 30vh}
.in-end .in-done,.in-end .in-when,.in-end .in-acts{opacity:.35;transition:opacity 1s}
.in-seal{width:118px;height:118px;margin:0 auto 1.2em;border:3px solid #c0392b;border-radius:14px;display:flex;flex-direction:column;justify-content:center;align-items:center;
  color:#d2463a;font-size:2.1rem;line-height:1.1;font-weight:700;letter-spacing:.1em;transform:rotate(-8deg) scale(1.9);opacity:0;box-shadow:inset 0 0 0 4px rgba(192,57,43,.25)}
.done .in-seal{animation:stamp .55s cubic-bezier(.3,1.6,.5,1) forwards}
.done .in-end .in-done,.done .in-end .in-when,.done .in-end .in-acts{opacity:1}
@keyframes stamp{0%{opacity:0;transform:rotate(-8deg) scale(1.9)}100%{opacity:.95;transform:rotate(-8deg) scale(1)}}
.in-done{font-size:1.1rem;letter-spacing:.12em;margin:.3em 0}
.in-when{font-size:.82rem;color:rgba(217,183,122,.7);margin:.2em 0 1.4em;min-height:1.2em}
.in-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.in-btn{cursor:pointer;border-radius:999px;padding:9px 22px;font-size:.98rem;letter-spacing:.15em;border:1px solid #c0392b;color:#fff;background:radial-gradient(circle at 30% 30%,#c0392b,#7a1410 70%)}
.in-btn.ghost{background:transparent;border-color:rgba(217,183,122,.4);color:#efe3cf}
.in-btn:hover,.in-btn:focus-visible{outline:none;filter:brightness(1.12)}
@media (max-width:900px){
  .in-rail{display:none}
  .in-top{padding:10px 12px}
  .in-col{padding:12vh 16px 10vh}
  .in-card{padding:20px 18px 22px;margin-bottom:12vh;border-radius:16px}
  .in-q{font-size:1.14rem}.in-chap .in-q{font-size:1.3rem}
  .in-items{padding-left:14px}
  .in-glow{opacity:.5}
}
@media (prefers-reduced-motion:reduce){
  .inner{transition:opacity .3s}.in-card{transition:none;opacity:1;transform:none}.ink span,.lit .ink span{animation:none;opacity:1;filter:none}.in-item{opacity:1}
  .done .in-seal{animation:none;opacity:.95;transform:rotate(-8deg)}.inner-btn{animation:none}.in-glow{animation:none}
}
/* 拉近珠面時隱藏的引文、偈頌不可擋住滑鼠（否則珠面上的按鈕點不到、出現選字游標） */
#book-stele.hide,#book-stele.hide *,#main-quote.hide,#main-quote.hide *{pointer-events:none!important;user-select:none}

/* 進入珠內：點擊後按鈕與文字先淡出，只留念珠本身 */
.stage>:not(#canvas-container),.top,.dock,.panel,#main-quote,#book-stele{transition:opacity .28s ease}
body.diving .stage>:not(#canvas-container),body.diving .top,body.diving .dock,body.diving .panel,body.diving #main-quote,body.diving #book-stele{opacity:0!important;pointer-events:none}
body.diving #canvas-container{transform:scale(calc(1 + var(--dive, 0) * .5));filter:blur(calc(var(--dive, 0) * 7px));transform-origin:50% 47%} /* 入珠：珠面迎面撲來 */

/* ===== 2026-10-26 版面：刪除右側內容／目次面板（3D 失效或 ?panel=1 時才顯示），操作列在左上、導覽在右上；手機都在畫面下方 ===== */
body.has3d:not(.show-panel){--panelW:0px}
body.has3d:not(.show-panel) .panel{display:none}
.dock{right:auto;left:50%;top:24px;transform:translateX(-50%);align-items:center}
.controls{position:absolute;z-index:7;top:150px;left:34px;justify-content:flex-start;max-width:min(46vw,560px)}
.navbar{position:absolute;z-index:7;top:22px;right:26px;padding:0;gap:6px}
.navbar button{flex:none;padding:6px 16px;min-height:40px;background:rgba(255,255,255,.75);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font:inherit;font-size:14px;letter-spacing:.06em;color:var(--fg)}
.navbar button:disabled{opacity:.42;cursor:default;box-shadow:none}
#nav-back{font-weight:700;color:var(--acc)}
@media (min-width:901px){body.show-panel .navbar,body:not(.has3d) .navbar{top:84px;right:calc(var(--panelW) + 40px)}} /* 顯示右側面板時（3D 失效或 ?panel=1）導覽列讓開頁籤與面板 */
body.inside .controls,body.inside .navbar{opacity:0;pointer-events:none}
@media (max-width:900px){
  body{padding-bottom:calc(122px + env(safe-area-inset-bottom))}
  .dock{position:static;transform:none;left:auto;top:auto}
  .navbar{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:40;display:flex;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:rgba(243,237,227,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line)}
  .navbar button{flex:1;padding:6px 4px;font-size:13.5px;min-height:42px}
  .controls{position:fixed;top:auto;left:0;right:0;bottom:calc(58px + env(safe-area-inset-bottom));z-index:40;max-width:none;padding:6px 10px;gap:6px;background:rgba(243,237,227,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);flex-wrap:nowrap}
  .controls button{min-height:38px;padding:4px 10px;font-size:13px;white-space:nowrap}
  .controls .chsel{flex:1;min-width:0}.controls .chsel select{max-width:none;width:100%;min-height:38px;font-size:13px}
  #chsel-lab{display:none}
}
/* 捲軸：平常隱藏，滑鼠移上去才出現；不用白底，與背景同色 */
*{scrollbar-width:thin;scrollbar-color:transparent transparent}
*:hover,*:focus-within{scrollbar-color:rgba(122,100,78,.38) transparent}
::-webkit-scrollbar{width:7px;height:7px;background:transparent}
::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}
::-webkit-scrollbar-thumb{background:transparent;border-radius:7px}
:hover::-webkit-scrollbar-thumb{background:rgba(122,100,78,.38)}
::-webkit-scrollbar-button{display:none;width:0;height:0}
.bv-scroll,.in-scroll,.rm-text,.rm-toc,.pane{scrollbar-color:transparent transparent}
.bv-scroll:hover,.in-scroll:hover,.rm-text:hover,.rm-toc:hover,.pane:hover{scrollbar-color:rgba(122,100,78,.38) transparent}

/* ===== 2026-10-26 珠面閱讀：上方麵包屑改紅色小字（不再與章名小標重複）、問題標題刪除、返回與左右章更明顯、閱讀時收起右上導覽 ===== */
#bv-content .bv-crumb{font-size:.95rem;letter-spacing:.2em;color:#9b2226;margin:0 0 .35em}
.bv-q span{display:none}
body.reading .navbar{display:none!important}
.bv-back{font-size:18px;font-weight:700;letter-spacing:.3em;color:#9b2226;padding:6px 10px 6px 16px;border:0;border-radius:0;background:none!important;box-shadow:none;
  text-shadow:0 0 4px rgba(250,247,240,1),0 0 10px rgba(250,247,240,.9)} /* 純文字，不做成按鈕樣子 */
.bv-back:hover,.bv-back:focus-visible{background:none!important;text-decoration:underline;text-underline-offset:6px}
.bv-side{max-width:180px;gap:.4em}
.bv-side .bv-dir{font-size:14px;font-weight:700;letter-spacing:.25em;color:#9b2226!important}
.bv-side .bv-name{font-size:18px;font-weight:700;color:#1a1613!important;text-shadow:0 0 4px rgba(250,247,240,1),0 0 10px rgba(250,247,240,.95),0 0 18px rgba(250,247,240,.8)}
.bv-side:hover .bv-name,.bv-side:focus-visible .bv-name{color:#9b2226!important}
@media (max-width:900px){
  .bv-back{font-size:16px;padding:5px 8px 5px 14px}
  .bv-side{max-width:130px}.bv-side .bv-dir{font-size:12px}.bv-side .bv-name{font-size:14.5px}
  body.reading{padding-bottom:0}
}
@media (min-width:901px){body.reading .controls .chsel select{max-width:170px}}
@media (max-width:900px){
  .bv-side{background:rgba(253,250,244,.88)!important;border-radius:10px;box-shadow:0 1px 6px rgba(80,50,30,.12);padding:4px 8px}
  .bv-scroll{height:min(calc(var(--D) * .64),calc(100% - 150px))}
}

/* ===== 2026-10-27 三頁右上導覽取消（只在 3D 無法啟動時保留）；返回＝珠面上方「‹ 返回」文字或點珠子以外的空白處 ===== */
body.has3d .navbar{display:none!important}
@media (max-width:900px){
  body.has3d{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  body.has3d .controls{bottom:0;padding-bottom:calc(6px + env(safe-area-inset-bottom))}
}
/* 以數珠為喻：點部件拉近時，部件名稱與說明放大（側欄已取消，字要在畫面上就看得清楚） */
.lab-part.on{max-width:420px!important;z-index:3}
.lab-part.on b{font-size:28px;letter-spacing:.16em;margin-bottom:.25em}
.lab-part.on span{font-size:19px;line-height:1.75;color:#2b2521}
#labels.narrow .lab-part.on{max-width:min(78vw,300px)!important}
#labels.narrow .lab-part.on b{font-size:20px}
#labels.narrow .lab-part.on span{display:block;font-size:15px;line-height:1.7}
#callout b{font-size:30px}
#callout small{font-size:18px;line-height:1.7;max-width:460px}
@media (max-width:900px){#callout b{font-size:21px}#callout small{font-size:14.5px}}
/* 章內點節目：只換上方摘要（淡入），被點的節在目錄中標示 */
.bv-top.swap{animation:bvSwap .45s ease}
@keyframes bvSwap{from{opacity:.15;transform:translateY(6px)}to{opacity:1;transform:none}}
#bv-content .srow.on,#bv-content .irow.on{background:rgba(155,34,38,.08);box-shadow:inset 3px 0 0 #9b2226}
#bv-content .srow.on .st,#bv-content .irow.on .st{color:#7a1c1f;font-weight:700}
@media (prefers-reduced-motion:reduce){.bv-top.swap{animation:none}}
#bv-content .bv-rel{text-align:center;font-size:.92rem;color:#5e5249;margin:.3em 0}
#bv-content .bv-rel .chip{min-height:0;padding:0 2px;font-size:.92rem}
#bv-content .bv-backch{margin:.2em 0 0}
#bv-content .bv-backch .chip{min-height:0;font-size:.9rem}

/* ===== 2026-10-29 手機：以數珠為喻的念珠區降低高度，下方引文橫向展開、一次看完；進入單顆珠面時不顯示下方引文／題辭 ===== */
@media (max-width:900px){
  body.has3d.mode-mala:not(.reading) .stage{height:36svh;min-height:250px}
  body.has3d.reading .stage{height:calc(100svh - 212px - env(safe-area-inset-bottom));min-height:400px} /* 只剩珠面：珠面放大，填滿標題與下方操作列之間 */
  body.has3d.reading #main-quote,body.has3d.reading #book-stele{display:none!important}
  body.mode-mala #main-quote #quote-full{height:calc(var(--mqf) * var(--mqk,19.4))}
}
/* 電腦版：操作列（暫停動態、引線、部件選單）移到右上角 */
@media (min-width:901px){
  body.has3d:not(.show-panel) .controls{top:22px;right:26px;left:auto;justify-content:flex-end}
}
/* 手機：原書導讀與見修行果名相的總覽，念珠區與以數珠為喻同高；名相頁總覽下方也顯示原書題辭 */
@media (max-width:900px){
  body.has3d.mode-book:not(.reading) .stage,body.has3d.mode-terms:not(.has-sel) .stage{height:36svh;min-height:250px}
  body.mode-terms:not(.has-sel) #book-stele{display:grid;order:4;place-items:center;margin:6px 12px;padding:6px 0 14px}
}
