/* 阅读 App (js/apps/reading-app.js). The look is the design prototype's: white / black pages that follow the phone's light / dark mode, one theme colour (午夜蓝 #1E3A8A, a constant for now),
   frosted glass for what floats (tab bar, dialogs, menus). Every class carries the rd- prefix and sits under .rd-root, so nothing leaks into or out of the other Apps.
   Motion uses the app's tokens (--mo-*); the keyframes are this file's own. */
#v-reading{background:var(--bg)}
.rd-root{--acc:#1E3A8A;--accd:color-mix(in srgb,#1E3A8A 88%,#000);--bg1:#FFFFFF;--bg2:#F5F6F8;--sf:rgba(242,243,246,.8);--sf2:rgba(255,255,255,.95);--edge:rgba(0,0,0,.06);--ink:#0F0F11;--ink2:#6B6E76;--line:rgba(0,0,0,.08);--shadow:0 10px 24px -16px rgba(0,0,0,.35);--on-acc:#fff}
:root[data-theme="dark"] .rd-root{--acc:color-mix(in srgb,#1E3A8A 62%,#fff);--accd:color-mix(in srgb,#1E3A8A 40%,#fff);--bg1:#000000;--bg2:#0C0C0E;--sf:rgba(255,255,255,.07);--sf2:rgba(26,26,29,.97);--edge:rgba(255,255,255,.1);--ink:#F2F2F4;--ink2:#9A9BA2;--line:rgba(255,255,255,.1);--shadow:0 12px 26px -14px rgba(0,0,0,.8);--on-acc:#0B1330}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .rd-root{--acc:color-mix(in srgb,#1E3A8A 62%,#fff);--accd:color-mix(in srgb,#1E3A8A 40%,#fff);--bg1:#000000;--bg2:#0C0C0E;--sf:rgba(255,255,255,.07);--sf2:rgba(26,26,29,.97);--edge:rgba(255,255,255,.1);--ink:#F2F2F4;--ink2:#9A9BA2;--line:rgba(255,255,255,.1);--shadow:0 12px 26px -14px rgba(0,0,0,.8);--on-acc:#0B1330}}
.rd-root{position:absolute;inset:0;overflow:hidden;background:linear-gradient(170deg,var(--bg1),var(--bg2) 62%);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
@keyframes rdPageIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}
@keyframes rdPageBack{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
@keyframes rdFade{from{opacity:0}to{opacity:1}}
@keyframes rdRise{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes rdDialogIn{from{opacity:0;transform:scale(1.06)}to{opacity:1;transform:none}}
@keyframes rdMenuPop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes rdSweep{from{transform:translateX(-120%)}to{transform:translateX(260%)}}
.rd-root button{font:inherit;color:inherit}
.rd-root input{font:inherit}
.rd-root *{box-sizing:border-box}
.rd-root ::-webkit-scrollbar{display:none}
.rd-root .rd-view{position:absolute;inset:0}
.rd-root .rd-scroll{position:absolute;inset:0;overflow-y:auto;scrollbar-width:none;padding:calc(var(--sat) + 22px) 20px calc(var(--sab) + 120px);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 calc(var(--sat) + 46px),#000 calc(100% - 110px),transparent calc(100% - 36px));mask-image:linear-gradient(to bottom,transparent 0,#000 calc(var(--sat) + 46px),#000 calc(100% - 110px),transparent calc(100% - 36px))}
.rd-root .rd-scroll.rd-sub{padding-top:calc(var(--sat) + 64px);padding-bottom:calc(var(--sab) + 60px);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 calc(var(--sat) + 92px),#000 calc(100% - 40px),transparent);mask-image:linear-gradient(to bottom,transparent 0,#000 calc(var(--sat) + 92px),#000 calc(100% - 40px),transparent)}
.rd-root .rd-anim-in{animation:rdPageIn var(--mo-slow) var(--mo-ease-out) backwards}
.rd-root .rd-anim-back{animation:rdPageBack var(--mo-slow) var(--mo-ease-out) backwards}
.rd-root .rd-anim-tab{animation:rdFade var(--mo-base) var(--mo-ease-out) backwards}
.rd-root .rd-press{transition:transform var(--mo-release) var(--mo-ease-bounce);cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
.rd-root .rd-press:active{transform:scale(.9);transition-duration:var(--mo-fast)}
.rd-root .rd-press-sm:active{transform:scale(.97)}
.rd-root .rd-glass{background:var(--sf);border:.5px solid var(--edge);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2)}
.rd-root .rd-ph-head{display:flex;align-items:flex-end;justify-content:space-between;margin:6px 4px 18px;gap:10px}
.rd-root .rd-ph-title{font-size:34px;font-weight:600;letter-spacing:.04em;line-height:1.1}
.rd-root .rd-ph-sub{font-size:12.5px;color:var(--ink2);margin-top:6px;letter-spacing:.06em}
.rd-root .rd-hbtns{display:flex;gap:10px}
.rd-root .rd-circle-btn{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink);box-shadow:var(--shadow);flex-shrink:0}
.rd-root .rd-circle-btn svg{width:18px;height:18px}
.rd-root .rd-back-btn{position:absolute;top:calc(var(--sat) + 10px);left:16px;z-index:25}
.rd-root .rd-share-btn{position:absolute;top:calc(var(--sat) + 10px);right:16px;z-index:25;cursor:pointer}
.rd-root .rd-sec{font-size:13px;color:var(--ink2);letter-spacing:.12em;margin:26px 4px 12px;display:flex;justify-content:space-between;align-items:baseline}
.rd-root .rd-sec b{font-weight:500}
.rd-root .rd-sec span{font-size:12px;letter-spacing:.04em}
.rd-root .rd-hint{font-size:11.5px;color:var(--ink2);line-height:1.7;margin:8px 4px 0}
.rd-root .rd-tabs{position:absolute;left:50%;bottom:calc(var(--sab) + 16px);transform:translateX(-50%);display:flex;gap:4px;padding:6px;border-radius:30px;z-index:20;box-shadow:var(--shadow)}
.rd-root .rd-tabs button{white-space:nowrap;border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink2);display:flex;align-items:center;gap:6px;padding:9px 16px;border-radius:24px;transition:transform var(--mo-release) var(--mo-ease-bounce),background var(--mo-base),color var(--mo-base)}
.rd-root .rd-tabs button:active{transform:scale(.9);transition-duration:var(--mo-fast)}
.rd-root .rd-tabs button svg{width:17px;height:17px}
.rd-root .rd-tabs button.rd-on{color:var(--accd);background:color-mix(in srgb,var(--acc) 14%,transparent)}
.rd-root .rd-cover{position:relative;border-radius:4px 10px 10px 4px;overflow:hidden;box-shadow:0 10px 18px -10px rgba(0,0,0,.45),inset 3px 0 0 rgba(255,255,255,.16);color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:12px 10px 10px 14px}
.rd-root .rd-cover::before{content:'';position:absolute;left:5px;top:0;bottom:0;width:1px;background:rgba(255,255,255,.22)}
.rd-root .rd-cover .rd-ct{font-size:17px;font-weight:600;letter-spacing:.14em;writing-mode:vertical-rl;line-height:1.1}
.rd-root .rd-cover .rd-ca{font-size:10px;letter-spacing:.1em}
.rd-root .rd-cover .rd-shine{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.rd-root .rd-cover .rd-shine::after{content:'';position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.22),transparent);animation:rdSweep 1.4s var(--mo-ease-out) .4s 1 backwards}
.rd-root .rd-cover.rd-mini{padding:5px 3px 3px 7px}
.rd-root .rd-cover.rd-mini .rd-ct{font-size:10px}
.rd-root .rd-cover.rd-mini .rd-ca{display:none}
.rd-root .rd-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 14px}
.rd-root .rd-bk{position:relative}
.rd-root .rd-bk .rd-cover{width:100%;aspect-ratio:.7}
.rd-root .rd-bk .rd-bt{font-size:13px;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rd-root .rd-bk .rd-bs{font-size:11px;color:var(--ink2);margin-top:2px;display:flex;align-items:center;gap:4px}
.rd-root .rd-card{border-radius:20px;padding:6px 16px;box-shadow:var(--shadow)}
.rd-root .rd-li{display:flex;align-items:center;gap:12px;padding:13px 0;font-size:14px;border-bottom:.5px solid var(--line)}
.rd-root .rd-li:last-child{border-bottom:0}
.rd-root .rd-li small{display:block;font-size:11.5px;color:var(--ink2);margin-top:3px}
.rd-root .rd-li .rd-r{margin-left:auto;display:flex;align-items:center;gap:8px;color:var(--ink2);font-size:12.5px;flex-shrink:0}
.rd-root .rd-chev{color:var(--ink2);font-size:15px}
.rd-root .rd-btn{border:0;font:inherit;font-size:14px;padding:13px 18px;border-radius:18px;background:color-mix(in srgb,var(--ink2) 11%,transparent);color:var(--ink);white-space:nowrap}
.rd-root .rd-btn.rd-pri{background:var(--acc);color:var(--on-acc)}
.rd-root .rd-btn.rd-full{width:100%}
.rd-root .rd-btn.rd-ghost{background:transparent;color:var(--ink2)}
.rd-root .rd-btns{display:flex;gap:10px}
.rd-root .rd-btns .rd-btn{flex:1}
.rd-root .rd-chips{display:flex;gap:8px;margin:0 0 14px 2px;flex-wrap:wrap}
.rd-root .rd-chips button{border:.5px solid var(--edge);font:inherit;font-size:12.5px;padding:7px 14px;border-radius:16px;background:var(--sf);color:var(--ink2);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.rd-root .rd-chips button.rd-on{background:color-mix(in srgb,var(--acc) 16%,transparent);color:var(--accd)}
.rd-root .rd-chips i{width:8px;height:8px;border-radius:50%}
.rd-root .rd-pop{position:absolute;z-index:30;display:flex;gap:2px;padding:5px;border-radius:16px;background:var(--sf2);border:.5px solid var(--edge);box-shadow:0 14px 30px -10px rgba(0,0,0,.35);animation:rdMenuPop var(--mo-release) var(--mo-ease-bounce) backwards;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.rd-root .rd-pop.rd-col{flex-direction:column;min-width:130px}
.rd-root .rd-pop button{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--ink);padding:9px 12px;border-radius:12px;white-space:nowrap;text-align:left}
.rd-root .rd-pop button:active{background:color-mix(in srgb,var(--acc) 14%,transparent)}
.rd-root .rd-pop.rd-closing{transition:opacity var(--mo-fast) ease-in,transform var(--mo-fast) ease-in;opacity:0;transform:scale(.9)}
.rd-root .rd-ov{position:absolute;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.14);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:rdFade var(--mo-fast) ease-out backwards}
.rd-root .rd-dlg{width:100%;max-height:80%;overflow-y:auto;scrollbar-width:none;border-radius:26px;padding:22px 20px 18px;background:var(--sf2);border:.5px solid var(--edge);box-shadow:0 30px 60px -20px rgba(0,0,0,.45);animation:rdDialogIn var(--mo-slow) var(--mo-ease-out) backwards;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.rd-root .rd-ov.rd-closing{transition:opacity var(--mo-base) ease-in;opacity:0}
.rd-root .rd-ov.rd-closing .rd-dlg{transition:transform var(--mo-fast) ease-in,opacity var(--mo-fast) ease-in;transform:scale(1.03);opacity:.9}
.rd-root .rd-dlg h3{margin:0 0 4px;font-size:17px;font-weight:600}
.rd-root .rd-dlg .rd-sub{font-size:12px;color:var(--ink2);margin-bottom:14px;line-height:1.6}
.rd-root .rd-field{width:100%;font:inherit;font-size:14px;color:var(--ink);background:color-mix(in srgb,var(--ink2) 8%,transparent);border:0;border-bottom:1.5px solid transparent;border-radius:14px;padding:12px 14px;outline:none;transition:border-color var(--mo-base)}
.rd-root .rd-field:focus{border-bottom-color:var(--acc)}
.rd-root .rd-flabel{font-size:12px;color:var(--ink2);letter-spacing:.1em;margin:16px 4px 8px;display:block}
.rd-root .rd-imp{display:flex;gap:14px;align-items:center;padding:14px;border-radius:18px;background:color-mix(in srgb,var(--ink2) 7%,transparent);margin-bottom:10px}
.rd-root .rd-imp svg{width:22px;height:22px;color:var(--accd);flex-shrink:0}
.rd-root .rd-imp b{font-weight:500;font-size:14.5px}
.rd-root .rd-imp small{display:block;color:var(--ink2);font-size:11.5px;margin-top:3px}
.rd-root .rd-pick{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:.5px solid var(--line);cursor:pointer}
.rd-root .rd-pick:last-child{border-bottom:0}
.rd-root .rd-pick small{display:block;font-size:11.5px;color:var(--ink2);margin-top:2px}
.rd-root .rd-ck{margin-left:auto;width:22px;height:22px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ink2) 40%,transparent);display:flex;align-items:center;justify-content:center;transition:transform var(--mo-release) var(--mo-ease-bounce)}
.rd-root .rd-pick.rd-on .rd-ck{background:var(--acc);border-color:var(--acc);transform:scale(1.05)}
.rd-root .rd-pick.rd-on .rd-ck::after{content:'';width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.rd-root .rd-dt-top .rd-cover{width:132px;height:188px}
.rd-root .rd-dt-top h1{font-size:26px;font-weight:600;margin:20px 0 4px;letter-spacing:.08em}
.rd-root .rd-dt-top .rd-au{font-size:13px;color:var(--ink2)}
.rd-root .rd-dt-top .rd-meta{font-size:12px;color:var(--ink2);margin-top:8px}
.rd-root .rd-dt-acts{display:flex;gap:10px;margin:22px 0 4px}
.rd-root .rd-dt-acts .rd-btn{flex:1}
.rd-root .rd-status{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:18px;box-shadow:var(--shadow);font-size:13.5px;line-height:1.6;margin-top:12px;animation:rdRise var(--mo-base) var(--mo-ease-out) backwards}
.rd-root .rd-status small{display:block;font-size:11.5px;color:var(--ink2)}
.rd-root .rd-danger{display:block;margin:28px auto 0;border:0;background:none;font:inherit;font-size:13px;color:var(--ink2)}
.rd-root .rd-restore svg{width:20px;height:20px;color:var(--accd);flex-shrink:0;margin-top:1px}
.rd-root .rd-cv-opts{display:flex;gap:12px}
.rd-root .rd-cv-opt{flex:1;border-radius:16px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:12px;color:var(--ink2);border:1.5px solid transparent;background:color-mix(in srgb,var(--ink2) 7%,transparent);cursor:pointer}
.rd-root .rd-cv-opt.rd-on{border-color:var(--acc);color:var(--accd)}
.rd-root .rd-cv-opt .rd-cover{width:56px;height:80px}
.rd-root .rd-up{width:56px;height:80px;border-radius:4px 10px 10px 4px;border:1.5px dashed color-mix(in srgb,var(--ink2) 45%,transparent);display:flex;align-items:center;justify-content:center;color:var(--ink2)}
.rd-root .rd-up svg{width:20px;height:20px}
.rd-root .rd-search svg{width:17px;height:17px}
.rd-root .rd-search input{flex:1;border:0;background:transparent;font:inherit;color:var(--ink);outline:none}
.rd-root .rd-toast{position:absolute;left:50%;bottom:calc(var(--sab) + 96px);transform:translate(-50%,5px);opacity:0;z-index:60;padding:9px 16px;border-radius:16px;font-size:12.5px;background:var(--sf2);border:.5px solid var(--edge);box-shadow:var(--shadow);transition:opacity var(--mo-base),transform var(--mo-base) var(--mo-ease-out);pointer-events:none;white-space:nowrap}
.rd-root .rd-dlg .rd-search{margin-bottom:8px}
.rd-root .rd-pick.rd-dis{opacity:.45;pointer-events:none}
.rd-root .rd-fmt{font-size:11.5px;color:var(--ink2);line-height:1.7;margin-top:4px}
.rd-root .rd-fmt b{color:var(--ink);font-weight:500}
.rd-root .rd-tabs button{padding:9px 12px;position:relative}
.rd-root .rd-tdot{position:absolute;top:7px;right:9px;width:6px;height:6px;border-radius:50%;background:var(--acc)}
.rd-root .rd-pick.rd-dis{opacity:.55}
.rd-root .rd-chips.rd-sg{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-bottom:16px}
.rd-root .rd-chips.rd-sg::-webkit-scrollbar{display:none}
.rd-root .rd-chips.rd-sg button{flex-shrink:0}
.rd-root .rd-chips.rd-sg small{font-size:11px;opacity:.7}
.rd-root .rd-chips.rd-sg .rd-add{border-style:dashed;background:none}
.rd-root .rd-sg-list{max-height:300px;overflow-y:auto;scrollbar-width:none;margin:0 -4px}
.rd-root .rd-sg-list::-webkit-scrollbar{display:none}
.rd-root .rd-empty{border-radius:22px;padding:26px 22px 22px;text-align:center;margin:8px 0 18px}
.rd-root .rd-empty>svg{width:30px;height:30px;color:var(--accd);opacity:.85}
.rd-root .rd-empty b{display:block;font-size:15.5px;font-weight:600;margin-top:10px}
.rd-root .rd-empty p{font-size:12.5px;color:var(--ink2);line-height:1.7;margin:8px 0 16px}
.rd-root .rd-empty .rd-btns{justify-content:center}
.rd-root .rd-empty>small{display:inline-block;margin-top:14px;font-size:12.5px;color:var(--accd);cursor:pointer}
.rd-root .rd-dt-acts .rd-btn svg{display:block;margin:auto}
.rd-root .rd-cover.rd-img::before{display:none}
.rd-root .rd-restore{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:18px;background:color-mix(in srgb,var(--acc) 10%,transparent);font-size:13px;line-height:1.65;color:var(--ink);margin-bottom:6px}
.rd-root .rd-search{display:flex;align-items:center;gap:8px;padding:11px 14px;border-radius:16px;margin-bottom:14px;color:var(--ink2);font-size:13.5px}
/* ── additions the App needs (not in the prototype's CSS) ── */
.rd-root .rd-tabs[hidden]{display:none}
.rd-root .rd-hint-c{text-align:center}
.rd-root .rd-btn[disabled]{opacity:.4;pointer-events:none}
.rd-root .rd-busy{display:flex;flex-direction:column;align-items:center;gap:10px;padding:8px 0;font-size:13.5px}
.rd-root .rd-bar{width:100%;height:4px;border-radius:2px;background:color-mix(in srgb,var(--ink2) 18%,transparent);overflow:hidden}
.rd-root .rd-bar i{display:block;height:100%;background:var(--acc);transition:width var(--mo-base,180ms)}
.rd-root .rd-cover.rd-img{background-size:cover;background-position:center}
.rd-root .rd-up.rd-has{border:0;background-size:cover;background-position:center}
.rd-root .rd-li .rd-n{width:30px;flex-shrink:0;color:var(--ink2);font-size:12px}
.rd-root .rd-li .rd-tl{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rd-root .rd-hb{width:38px;height:38px}
.rd-root .rd-bk .rd-bs.rd-warn{color:var(--accd)}
.rd-root .rd-chips.rd-sg button.rd-on small{opacity:.9}
.rd-root .rd-stage{position:absolute;inset:0}
.rd-root .rd-toast.rd-on{opacity:1;transform:translate(-50%,0)}
.rd-root .rd-pick .rd-nm{font-size:14.5px}
.rd-root .rd-pick .rd-cover{width:34px;height:48px;flex-shrink:0}
.rd-root .rd-cover.rd-img .rd-ct,.rd-root .rd-cover.rd-img .rd-ca{display:none}
.rd-root .rd-hbtns .rd-circle-btn{cursor:pointer}
.rd-root .rd-scroll::-webkit-scrollbar,.rd-root .rd-dlg::-webkit-scrollbar,.rd-root .rd-sg-list::-webkit-scrollbar{display:none}
.rd-root .rd-dt-top{display:flex;flex-direction:column;align-items:center;text-align:center}
.rd-root .rd-restore small{display:block;margin-top:4px;font-size:11.5px;color:var(--ink)}

/* 阅读 2 · 笔记页面 (js/apps/reading-notes.js): 本书笔记, 我的 › 笔记, 颜色. The mark colours (--mk-*) are set on the page element; the rules that paint them are in styles/reading-reader.css. */
.rd-root .rd-nbook{padding:14px 16px 16px}
.rd-root .rd-nstats{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;padding:4px 0 14px}
.rd-root .rd-nstats b{display:block;font-size:20px;font-weight:600}
.rd-root .rd-nstats span{font-size:11.5px;color:var(--ink2)}
.rd-root .rd-nstats div+div{border-left:.5px solid var(--line)}
.rd-root .rd-nbook .rd-btns{display:flex;gap:10px}
.rd-root .rd-nbook .rd-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 10px;font-size:13.5px}
.rd-root .rd-nbook .rd-btn svg,.rd-root .rd-nbar svg{width:15px;height:15px}
.rd-root .rd-nmiss{margin:14px 0 0;flex-wrap:wrap}
.rd-root .rd-nmiss .rd-btn{margin-top:10px;padding:9px 16px;font-size:13px}
.rd-root .rd-nbar{display:flex;align-items:center;justify-content:space-between;margin:16px 4px 0;font-size:12.5px}
.rd-root .rd-nbar .rd-link{display:inline-flex;align-items:center;gap:5px}
.rd-root .rd-nbar .rd-hint{margin:0;color:var(--ink2)}
.rd-root .rd-search[hidden]{display:none}
.rd-root .rd-ni{display:flex;gap:10px;align-items:flex-start;padding:13px 0;border-bottom:.5px solid var(--line)}
.rd-root .rd-ni:last-child{border-bottom:0}
.rd-root .rd-ni.rd-go{cursor:pointer}
.rd-root .rd-nib{min-width:0;flex:1}
.rd-root .rd-nq{font-size:14px;line-height:1.9;word-break:break-word;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.rd-root .rd-nn{margin-top:6px;padding:8px 10px;border-radius:12px;background:color-mix(in srgb,var(--ink2) 9%,transparent);font-size:13px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
.rd-root .rd-ni small{display:block;margin-top:6px;font-size:11px;color:var(--ink2)}
.rd-root .rd-nck{width:20px;height:20px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ink2) 50%,transparent);flex-shrink:0;margin-top:4px;position:relative}
.rd-root .rd-nck.rd-on{background:var(--acc);border-color:var(--acc)}
.rd-root .rd-nck.rd-on::after{content:"";position:absolute;left:6px;top:2.5px;width:5px;height:9px;border:solid var(--on-acc);border-width:0 2px 2px 0;transform:rotate(40deg)}
.rd-root .rd-manbar{position:absolute;left:14px;right:14px;bottom:calc(var(--sab) + 14px);z-index:20;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:22px;box-shadow:var(--shadow)}
.rd-root .rd-manbar[hidden]{display:none}
.rd-root .rd-manc{flex:1;font-size:12.5px;color:var(--ink2)}
.rd-root .rd-manbar .rd-btn{padding:9px 18px;font-size:13.5px}
.rd-root .rd-lab{font-size:12px;color:var(--ink2);margin:12px 2px 8px}
.rd-root .rd-nfc{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rd-root .rd-chipx{border:.5px solid var(--edge);font:inherit;font-size:12.5px;padding:6px 14px;border-radius:16px;background:var(--sf);color:var(--ink2)}
.rd-root .rd-chipx.rd-on{background:color-mix(in srgb,var(--acc) 16%,transparent);color:var(--accd)}
.rd-root .rd-nfc .rd-dot{width:28px;height:28px;border-radius:50%;padding:0;border:2px solid transparent}
.rd-root .rd-nswitch{display:flex;align-items:center;justify-content:space-between;margin-top:16px;font-size:14px}
.rd-root .rd-nswitch input{width:20px;height:20px;accent-color:var(--acc)}
.rd-root .rd-exp{min-height:210px;font-size:13px;line-height:1.7;white-space:pre-wrap}
.rd-root .rd-crow{cursor:pointer}
.rd-root .rd-crow .rd-dot{display:block;width:24px;height:24px;border-radius:50%;flex-shrink:0;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.2)}
.rd-root .rd-crow input[type=color]{width:38px;height:28px;border:0;padding:0;background:none}
.rd-root .rd-cdots{display:inline-flex;gap:3px}
.rd-root .rd-cdots i{width:11px;height:11px;border-radius:50%;display:block}
.rd-root .rd-nsample{margin:16px 4px 0;font-size:15px;line-height:2.2}
.rd-root .rd-hbtns .rd-link{font-size:14px;padding:6px 4px}
/* 阅读 3 · 阅读统计 (js/apps/reading-stats.js) */
.rd-root .rd-stabs{display:flex;margin-bottom:16px}
.rd-root .rd-stabs button{flex:1}
.rd-root .rd-snav{display:flex;align-items:center;gap:10px;margin:0 4px 10px;font-size:13.5px;color:var(--ink2)}
.rd-root .rd-snav span{flex:1}
.rd-root .rd-snav button{width:30px;height:30px;border-radius:50%;border:0;background:color-mix(in srgb,var(--ink2) 12%,transparent);color:var(--ink);font-size:16px;line-height:1;padding:0}
.rd-root .rd-snav button:disabled{opacity:.35}
.rd-root .rd-sbig{font-size:40px;font-weight:600;margin:6px 4px 0;letter-spacing:.01em}
.rd-root .rd-ssub{font-size:12.5px;color:var(--ink2);margin:2px 4px 18px}
.rd-root .rd-sfour{display:grid;grid-template-columns:repeat(4,1fr);margin:0 0 16px}
.rd-root .rd-sfour>div{padding:6px 4px;border-radius:12px}
.rd-root .rd-sfour span{display:block;font-size:11.5px;color:var(--ink2)}
.rd-root .rd-sfour b{font-size:24px;font-weight:600}
.rd-root .rd-sfour small{font-size:11px;color:var(--ink2);margin-left:2px}
.rd-root .rd-schart{padding:16px}
.rd-root .rd-sct b{font-weight:500;font-size:14px}
.rd-root .rd-sbars{display:flex;align-items:flex-end;gap:3px;height:150px;margin:26px 0 22px;position:relative}
.rd-root .rd-sc{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative;min-width:0}
.rd-root .rd-sc i{width:100%;max-width:16px;border-radius:5px;background:color-mix(in srgb,var(--acc) 64%,transparent);display:block;min-height:0}
.rd-root .rd-sc.rd-top i{background:var(--acc)}
.rd-root .rd-sc span{position:absolute;bottom:-18px;font-size:10px;color:var(--ink2);white-space:nowrap}
.rd-root .rd-sc em{font-style:normal;font-size:10.5px;font-weight:600;color:var(--accd);white-space:nowrap;height:0;line-height:1;overflow:visible;transform:translateY(-14px)}
.rd-root .rd-sc.rd-top:first-child em{align-self:flex-start}
.rd-root .rd-sc.rd-top:last-child em{align-self:flex-end}
.rd-root .rd-spill{margin-top:10px;border-radius:14px;padding:10px 14px;font-size:12.5px;background:color-mix(in srgb,var(--acc) 9%,transparent);color:var(--accd);display:flex;gap:6px;flex-wrap:wrap}
.rd-root .rd-mb{display:flex;gap:12px;align-items:center;padding:11px 0;border-bottom:.5px solid var(--line);cursor:pointer}
.rd-root .rd-card>.rd-mb:last-child{border-bottom:0}
.rd-root .rd-mb .rd-cover{width:38px;height:54px;flex-shrink:0;padding:5px 3px 3px 7px}
.rd-root .rd-mb .rd-cover .rd-ct{font-size:9px}
.rd-root .rd-mb .rd-cover .rd-ca{display:none}
.rd-root .rd-mbm{min-width:0;flex:1}
.rd-root .rd-mbm b{display:block;font-weight:500;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rd-root .rd-mbm small{display:block;font-size:11.5px;color:var(--ink2);margin-top:3px}
.rd-root .rd-more{justify-content:center;color:var(--ink2);font-size:12.5px;cursor:pointer}
.rd-root .rd-sub2{margin-top:18px}
.rd-root .rd-ovc{padding:16px}
.rd-root .rd-ovt b{display:block;font-size:20px;font-weight:600}
.rd-root .rd-ovt small{font-size:12px;color:var(--ink2)}
.rd-root .rd-ovs{display:grid;grid-template-columns:1fr 1fr;margin-top:14px;padding-top:12px;border-top:.5px solid var(--line);text-align:center}
.rd-root .rd-ovs b{display:block;font-size:20px;font-weight:600}
.rd-root .rd-ovs b small{font-size:12px;font-weight:400;margin-left:2px}
.rd-root .rd-ovs span{font-size:11.5px;color:var(--ink2)}
.rd-root .rd-ovs div+div{border-left:.5px solid var(--line)}
.rd-root .rd-ovc+.rd-card{margin-top:14px}
.rd-root .rd-sdh{padding:16px}
.rd-root .rd-sdt{display:flex;gap:14px;align-items:center}
.rd-root .rd-sdt .rd-cover{width:62px;height:88px;flex-shrink:0}
.rd-root .rd-sdt b{display:block;font-size:18px;font-weight:600}
.rd-root .rd-sdt small{display:block;font-size:12px;color:var(--ink2);margin-top:3px}
.rd-root .rd-sst{margin-top:8px;font-size:12.5px;color:var(--accd)}
.rd-root .rd-sdg{margin-top:14px;padding:14px 16px}
.rd-root .rd-sg2{display:grid;grid-template-columns:1fr 1fr;gap:16px 10px}
.rd-root .rd-sg2 span{display:block;font-size:11.5px;color:var(--ink2)}
.rd-root .rd-sg2 b{font-size:20px;font-weight:600}
.rd-root .rd-sg2 b small{font-size:12px;font-weight:400;margin-left:2px}
.rd-root .rd-sg2>div>small{display:block;font-size:11px;color:var(--ink2);margin-top:2px}
.rd-root .rd-sg2 .rd-link{color:var(--accd);cursor:pointer}
.rd-root .rd-sbm{height:6px;border-radius:3px;background:color-mix(in srgb,var(--ink2) 12%,transparent);margin:12px 0 6px;overflow:hidden}
.rd-root .rd-sbm i{display:block;height:100%;border-radius:3px;background:var(--acc)}
.rd-root .rd-sb{position:relative;display:flex;align-items:center;gap:10px;padding:5px 0;font-size:12px}
.rd-root .rd-sb i{position:absolute;left:0;top:50%;height:18px;margin-top:-9px;border-radius:5px;background:color-mix(in srgb,var(--acc) 22%,transparent)}
.rd-root .rd-sb span{position:relative;color:var(--ink)}
.rd-root .rd-sb span:last-child{margin-left:auto;color:var(--ink2)}
.rd-root .rd-nrange{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:9px 14px;border-radius:16px;font-size:12.5px;color:var(--ink2)}
.rd-root .rd-nrange[hidden]{display:none}
.rd-root .rd-nrange b{font-weight:500;color:var(--ink);flex:1}
.rd-root .rd-nrange button{border:0;background:transparent;font:inherit;font-size:12.5px;color:var(--accd);padding:4px 2px}

/* 阅读 4a: 粘贴笔记 (js/apps/reading-paste.js) and the books / notes that have no text */
.rd-root .rd-bk .rd-notext{position:absolute;top:6px;right:6px;padding:2px 7px;border-radius:999px;font-size:10px;line-height:1.5;background:color-mix(in srgb,var(--bg) 88%,transparent);color:var(--ink2);border:.5px solid var(--line)}
.rd-root .rd-pastebox{min-height:200px;width:100%;box-sizing:border-box;margin-top:10px;font-size:12.5px;line-height:1.6;resize:vertical}
.rd-root .rd-pastebtns{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}
.rd-root .rd-gnwarn{margin-top:12px;padding:12px 14px;border-radius:14px;font-size:12.5px;line-height:1.6;background:color-mix(in srgb,var(--accd) 10%,transparent);color:var(--ink)}
.rd-root .rd-pr-row small{display:block;font-size:11.5px;color:var(--ink2);line-height:1.5}
.rd-root .rd-tag{flex:none;padding:2px 9px;border-radius:999px;font-size:11px;background:color-mix(in srgb,var(--acc) 12%,transparent);color:var(--accd)}
.rd-root .rd-wx{margin-top:4px}
.rd-root .rd-ni.rd-ext{cursor:default}
/* 4b 从微信读书导入 (js/apps/reading-weread.js) */
.rd-root .rd-wx-s{display:flex;gap:12px;margin-bottom:14px}.rd-root .rd-wx-s>span{width:22px;height:22px;border-radius:50%;background:var(--acc);color:var(--on-acc);font-size:12px;display:grid;place-items:center;flex-shrink:0;margin-top:1px}
.rd-root .rd-wx-s b{font-weight:600;font-size:14px}.rd-root .rd-wx-s p{margin:4px 0 0;font-size:12.5px;color:var(--ink2);line-height:1.65}
.rd-root .rd-wx-row{display:flex;gap:8px;align-items:center}.rd-root .rd-wx-row .rd-field{flex:1;margin:0}.rd-root .rd-wx-row .rd-btn{flex-shrink:0;padding:12px 14px;font-size:13px}
.rd-root .rd-wx-ok{display:flex;gap:8px;align-items:center;margin-top:10px;font-size:12.5px;color:var(--accd)}.rd-root .rd-wx-ok svg{width:16px;height:16px}
.rd-root .rd-st-g{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px}
.rd-root .rd-st-g span{font-size:12px;color:var(--ink2)}.rd-root .rd-st-g b{display:block;font-size:26px;font-weight:600;margin:4px 0 2px}.rd-root .rd-st-g b small{font-size:12px;font-weight:400;margin:0 2px;color:var(--ink2)}
.rd-root .rd-wxline{font-size:12.5px;color:var(--ink2);margin-top:4px}
