/* 原文库沿用专栏的文字导航和细分隔线；三栏各自滚动。 */
.library-page{--library-nav-height:61px;font-family:var(--ui-font)}
.library-page .library-layout{max-width:none;margin:0;gap:0;grid-template-columns:var(--library-side-width,216px) 10px var(--library-feed-width,400px) 10px minmax(280px,1fr);height:calc(100vh - var(--library-nav-height));height:calc(100dvh - var(--library-nav-height));overflow:hidden}
.library-page.side-off .library-layout{grid-template-columns:var(--library-feed-width,400px) 10px minmax(280px,1fr)}
.library-page .tp-side{position:static;align-self:stretch;min-height:0;max-height:none;padding:24px 18px;overflow-y:auto;border-right:0}
.library-side-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 24px;padding:0;border:0;position:static;background:none;z-index:auto}
.library-side-heading h2{margin:0;color:var(--reader-body);font:600 16px/1.6 var(--ui-font)}
.library-side-heading small{color:var(--reader-muted);font-size:12px;font-variant-numeric:tabular-nums}
.library-filter-group{margin:0 0 24px}
.library-filter-group h2{margin:0 0 8px;color:var(--reader-muted);font:400 12px/1.5 var(--ui-font)}
.library-page #side-topics{display:block}
.library-page .library-filter-list .tp-item{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;padding:9px 10px;border:0;border-left:2px solid transparent;border-radius:0;background:none;color:var(--reader-body);font:400 14px/1.6 var(--ui-font);box-shadow:none}
.library-page .library-filter-list .tp-item small{color:var(--reader-muted);font-size:12px;font-variant-numeric:tabular-nums}
.library-page .library-filter-list .tp-item:hover{background:var(--reader-hover)}
.library-page .library-filter-list .tp-item.is-on{border-left-color:var(--reader-selected-ink);background:var(--reader-selected-bg);color:var(--reader-selected-ink)}
.library-page .library-filter-list .tp-item.is-on small{color:var(--reader-selected-ink)}
.library-periods{display:flex;flex-wrap:wrap;gap:4px 12px}
.library-page .library-periods .tp-item{display:block;width:auto;padding:4px 7px;border:0;border-bottom:1px solid transparent;border-radius:2px;background:none;box-shadow:none;font:400 13px/1.6 var(--ui-font);color:var(--reader-muted)}
.library-periods .tp-item small{display:none}
.library-page .library-periods .tp-item.is-on{border-bottom-color:transparent;background:var(--reader-selected-bg);color:var(--reader-selected-ink)}
.library-page .library-periods .tp-item:not(.is-on):hover{color:var(--reader-body)}
.library-page .tp-select{padding:0}
.library-page .tp-select select{padding:7px 8px;border:1px solid var(--reader-line);border-radius:0;background:transparent;font:400 13px/1.6 var(--ui-font);color:var(--reader-body)}
.library-channel summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 8px;border:1px solid var(--reader-line);list-style:none;color:var(--reader-body);font:400 13px/1.6 var(--ui-font);cursor:pointer}
.library-channel summary::-webkit-details-marker{display:none}
.library-channel summary::after{content:"";width:6px;height:6px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);margin:0 3px 3px 0}
.library-channel summary:focus-visible{outline:2px solid var(--reader-body);outline-offset:2px}
.library-channel-panel{position:fixed;z-index:100;display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--reader-line);border-radius:3px;background:var(--reader-paper);color:var(--reader-body);box-shadow:0 6px 18px #00000012}
.library-channel-panel input{width:100%;padding:5px 7px;font:400 12px/1.5 var(--ui-font);border:1px solid var(--reader-line);border-radius:2px;background:transparent;color:inherit}
.library-channel-panel input:focus-visible{outline:2px solid var(--reader-muted);outline-offset:1px}
.library-channel-panel nav{min-height:0;overflow-y:auto}
.library-channel-panel button{display:block;width:100%;padding:6px 8px;border:0;border-left:2px solid transparent;border-radius:0;background:transparent;text-align:left;color:inherit;font:400 12.5px/1.5 var(--ui-font);cursor:pointer}
.library-channel-panel button:hover{background:var(--reader-hover)}
.library-channel-panel button[aria-pressed="true"]{background:var(--reader-selected-bg);color:var(--reader-selected-ink);border-left-color:var(--reader-selected-ink)}
.library-channel[data-filter-active="true"] summary{background:var(--reader-selected-bg);color:var(--reader-selected-ink);border-color:var(--reader-selected-bg)}
.library-channel-panel p{margin:6px;font-size:12px;color:var(--reader-muted)}
.library-filter-reset{padding:0;border:0;background:none;color:var(--reader-muted);font:400 12px/1.6 var(--ui-font);cursor:pointer}
.library-filter-reset:hover{color:var(--reader-body);text-decoration:underline}
.library-page .library-feed{display:flex;flex-direction:column;min-width:0;min-height:0;max-width:none;margin:0;padding:0}
.library-heading{padding:16px 18px 12px;border-bottom:1px solid var(--reader-line)}
.library-heading h1{font-size:20px;line-height:1.4;margin:0;font-weight:600}
.library-heading #status{font-size:11.5px;line-height:1.5;margin:8px 0 0;min-height:0;color:var(--reader-muted)}
.library-heading .lib-search{display:flex;gap:5px;margin:12px 0 0;flex-wrap:nowrap}
.library-heading .lib-search input{flex:1 1 0;min-width:0;width:100%;padding:6px 8px;font-size:12.5px}
.library-heading .lib-search button{flex:0 0 auto;padding:3px 8px;font-size:12px}
.library-heading #clear-search{font-size:17px;padding:0 7px}
.library-feed-scroll{flex:1;overflow-y:auto;min-height:0;padding:0 18px 24px;scroll-behavior:smooth}
.library-page .lib-list li.lib-day{top:0;padding:10px 0 8px;scroll-margin-top:0;background:var(--reader-paper);font:500 12px/1.5 var(--ui-font);color:var(--reader-muted)}
.library-page .lib-list li.lib-item{padding:8px 7px;border-top:1px solid var(--reader-line);border-left:2px solid transparent;cursor:pointer;overflow-wrap:anywhere}
.library-page .lib-list li.lib-item::before{display:none}
.library-page .lib-list .t{display:block;font-size:14px;line-height:1.55;font-weight:500;color:var(--reader-body)}
.lib-item-title{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:8px}
.library-page .lib-list .lib-time{position:static;width:auto;font:400 11px/1.5 var(--ui-font);color:var(--reader-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.library-page .lib-item:hover{background:var(--reader-hover)}
.library-page .lib-item.is-selected{background:var(--reader-selected-bg);color:var(--reader-selected-ink);border-left-color:var(--reader-selected-ink);box-shadow:none}
.library-page .lib-item.is-selected :is(.t,.en,.lib-time,.sum){color:var(--reader-selected-ink)}
.library-current{margin:12px 0;padding:8px 10px;border:0;border-left:2px solid var(--reader-selected-ink);background:var(--reader-selected-bg);color:var(--reader-selected-ink)}
.library-current p{margin:0 0 4px;font-size:11.5px;color:inherit}
.library-current button{display:block;padding:0;border:0;background:none;color:inherit;font:500 14px/1.55 var(--ui-font);text-align:left;cursor:pointer;overflow-wrap:anywhere}
.library-page a:focus-visible,.library-page button:focus-visible{outline:2px solid var(--reader-body);outline-offset:2px}
.library-reader{display:flex;flex-direction:column;min-width:0;min-height:0}
.library-reader-bar{display:flex;align-items:center;gap:12px;padding:12px 24px;border-bottom:1px solid var(--reader-line);min-height:57px}
.library-reader-bar #reader-open{margin-left:auto;text-decoration:none;white-space:nowrap}
.library-reader-bar #reader-source{margin-left:auto;text-decoration:none;white-space:nowrap}
.library-reader-bar #reader-library{text-decoration:none;white-space:nowrap}
.library-reader-bar #reader-back{display:none}
.library-reader-scroll{flex:1;min-height:0;overflow-y:auto;padding:28px clamp(24px,4vw,72px) 64px;overflow-wrap:anywhere}
.library-reader-scroll article{max-width:820px;margin:0 auto}
.library-reader-scroll h2{font-size:clamp(23px,2vw,30px);line-height:1.45;margin:0 0 12px;scroll-margin:0}
.library-reader-scroll #reader-en{font-size:14px;line-height:1.6}
.library-reader-scroll #reader-meta{font-size:12px;margin:14px 0 22px}
.library-reader-summary{border-left:2px solid var(--reader-line);padding:2px 0 2px 16px;margin:0 0 24px;line-height:1.8}
.library-reader-body{font-size:var(--reader-body-size,17px);line-height:1.9;color:var(--reader-body)}
.library-reader-body p{margin:0 0 1.2em}
.library-empty{max-width:520px;margin:12vh auto 0}
.library-empty h2{font-size:24px;margin-top:10px}
.library-page .four-top{display:none}
.library-page [hidden]{display:none!important}
.library-divider{position:relative;align-self:stretch;padding:0;border:0;border-left:1px solid var(--reader-line);background:transparent;cursor:col-resize;touch-action:none;color:inherit}
.library-divider:hover,.library-divider:focus-visible{background:var(--reader-hover);border-left-color:var(--reader-muted)}
.library-page .tp-side,.library-feed-scroll,.library-reader-scroll,.library-channel-panel nav{scrollbar-width:thin;scrollbar-color:var(--reader-line) transparent}
.library-page .tp-side::-webkit-scrollbar,.library-feed-scroll::-webkit-scrollbar,.library-reader-scroll::-webkit-scrollbar,.library-channel-panel nav::-webkit-scrollbar{width:5px;height:5px;background:transparent}
.library-page .tp-side::-webkit-scrollbar-track,.library-feed-scroll::-webkit-scrollbar-track,.library-reader-scroll::-webkit-scrollbar-track,.library-channel-panel nav::-webkit-scrollbar-track{background:transparent}
.library-page .tp-side::-webkit-scrollbar-thumb,.library-feed-scroll::-webkit-scrollbar-thumb,.library-reader-scroll::-webkit-scrollbar-thumb,.library-channel-panel nav::-webkit-scrollbar-thumb{background:var(--reader-line);border-radius:4px}
.library-resizing,.library-resizing *{cursor:col-resize!important;user-select:none!important}
.library-page.side-off #resize-side{display:none}
@media(max-width:1100px) and (min-width:1000px){.library-reader-scroll{padding:24px}}
@media(max-width:999px){
  .library-page .library-layout{grid-template-columns:200px minmax(0,1fr)}
  .library-page.side-off .library-layout{grid-template-columns:minmax(0,1fr)}
  .library-page .library-reader,.library-page .library-divider{display:none}
  .library-page.reader-open .library-feed{display:none}
  .library-page.reader-open .library-reader{display:flex}
  .library-page .library-reader-bar #reader-back{display:block}
}
@media(max-width:600px){
  .library-page .library-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  .library-page .tp-side{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:12px 16px;max-height:230px;border-bottom:1px solid var(--reader-line)}
  .library-side-heading{grid-column:1/-1;margin:0}
  .library-side-heading h2{font-size:14px}
  .library-filter-group{margin:0}
  .library-filter-group h2{margin-bottom:4px}
  .library-page .library-filter-list .tp-item{padding:4px 8px;font-size:12.5px}
  .library-page .library-filter-list .tp-item small{font-size:11px}
  .library-filter-group:first-of-type{grid-column:1;grid-row:2/4}
  .library-filter-reset{grid-column:1/-1;text-align:left;justify-self:start}
  .library-page.reader-open .tp-side,.library-page.side-off .tp-side{display:none}
  .library-page.reader-open .library-layout,.library-page.side-off .library-layout{grid-template-rows:minmax(0,1fr)}
  .library-reader-bar{padding:10px 16px;gap:8px}
  .library-reader-bar>.note{display:none}
  .library-reader-scroll{padding:22px 20px 48px}
  .library-heading{padding:12px 16px}
  .library-feed-scroll{padding:0 16px 24px}
}

.library-repo-warning{font-size:12px;line-height:1.55;padding:6px 0;margin:0 0 8px;border-bottom:1px solid var(--reader-line)}.library-repo-warning summary{cursor:pointer;font-weight:500}.library-repo-warning p{font-weight:400;margin:6px 0}.library-repo-warning a{font-weight:400}
.library-reader-scroll #reader-column-status{font-size:12px;line-height:1.6;margin:8px 0 14px}.library-reader-scroll .article-pdf-actions{margin-top:0;gap:8px}.library-reader-scroll #reader-column-status a{white-space:nowrap}

.library-moderation-actions{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;margin:12px 0}
.library-moderation-actions .btn{white-space:nowrap}
.library-moderation-actions details{max-width:100%;font:400 12px/1.6 var(--ui-font);color:var(--reader-muted)}
.library-moderation-actions summary{cursor:pointer;padding:7px 0}
.library-moderation-actions label{display:block;margin:6px 0}
.library-moderation-actions input,.library-moderation-actions select{display:block;max-width:100%;width:280px;padding:7px;background:var(--reader-paper);border:1px solid var(--reader-line);color:var(--reader-body)}
#reader-moderation-status,#article-history{font:400 12px/1.6 var(--ui-font);color:var(--reader-muted);margin-bottom:12px}
#article-history summary,.library-feedback summary{cursor:pointer}
#article-history ol{padding-left:20px;overflow-wrap:anywhere}
.library-feedback{margin:0 0 20px;font:400 12px/1.6 var(--ui-font);color:var(--reader-muted)}
.library-feedback p{font:inherit}
.lib-state{font-size:11px;color:var(--reader-danger,#a44f48)}

/* 阅读操作集中在一行，说明按需展开，首屏让给标题和正文。 */
.library-reader-bar{gap:6px;padding:8px 12px;min-height:44px;flex-wrap:nowrap;overflow:visible;font-size:12px}
.library-reader-bar .article-pdf-actions,.library-reader-bar .library-moderation-actions{display:contents}
.library-reader-bar :is(button,.btn){font:400 12px/1.5 var(--ui-font);padding:4px 7px;white-space:nowrap}
.library-reader-bar #reader-open,.library-reader-bar #reader-source{margin-left:0}
.library-reader-bar #reader-open{margin-left:auto}
.library-reader-bar details{position:relative;flex:none}
.library-reader-bar summary{padding:4px;white-space:nowrap}
.library-reader-bar details[open]{z-index:25}
.library-reader-bar details[open] label{position:absolute;top:28px;right:0;width:280px;margin:0;padding:10px;background:var(--reader-paper);border:1px solid var(--reader-line);box-shadow:0 6px 18px #0002}
.library-reader-bar details[open] label+label{top:108px;border-top:0}
.library-reader-bar [data-pdf-status]:empty{display:none}
.library-reader-scroll{padding-top:12px}
.library-reader-scroll #reader-title{margin-top:0}
.library-reader-scroll #reader-column-status{margin:0;font-size:11px;line-height:1.5}
#reader-moderation-status:empty,#reader-column-status:empty{display:none}
.library-reader-scroll #reader-moderation-status{margin:0;font-size:11px;line-height:1.5}
.library-reader-scroll #article-history{margin:2px 0;font-size:11px}
.library-reader-scroll #reader-en{margin:4px 0;font-size:12px}
.library-reader-scroll #reader-meta{margin:6px 0 14px}
@media(max-width:1200px){.library-reader-bar{flex-wrap:wrap}}

/* 手机用两行下拉筛选，把剩余高度留给文章列表；点标题切换全文。 */
.library-mobile-select{display:none}
@media(max-width:600px){
  .library-page .four-nav .four-side{display:none}
  .library-page .library-layout,.library-page.side-off .library-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}
  body.library-page .library-layout>.tp-side,body.library-page.side-off .library-layout>.tp-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-rows:auto;gap:8px 12px;padding:10px 16px;max-height:none;overflow:visible;min-height:0}
  .library-page .library-side-heading,.library-page .library-filter-list,.library-page .library-periods{display:none!important}
  .library-page .library-filter-group:first-of-type{grid-column:auto;grid-row:auto}
  .library-page .library-filter-group{min-width:0}
  .library-page .library-filter-group h2{font-size:11px;line-height:1.3;margin:0 0 3px}
  .library-page .library-mobile-select{display:block;width:100%;min-width:0;height:34px;padding:3px 6px;border:1px solid var(--reader-line);border-radius:2px;background:var(--reader-paper);color:var(--reader-body);font:400 16px/1.3 var(--ui-font)}
  .library-page #channel-picker summary{height:34px;box-sizing:border-box;padding:4px 7px;font-size:14px}
  .library-page #channel-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .library-page .library-feedback{grid-column:1;grid-row:3;margin:0;font-size:11px;min-width:0}
  .library-page .library-feedback[open]{grid-column:1/-1}
  .library-page .library-filter-reset{grid-column:2;grid-row:3;justify-self:end;font-size:11px;align-self:start}
  .library-page .library-feedback[open]~.library-filter-reset{grid-row:4}
  .library-page.reader-open .library-layout{grid-template-rows:minmax(0,1fr)}
  body.library-page.reader-open .library-layout>.tp-side{display:none}
  .library-page .library-heading{padding:8px 16px}
  .library-page .library-heading h1{font-size:18px}
  .library-page .library-heading .lib-search{margin-top:6px}
  .library-page .library-heading #status{margin-top:5px;font-size:11px}
  .library-page .library-heading input{font-size:16px}
  .library-page .library-reader-scroll{padding:12px 16px 32px}
  .library-page .library-reader-bar #reader-back,.library-page .library-reader-bar #reader-library{order:-1}
  .library-page .library-reader-bar{gap:5px;padding:6px 12px}
  .library-page .library-reader-bar :is(button,.btn){min-height:32px}
}

/* Filters are opt-in on a phone; expanding them must not consume the reading viewport. */
@media(max-width:600px){
 body.library-page.side-off .library-layout>.tp-side{display:none}
 body.library-page.side-off .library-layout{grid-template-rows:minmax(0,1fr)}
 body.library-page .library-layout>.tp-side{max-height:30dvh;overflow-y:auto;padding:8px 12px;gap:6px 10px}
 body.library-page .four-nav .four-side{display:block}
 body.library-page .library-heading{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;align-items:center;padding:8px 12px}
 body.library-page .library-heading h1{margin:0;font-size:16px}
 body.library-page .library-heading .lib-search{margin:0}
 body.library-page .library-heading #status{grid-column:1/-1;margin:0}
}

/* Library-only accounts read and export; staff mutations remain server-gated. */
.library-readonly #article-column-button,
.library-readonly .library-moderation-actions,
.library-readonly #reader-column-status,
.library-readonly #reader-moderation-status,
.library-readonly #article-history,
.library-readonly .library-feedback,
.library-readonly .four-tab:not([data-key=library]) { display:none !important; }
