
/* PDF/MP3/TXT media reader. All selectors are scoped to the added library page. */
.library-panel{--lib-border:#cbdae6;--lib-blue:#165e91}
.library-books{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.library-book{text-align:left;padding:13px 17px;background:#fff;border:1px solid var(--lib-border);border-radius:12px;color:#234e6b;min-height:72px;box-shadow:0 4px 14px rgba(25,63,99,.04)}
.library-book b{font-size:16px;display:block}.library-book span{font-size:13px;color:#62809a}.library-book.current{background:#e9f6fb;border-color:#178795;box-shadow:inset 0 0 0 1px #178795;color:#0d5f6a}
.library-book:focus-visible,.library-panel button:focus-visible,.library-panel input:focus-visible,.library-panel a:focus-visible{outline:3px solid #f7b84c;outline-offset:2px}
.library-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:15px;align-items:start}
.library-layout.media-open{grid-template-columns:minmax(295px,355px) minmax(0,1fr)}
.library-study[hidden]{display:none!important}
.library-side-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.library-close-study{border:1px solid #bdd5e3;border-radius:8px;padding:7px 10px;background:white;color:#285d77;font-size:12px;font-weight:750;cursor:pointer;white-space:nowrap}
.library-toggle-study{font-weight:800;background:#145c87;color:white;border:1px solid #145c87;box-shadow:0 1px 3px #0002;white-space:normal;text-align:center}
.library-toggle-study[aria-expanded="true"]{background:#e8f4fa;color:#145c87;border-color:#6ca5bf}
.library-study,.library-pdf-panel{min-width:0;background:#fff;border:1px solid var(--lib-border);border-radius:13px;overflow:hidden;box-shadow:var(--shadow)}
.library-player-top{padding:17px;border-bottom:1px solid var(--lib-border);background:#f3f8fc}
.library-eyebrow{color:#23688c;font-size:12px;font-weight:800;letter-spacing:.09em;margin-bottom:6px}
.library-label{display:block;font-weight:750;font-size:15px;margin:5px 0 7px}
.library-questions{display:flex;gap:5px;align-items:stretch}.library-questions button{font-size:13px;padding:7px 7px;flex:1;min-height:40px}.library-questions input{border:1px solid #9bbbcf;width:66px;text-align:center;font-weight:800;border-radius:7px;color:#174c77;padding:5px 4px;font-variant-numeric:tabular-nums}
.library-jump{display:flex;gap:9px;margin:9px 0 12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.library-jump .btn{font-size:13px;padding:8px 11px;min-height:37px}.library-badge{font-size:12px;font-weight:800;color:#247288;background:#daeff4;border-radius:7px;padding:5px 7px;font-variant-numeric:tabular-nums}
.library-study audio{display:block;width:100%;height:50px;margin-top:5px}.library-audio-status,.library-txt-status{font-size:12px;color:#506b83;line-height:1.5;margin:8px 0;overflow-wrap:anywhere}.library-audio-status.error,.library-txt-status.error{color:#b24141}.library-autonext{font-size:12px;display:flex;align-items:center;gap:7px;line-height:1.4;margin-top:12px}.library-autonext input{height:16px;width:16px;flex:none}
.library-links{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;margin-top:11px}.library-links a{overflow-wrap:anywhere}
.library-txt-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--lib-border)}.library-txt-head strong{font-size:14px}.library-text-actions{display:flex;gap:4px}.library-text-actions button{border:1px solid #cadbe7;background:#f8fafc;padding:3px 7px;border-radius:6px;color:#285e85;font-size:12px;min-width:30px}
.library-txt-status{padding:0 14px;margin:8px 0 0}.library-transcript{font:15px/1.75 'Segoe UI','Microsoft YaHei','Noto Sans CJK SC',sans-serif;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;background:white;color:#223d55;margin:0;padding:13px 15px;max-height:51vh;min-height:180px;overflow-y:auto;tab-size:2}
.library-smallnote{font-size:11px;color:#617a8c;padding:0 14px 8px;overflow-wrap:anywhere;line-height:1.55}
.library-pdf-toolbar{padding:12px 13px;border-bottom:1px solid var(--lib-border);background:#f7fafc;display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.library-pdf-info{display:flex;flex-direction:column;gap:2px}.library-pdf-info strong{font-size:15px}.library-pdf-info span{font-size:11px;color:#5f788b;overflow-wrap:anywhere}
.library-pdf-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.library-pdf-actions label{font-size:12px}.library-pdf-actions input{max-width:63px;padding:6px;text-align:center;border-radius:6px;border:1px solid #b8cfdf;color:#235c82}.library-pdf-actions .btn{padding:7px 9px;min-height:36px;font-size:12px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.library-pdf-host{height:max(610px,80vh);background:#e4ebf2}.library-pdf-host iframe{display:block;width:100%;height:100%;border:0;background:white}
.library-reader-note{padding:12px 15px;background:#ecf6fc;color:#285970;font-size:12px}.library-reader-help{padding:10px 15px;font-size:12px;line-height:1.6;color:#5a7183}
.library-footer-note{margin:14px 0;padding:13px 16px;background:#fff8e9;border:1px solid #f0dec0;color:#634c2f;border-radius:10px;font-size:12px;overflow-wrap:anywhere}
.library-panel code{font-size:12px;overflow-wrap:anywhere}
body.library-wide .shell{display:block}body.library-wide .side{display:none}body.library-wide .content{max-width:none;padding:12px 22px 40px}body.library-wide .top{display:none}body.library-wide .library-layout.media-open{grid-template-columns:minmax(310px,370px) minmax(0,1fr)}body.library-wide .library-pdf-host{height:85vh}
@media(max-width:1200px){.library-layout.media-open{grid-template-columns:minmax(265px,310px) minmax(0,1fr)}.library-pdf-actions{width:100%}.library-pdf-host{height:72vh}}
@media(max-width:970px){.library-layout.media-open{grid-template-columns:1fr}.library-transcript{max-height:35vh}.library-pdf-host{height:80vh}body.library-wide .library-layout.media-open{grid-template-columns:1fr}}
@media(max-width:800px){.library-books{grid-template-columns:1fr}.library-book{min-height:0;padding:10px 13px}.library-pdf-host{height:70vh}.library-transcript{max-height:39vh}.library-pdf-toolbar{display:block}.library-pdf-actions{margin-top:9px}}
@media print{.library-panel{display:none!important}}


/* V3 阅读布局：PDF在中央，转录/MP3在右侧。其他四阶段课程布局保持原样。 */
body.library-reading .shell{grid-template-columns:minmax(0,1fr)}
body.library-reading .side{display:none}
body.library-reading .content{width:100%;max-width:none;padding:12px clamp(12px,2vw,32px) 46px}
body.library-reading .top{display:none}
body.library-reading .library-panel{min-width:0}
body.library-reading .library-layout.media-open{grid-template-columns:minmax(0,1fr) minmax(290px,340px);gap:14px}
body.library-reading .library-pdf-panel{grid-column:1;grid-row:1;min-width:0}
body.library-reading .library-layout.media-open .library-study{grid-column:2;grid-row:1;align-self:start;position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto}
body.library-reading .library-pdf-host{height:max(660px,81vh)}
body.library-reading .library-books{margin:10px 0 12px}
body.library-reading .sectiontitle{margin-top:4px}
body.library-reading .library-pdf-toolbar{gap:9px}
body.library-reading .library-toggle-nav{background:#f2f7fb;border-color:#aac7d9;color:#16567f;font-weight:750}
body.library-reading .library-toggle-nav[aria-expanded="true"]{background:#ddedf9;border-color:#548bb6}
/* 左侧课程导航改为可临时展开的覆盖抽屉，不挤压PDF。 */
.library-nav-backdrop{display:none;position:fixed;inset:0;border:0;background:rgba(12,26,40,.38);z-index:490;cursor:pointer}
body.library-reading.library-nav-open .library-nav-backdrop{display:block}
body.library-reading.library-nav-open .side{display:block!important;position:fixed;left:0;top:0;bottom:0;height:100vh;width:min(285px,86vw);z-index:500;overflow-y:auto;box-shadow:8px 0 30px rgba(0,0,0,.25)}
/* 宽屏开关仍然可用，且不改变右侧音频布局。 */
body.library-wide.library-reading .content{padding:10px 15px 36px}
body.library-wide.library-reading .library-layout.media-open{grid-template-columns:minmax(0,1fr) minmax(290px,355px)}
body.library-wide.library-reading .library-pdf-host{height:88vh}
/* 窄屏用右侧悬浮抽屉；PDF仍保持完整宽度。 */
@media(max-width:1050px){
 body.library-reading .library-layout.media-open{grid-template-columns:minmax(0,1fr)}
 body.library-wide.library-reading .library-layout.media-open{grid-template-columns:minmax(0,1fr)}
 body.library-reading .library-layout.media-open .library-study{position:fixed;grid-column:auto;grid-row:auto;right:0;top:0;bottom:0;width:min(390px,94vw);height:100dvh;max-height:100dvh;overflow-y:auto;border-radius:12px 0 0 12px;z-index:480;box-shadow:-8px 0 28px rgba(0,0,0,.24)}
 body.library-reading .library-pdf-panel{grid-column:1;grid-row:1}
 body.library-reading .library-pdf-host{height:80vh}
}
@media(max-width:800px){
 body.library-reading .content{padding:10px 10px 28px}
 body.library-reading .library-books{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
 body.library-reading .library-book{padding:8px 7px;min-height:70px}
 body.library-reading .library-book b{font-size:12px}
 body.library-reading .library-book span{font-size:10px}
 body.library-reading .library-pdf-toolbar{padding:8px}
 body.library-reading .library-pdf-actions{gap:5px}
 body.library-reading .library-pdf-host{height:76vh}
}
@media(max-width:540px){body.library-reading .library-books{grid-template-columns:1fr}.library-reader-help{font-size:11px}}


/* V4: Off-canvas menus usable with a thumb, and a full-width PDF reading area. */
.library-study-backdrop{display:none;position:fixed;inset:0;border:0;background:rgba(9,27,47,.56);z-index:470;cursor:pointer}
.library-floating-audio{display:none;position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:450;border-radius:999px;background:#12639a;color:white;border:1px solid #09476e;box-shadow:0 6px 19px #0004;min-height:46px;padding:10px 15px;font-size:14px;font-weight:750;cursor:pointer}
.library-floating-audio:focus-visible,.library-study-backdrop:focus-visible,.library-nav-backdrop:focus-visible{outline:3px solid orange;outline-offset:2px}
@media(max-width:1050px){
 body.library-reading.library-media-open .library-study-backdrop{display:block}
 body.library-reading .library-layout.media-open .library-study{z-index:480}
}
@media(max-width:800px){
 body.library-reading:not(.library-media-open) .library-floating-audio{display:block}
 body.library-reading.library-nav-open .library-floating-audio{display:none}
 body.library-reading.library-nav-open .side .navbox{display:block;overflow:visible;padding:6px 0}
 body.library-reading.library-nav-open .side .nav{width:100%;white-space:normal;font-size:14px;padding:12px;line-height:1.35;min-height:47px}
 body.library-reading.library-nav-open .side .nav span{display:block;margin-top:2px}
 body.library-reading .library-books{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
 body.library-reading .library-book{min-height:56px;padding:9px 6px;text-align:center}
 body.library-reading .library-book b{font-size:12px;line-height:1.35}
 body.library-reading .library-book span{font-size:10px;line-height:1.25}
 body.library-reading .library-pdf-host{height:calc(100dvh - 205px);min-height:470px}
 body.library-reading .library-layout.media-open .library-study{width:min(420px,100vw);border-radius:0}
 body.library-reading .library-pdf-actions .btn{min-height:39px}
}
@media(max-width:540px){
 body.library-reading .library-panel>.section-sub{display:none}
 body.library-reading .sectiontitle{margin:0 0 8px}
 body.library-reading .sectiontitle h2{font-size:18px;line-height:1.3}
 body.library-reading .library-books{grid-template-columns:repeat(3,minmax(0,1fr));margin:8px 0 10px}
 body.library-reading .library-book{min-height:50px;padding:7px 4px}
 body.library-reading .library-book b{font-size:11px}
 body.library-reading .library-book span{display:none}
 body.library-reading .library-pdf-info{gap:2px}
 body.library-reading .library-pdf-info strong{font-size:13px}
 body.library-reading .library-pdf-info span{font-size:10px}
 body.library-reading .library-pdf-toolbar{padding:9px}
 body.library-reading .library-pdf-actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:6px;align-items:center}
 body.library-reading .library-pdf-actions .library-toggle-nav{grid-column:1}
 body.library-reading .library-pdf-actions .library-toggle-study{grid-column:2 / -1}
 body.library-reading .library-pdf-actions label{grid-column:1}
 body.library-reading .library-pdf-actions #libPage{grid-column:2;max-width:none;width:100%}
 body.library-reading .library-pdf-actions #libGotoPage{grid-column:3 / -1}
 body.library-reading .library-pdf-actions #libWide{display:none}
 body.library-reading .library-pdf-actions #libOpenPdf{grid-column:1 / 3}
 body.library-reading .library-pdf-actions #libDownloadPdf{grid-column:3 / -1}
 body.library-reading .library-pdf-host{height:calc(100dvh - 202px);min-height:470px}
 body.library-reading .library-reader-note{font-size:11px;padding:9px}
 body.library-reading .library-reader-help{padding:9px}
}
@media(prefers-reduced-motion:no-preference){body.library-reading .library-study{scroll-behavior:smooth}}

/* V5: An unmissable back-to-start button, visible on desktop, tablet and phone. */
.library-return-home{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:9px 14px;border-radius:9px;border:1px solid #0b5885;background:#145f94;color:#fff;font-size:14px;font-weight:800;cursor:pointer;white-space:nowrap;flex:none}
.library-return-home:hover{background:#0b4c79}
.library-return-home:focus-visible{outline:3px solid #ffbf52;outline-offset:3px}
@media(max-width:800px){body.library-reading .library-pdf-toolbar .library-return-home{width:100%;justify-content:flex-start;margin-bottom:4px}}
@media(max-width:540px){body.library-reading .library-pdf-toolbar .library-return-home{min-height:46px;font-size:15px}}

/* V8: iPad/iPhone continuous PDF reading, pagination and zoom. */
.library-pdf-host{position:relative;overflow:hidden}
.library-pdf-continuous{display:none;width:100%;height:100%;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable;background:#e4ebf2;padding:0 0 14px;touch-action:pan-y}
.library-continuous-active .library-pdf-continuous{display:block}
.library-continuous-active iframe{display:none!important}
.library-pdf-page{display:flex;justify-content:center;align-items:flex-start;position:relative;box-sizing:border-box;margin:0 auto 14px;background:#fff;max-width:calc(100% - 20px);box-shadow:0 2px 9px #102a4033;overflow:hidden}
.library-pdf-page-canvas{max-width:100%;display:block;object-fit:contain}
.library-pdf-load,.library-pdf-error{margin:22px auto;padding:25px;max-width:650px;border-radius:12px;background:#fff;color:#23465f;line-height:1.7}
.library-pdf-error{border-left:4px solid #a33}
.library-toggle-study[hidden],.library-floating-audio[hidden],body.library-not-bma .library-floating-audio{display:none!important}
@media(max-width:800px){
 body.library-reading .library-pdf-host{height:calc(100dvh - 250px);min-height:420px}
 body.library-reading .library-pdf-actions{display:flex!important;align-items:center;flex-wrap:wrap;gap:6px}
 body.library-reading .library-pdf-actions>*{grid-column:auto!important}
 body.library-reading .library-pdf-actions #libPage{max-width:76px!important;width:76px!important}
 body.library-reading .library-pdf-actions #libPrevPage,body.library-reading .library-pdf-actions #libNextPage{font-size:12px}
 body.library-reading .library-pdf-actions #libZoomIn,body.library-reading .library-pdf-actions #libZoomOut{min-width:38px}
}
@media(max-width:540px){
 body.library-reading .library-pdf-host{height:calc(100dvh - 300px);min-height:380px}
 body.library-reading .library-pdf-actions .library-toggle-study{max-width:100%}
 body.library-reading .library-pdf-actions #libViewerMode{font-size:11px}
}

.library-question-jump{display:inline-flex;align-items:center;gap:5px;flex-wrap:nowrap}
.library-question-jump input{max-width:62px}
.library-question-jump[hidden]{display:none!important}
@media(max-width:540px){.library-question-jump{flex:1 1 100%;justify-content:flex-start}}

/* V9: True vertical page scrolling for iPhone & iPad Safari.
   Pages are canvases, not Safari's single-page iframe. */
.library-pdf-continuous{
  overflow-y:scroll;
  overflow-x:auto;
  touch-action:pan-x pan-y;
  scroll-behavior:auto;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  scrollbar-color:#739eb4 #e9eff4;
}
.library-pdf-page{max-width:none;flex:0 0 auto;overflow:hidden}
.library-pdf-page-canvas{max-width:none;object-fit:fill}
.library-page-error{display:flex;align-items:center;justify-content:center;min-height:120px;padding:20px;color:#9b1c1c;text-align:center}
@media (max-width:1050px){
 body.library-reading .library-pdf-host{height:min(78dvh,900px);min-height:420px}
}
@media (max-width:540px){
 body.library-reading .library-pdf-host{height:65dvh;min-height:380px}
 body.library-reading .library-pdf-actions #libPrevPage,
 body.library-reading .library-pdf-actions #libNextPage,
 body.library-reading .library-pdf-actions #libGotoPage{min-height:42px}
 .library-pdf-continuous{padding-bottom:max(20px,env(safe-area-inset-bottom,0px))}
}

/* V10 visibility regression fix: respect JS hidden state even if the general .btn sets display:inline-flex.
   Keep ALL other PDF controls (page, scroll, zoom, download, search, nav) visible for the design books. */
body.library-reading .library-pdf-actions #libToggleStudy[hidden],
body.library-reading .library-pdf-actions #libQuestionJumpArea[hidden],
body.library-reading .library-floating-audio[hidden],
body.library-reading.library-not-bma .library-floating-audio,
.library-pdf-search-panel[hidden],
.library-search-form #libPdfSearchCancel[hidden]{display:none!important}
.library-pdf-search-panel{padding:10px 14px 12px;background:#f4f9fd;border-bottom:1px solid #bcd3df;color:#214760}
.library-search-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.library-search-form label{font-size:12px;font-weight:800}
.library-search-form input{flex:1 1 220px;min-width:110px;border:1px solid #a9c3d4;border-radius:8px;padding:9px 11px;font-size:15px;color:#142e40;background:#fff;min-height:40px}
.library-search-form .btn{padding:8px 12px;min-height:40px;font-size:13px}
.library-search-status{font-size:12px;line-height:1.5;padding:7px 1px;color:#425e76}
.library-search-status.error{color:#a52f31}
.library-search-results{display:grid;gap:5px;max-height:30vh;overflow-y:auto;overscroll-behavior:contain}
.library-search-result{width:100%;text-align:left;display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border:1px solid #c4d9e6;border-radius:7px;background:white;cursor:pointer;color:#184766;font-size:12px;line-height:1.55}
.library-search-result:hover,.library-search-result:focus-visible{background:#e6f4fc;border-color:#3f86b2}
.library-search-result strong{flex:none;white-space:nowrap;color:#0c5f88;font-size:12px}
.library-search-result span{display:block;overflow-wrap:anywhere;min-width:0}
.library-search-more{margin:8px 0;padding:8px 12px;border:1px solid #b9cad6;border-radius:8px;background:white;color:#175a84;cursor:pointer}
@media(max-width:800px){.library-pdf-search-panel{padding:9px 8px}.library-search-results{max-height:28dvh}}
@media(max-width:540px){.library-search-form input{flex-basis:100%;width:100%}.library-search-form label{flex-basis:100%}.library-search-results{max-height:28dvh}.library-search-result{padding:9px 8px}}

/* V11: floating PDF search that never steals vertical space from the reader. */
.library-pdf-panel{position:relative}
.library-pdf-search-panel:not([hidden]){
 display:flex;flex-direction:column;position:fixed;
 top:clamp(75px,12vh,145px);right:clamp(10px,2vw,30px);
 z-index:900;width:min(390px,calc(100vw - 24px));max-height:min(53dvh,540px);
 padding:12px 13px;background:rgba(250,253,255,.98);
 border:1px solid #93b8ce;border-radius:13px;
 box-shadow:0 12px 34px rgba(11,37,59,.28);
 backdrop-filter:blur(9px);
}
.library-pdf-search-panel .library-search-form{flex:none;gap:7px}
.library-pdf-search-panel .library-search-results{overflow-y:auto;min-height:0;max-height:none;flex:1;overscroll-behavior:contain}
.library-search-result{display:flex;flex-direction:column;gap:4px}
.library-search-result strong{font-size:12px}
.library-search-result span{display:block;font-size:12px}
.library-search-result:hover{background:#d9eefb}
/* Show a clear loading state instead of a white PDF page while a canvas is pending. */
.library-page-placeholder{
 align-self:center;margin:auto;text-align:center;color:#426b83;font-size:13px;
 border-radius:10px;padding:14px 20px;background:#eef5fa;box-shadow:0 0 0 1px #d7e5ee;
}
.library-pdf-page{isolation:isolate}
.library-page-highlights{position:absolute;left:0;top:0;z-index:4;pointer-events:none;overflow:hidden}
.library-page-highlight{
 position:absolute;transform-origin:left center;box-sizing:border-box;
 background:rgba(255,216,49,.49);box-shadow:0 0 0 1px rgba(186,126,0,.38);
 border-radius:2px;mix-blend-mode:multiply;
}
@media(max-width:800px){
 .library-pdf-search-panel:not([hidden]){top:max(76px,env(safe-area-inset-top,0px) + 58px);right:10px;max-height:min(48dvh,420px)}
 .library-pdf-search-panel .library-search-results{max-height:none}
}
@media(max-width:540px){
 .library-pdf-search-panel:not([hidden]){top:max(70px,env(safe-area-inset-top,0px) + 48px);max-height:46dvh}
 .library-pdf-search-panel .library-search-form input{flex-basis:100%;width:100%}
 .library-pdf-search-panel .library-search-results{max-height:none}
}
/* Native PDF mode is intentionally unavailable on iPhone/iPad: PDF.js is the usable reader. */
#libViewerMode[hidden]{display:none!important}

/* V13: prevent Safari scroll anchoring from undoing programmatic jumps. */
.library-pdf-continuous,.library-pdf-page{overflow-anchor:none!important;scroll-behavior:auto!important}
.library-pdf-page{contain:layout style;}

/* V14: continuous mode selected on iPad/iPhone/Safari, native toolbar remains on Chrome/Edge. */
.library-continuous-active #libPdfFrame{display:none!important}
.library-continuous-active .library-pdf-continuous{display:block!important}
body.library-reading #libViewerMode[hidden]{display:none!important}

/* V15: one controllable PDF.js reader on every platform. */
#libViewerMode{display:none!important}
.library-pdf-host #libPdfFrame{display:none!important}
.library-pdf-host .library-pdf-continuous{display:block!important}
