/* Doxa 知识文库 · one cover system, original vector art for every title. */
.doxa-library{--math-indigo:#1e2a78;--math-indigo-deep:#151d55;--math-green:#15a06a;--math-paper:#faf8f2;--math-ink:#14161f;--math-muted:#5a5e70;--math-faint:#8b8f9c;--math-line:#e4e1d8;--math-surface:#fff}
.shelf-shell{max-width:1120px;box-sizing:border-box;margin:0 auto;padding:0 24px}
.ai-shelf-hero{padding:40px max(24px,calc((100% - 1072px)/2)) 34px;background:#f4f2eb;border-bottom:1px solid #e4e1d8}
.ai-shelf-hero .faculty-hero-logo{display:block;width:64px;height:64px;object-fit:contain;margin-bottom:20px}
.ai-shelf-hero .eyebrow{font-size:12px;color:#606579;letter-spacing:.05em;margin-bottom:12px}
.ai-shelf-hero h1{font-family:var(--font-serif);font-size:clamp(30px,4vw,46px);line-height:1.25;color:#1e2a78;margin:0 0 14px}
.ai-shelf-hero .lead{max-width:740px;color:#606579;line-height:1.8;margin:0;font-size:16px}
.doxa-cover{width:100%;aspect-ratio:2/3;overflow:hidden;background:#f0f2ef;box-shadow:0 2px 3px #18213a0a,0 12px 26px #18213a12;transition:transform .22s ease,box-shadow .22s ease}
.doxa-cover img{display:block;width:100%;height:auto;aspect-ratio:2/3;max-width:none}
.cover-link{display:block;text-decoration:none;color:inherit}
.cover-link:hover .doxa-cover{transform:translateY(-5px);box-shadow:0 3px 5px #18213a0a,0 18px 30px #18213a1c}
.cover-link:focus-visible,.book-info:focus-visible,.library-filter:focus-visible{outline:3px solid #15815b;outline-offset:5px}
.doxa-library .shelf-books,.doxa-library .volume-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px 28px;align-items:start}
.doxa-library .book,.doxa-library .volume-card{height:auto;min-height:0;width:100%;display:block;position:relative;border:0;background:none;box-shadow:none;overflow:visible;padding:0;perspective:none;transform:none;color:inherit;text-align:left;cursor:default}
.doxa-library .book::before,.doxa-library .book::after{display:none}
.doxa-library .book-inner{height:auto;aspect-ratio:auto;transform:none;position:relative}
.doxa-library .book-face{position:static;display:block;height:auto;min-height:0;backface-visibility:visible;transform:none}
.doxa-library .book-front .book-desc,.doxa-library .volume-body{height:auto;min-height:0;max-height:none;padding:17px 0 0;display:block;background:none;overflow:visible;line-height:1.7}
.doxa-library .book-summary,.doxa-library .volume-body>p{font-size:13px;color:#606579;line-height:1.7;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;height:3.4em;min-height:3.4em;max-height:3.4em;overflow:hidden;margin:0}
.book-cover-foot,.volume-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;position:static;margin-top:13px;padding-top:11px;border-top:1px solid #deded7}
.book-read,.volume-open{color:#1e2a78;font-size:13px;font-weight:600;text-decoration:none;line-height:1.5}
.book-read:hover,.volume-open:hover{text-decoration:underline;text-underline-offset:4px}
.book-info{font:inherit;line-height:1.5;font-size:12px;border:0;background:none;color:#606579;padding:6px 0 6px 6px;cursor:pointer}
.book-info:hover{color:#1e2a78}
.book-back{display:none!important;box-sizing:border-box;background:#fffdf8;border:1px solid #d8dadf;padding:20px;min-height:390px!important}
.book.is-flipped .book-front{display:none}
.book.is-flipped .book-back{display:flex!important;flex-direction:column;gap:18px}
.book-back .book-info{align-self:flex-end}
.book-meta{margin:0;display:flex;flex-direction:column;gap:12px;overflow-wrap:anywhere}
.meta-row{display:flex;flex-direction:column;gap:4px;font-size:12px;line-height:1.6}
.meta-k{color:#767c8e}.meta-v{color:#1e2a78}.meta-v.mono{font-family:var(--font-mono,monospace)}
.meta-chips{display:flex;flex-wrap:wrap;gap:6px}.meta-chips .chip{font-size:11px;padding:3px 7px;background:#edf0f6;color:#1e2a78;border-radius:3px}
.meta-chapters{padding:12px 0 0;margin:0;border-top:1px solid #e0e1e4;list-style:none}.meta-chapters li{display:flex;gap:8px;font-size:11px;line-height:1.8}.meta-chapters .idx{color:#73798a}.meta-empty,.meta-more{font-size:12px;color:#686e80;margin:0}
.book-open{display:block;margin-top:auto;padding:10px 12px;background:#1e2a78;color:#fff;text-align:center;text-decoration:none;font-size:13px;border-radius:3px}
.shelf{margin-top:42px}.shelf-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;border-bottom:1px solid #d8d8d0;padding-bottom:13px;margin-bottom:24px}.shelf-index{color:#73798a;font-size:12px;font-family:var(--font-mono,monospace)}.shelf-title{margin:0;font-family:var(--font-serif);font-size:24px;color:#1e2a78}.shelf-desc{margin:0;color:#73798a;font-size:13px}
.shelf-note{margin-top:24px;padding:14px 18px;border-left:3px solid #1e2a78;background:#eef0f5;color:#606579;font-size:14px;line-height:1.8}.shelf-note b{color:#1e2a78}.shelf-legend{display:flex;gap:12px 24px;flex-wrap:wrap;margin:18px 0;color:#606579;font-size:12px;line-height:1.8}.shelf-legend .lg{display:inline-flex;align-items:center;gap:6px}.shelf-legend .lg-label{font-weight:600;color:#1e2a78}.shelf-toolbar{display:flex;justify-content:space-between;align-items:center;margin-top:26px;font-size:14px;color:#606579}.hub-note{font-size:13px;color:#606579;line-height:1.8;margin:30px 0 40px}
.library-shell{max-width:1120px;margin:0 auto;padding:0 24px}.library-hero{padding:46px 0 34px;background:#f4f2eb;border-bottom:1px solid #e4e1d8}.library-hero-grid{display:grid;grid-template-columns:64px minmax(0,1fr);gap:24px;align-items:start}.library-hero-logo{width:58px;height:58px;object-fit:contain}.library-eyebrow{font-size:11px;letter-spacing:.12em;color:#1e2a78;font-weight:600;margin:0 0 10px}.library-hero h1{font-family:var(--font-serif);font-size:clamp(30px,4vw,46px);color:#1e2a78;line-height:1.2;margin:0 0 14px}.library-hero p{margin:0;max-width:740px;color:#606579;line-height:1.8}.library-note{font-size:13px;line-height:1.8;padding:16px 18px;margin-top:24px;border-left:3px solid #1e2a78;background:#fffdf8;color:#606579}.library-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding:25px 0;border-bottom:1px solid #dddcd5}.library-count{font-size:13px;color:#606579}.library-filters{display:flex;gap:8px;flex-wrap:wrap}.library-filter{font:inherit;font-size:12px;padding:7px 12px;border:1px solid #d1d4df;background:#fffdf8;color:#1e2a78;border-radius:3px;cursor:pointer}.library-filter.is-active,.library-filter:hover{color:#fff;background:#1e2a78;border-color:#1e2a78}
.volume-shelf{padding-top:36px}.volume-shelf-head{display:flex;align-items:baseline;gap:14px;padding-bottom:13px;margin-bottom:24px;border-bottom:1px solid #d8d8d0}.volume-shelf-head h2{font-family:var(--font-serif);font-size:24px;color:#1e2a78;margin:0}.volume-shelf-head p{font-size:12px;color:#73798a;margin:0}.volume-meta{display:flex;gap:6px;margin:9px 0}.volume-chip{font-size:11px;color:#606579}.volume-number{font-size:11px;color:#606579}.library-footer-note{font-size:13px;line-height:1.8;color:#606579;padding:28px 0 48px}
/* Detail pages reuse exactly the same cover asset as the shelf. */
.doxa-library .vol-cover{width:100%;max-width:280px;height:auto;min-height:0;aspect-ratio:2/3;padding:0;background:none;border-radius:0;box-shadow:none;transform:none;overflow:visible;display:block}
.doxa-library .vol-cover::before,.doxa-library .vol-cover::after{display:none}
@media(max-width:1000px){.doxa-library .shelf-books,.doxa-library .volume-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:34px 22px}}
@media(max-width:700px){.doxa-library .shelf-books,.doxa-library .volume-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 18px}.library-hero-grid{grid-template-columns:1fr;gap:16px}.library-shell{padding:0 20px}.book-back{padding:14px;min-height:340px!important}.shelf-title,.volume-shelf-head h2{font-size:21px}.doxa-library .book-summary,.doxa-library .volume-body>p{font-size:12px}}
@media(max-width:359px){.doxa-library .shelf-books,.doxa-library .volume-grid{gap:26px 12px}.library-shell{padding:0 16px}.book-cover-foot{align-items:flex-start;gap:2px;flex-wrap:wrap}.book-info{padding-left:0}.book-read,.volume-open{font-size:12px}}
@media(prefers-reduced-motion:reduce){.doxa-cover{transition:none}.cover-link:hover .doxa-cover{transform:none}}
