:root{color-scheme:light;--paper:#f6f5f1;--card:#fff;--ink:#252820;--muted:#64685e;--line:#dedfd6;--accent:#65502b;--soft:#eeeee5;--serif:"Noto Serif SC","Songti SC","SimSun",Georgia,serif;--sans:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select{cursor:pointer}button,a,input,select{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a9894b;outline-offset:3px}button{color:inherit}button:disabled{cursor:default}[hidden]{display:none!important}.wrap{max-width:1480px;margin:auto;padding:0 36px}.skip{position:fixed;top:-80px;left:16px;z-index:20;padding:12px;background:var(--ink);color:white}.skip:focus{top:12px}.topbar{border-bottom:1px solid var(--line);background:#fff}.topbar .wrap{min-height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-family:Georgia,serif;font-weight:bold;font-size:23px;letter-spacing:-.6px}.brand small{font-family:var(--sans);font-weight:400;font-size:13px;letter-spacing:2px;color:var(--muted);margin-left:18px}.toplinks{display:flex;gap:26px;font-size:14px}.toplinks a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:5px}.toplinks .current{font-weight:600;border-bottom:2px solid var(--accent)}.heading{padding:32px 0 23px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.eyebrow{font-size:12px;color:var(--accent);letter-spacing:2px;margin:0 0 7px}.heading h1{font-family:var(--serif);font-weight:600;font-size:36px;letter-spacing:2px;line-height:1.3;margin:0}.heading p{margin:10px 0 0;color:var(--muted);font-size:15px}.shelf-total{white-space:nowrap;color:var(--muted);font-size:14px}.shelf-total strong{font-family:Georgia,serif;font-size:32px;color:var(--ink);font-weight:400;margin-right:6px}.tools{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px 20px 16px}.search-row{display:flex;align-items:center;gap:12px}.searchbox{position:relative;flex:1;min-width:160px}.searchbox svg{position:absolute;left:15px;top:14px;width:20px;height:20px;color:#777c71;pointer-events:none}.searchbox input{width:100%;height:48px;border:1px solid #cdd0c4;border-radius:6px;background:#fafbf7;padding:0 48px 0 46px;color:var(--ink);font-size:16px}.searchbox input::placeholder{color:#757b6c}.clear-search{position:absolute;right:7px;top:7px;height:34px;width:34px;border:0;background:transparent;font-size:24px;border-radius:4px;color:var(--muted)}.control{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px;white-space:nowrap}.control select{height:46px;padding:0 31px 0 12px;border:1px solid var(--line);border-radius:6px;color:var(--ink);background:#fff;max-width:220px;font-size:14px}.categories{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0 0;padding:15px 0 0;border-top:1px solid #eeefe8}.category{border:0;border-radius:5px;padding:7px 12px;font-size:14px;background:transparent;color:#555d4e;white-space:nowrap}.category span{font-size:12px;margin-left:5px;opacity:.65}.category:hover{background:var(--soft)}.category[aria-pressed=true]{background:var(--ink);color:#fff}.results-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 15px;min-height:34px}.result-left{display:flex;align-items:center;gap:16px}.result-left h2{font-weight:600;font-size:18px;margin:0}.result-count{font-size:14px;color:var(--muted)}.reset{border:0;background:transparent;color:var(--accent);text-decoration:underline;text-underline-offset:3px;font-size:14px;padding:3px}.result-tools{display:flex;gap:16px;align-items:center}.sort select{border:0;background:transparent;height:34px;font-size:14px;color:var(--ink);max-width:145px}.view-toggle{display:flex;border:1px solid var(--line);padding:3px;border-radius:6px;background:#fff}.view-toggle button{border:0;background:transparent;color:var(--muted);border-radius:4px;padding:4px 9px;font-size:13px}.view-toggle button[aria-pressed=true]{background:var(--soft);color:var(--ink);font-weight:600}.book-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.book{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;padding:18px 16px 13px;transition:box-shadow .16s,border-color .16s}.book:hover{border-color:#a8ac9b;box-shadow:0 6px 18px #2b30220a}.book-main{display:flex;gap:14px;min-height:148px;align-items:flex-start}.cover{flex:none;width:82px;height:120px;display:flex;align-items:center;justify-content:center;background:#e9e9df;border:1px solid #e1e1d8;border-radius:2px;overflow:hidden;box-shadow:2px 3px 5px #24281d12}.cover img{width:100%;height:100%;display:block;object-fit:contain;background:#eeeee8}.cover .no-cover{font-family:var(--serif);font-size:15px;font-weight:600;text-align:center;padding:11px;line-height:1.6;overflow-wrap:anywhere;color:#5b604f}.book-copy{min-width:0;flex:1}.book-tag{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:0 0 8px;font-size:12px;color:var(--muted)}.book-tag .ordinal{font-family:Georgia,serif;color:#969c8b}.book h3{font-size:18px;line-height:1.55;font-weight:600;margin:0;overflow-wrap:anywhere;letter-spacing:.1px}.book h3 a:hover{text-decoration:underline;text-underline-offset:4px}.byline{font-size:13px;line-height:1.65;color:var(--muted);margin:7px 0 0;overflow-wrap:anywhere}.description{color:#72776a;font-size:13px;line-height:1.7;margin:11px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.book-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:13px 0 10px;padding-top:10px;border-top:1px solid #eeefe9;font-size:12px;color:var(--muted)}.reading-state{color:#4d654b}.reading-state.info{color:#74786d}.reading-state.preview{color:#80622b}.book-actions{display:flex;gap:10px;align-items:center}.read-button{background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:4px;padding:7px 12px;font-size:13px;font-weight:500;white-space:nowrap}.read-button:hover{background:#46513b}.read-button.secondary{background:#f4f5ee;border-color:#d8dccc;color:#45513c}.detail-button{font-size:13px;color:#5c6354;padding:7px 0;white-space:nowrap}.detail-button:hover{text-decoration:underline;text-underline-offset:4px}.pdf-link{margin-left:auto;font-size:12px;color:#727868;padding:7px 0}.pdf-link:hover{color:var(--ink)}.load-area{text-align:center;padding:30px 0 50px}.load-more{background:#fff;border:1px solid #bfc5b5;border-radius:5px;padding:12px 45px;font-size:15px}.load-more:hover{background:var(--soft)}.load-progress{font-size:13px;color:var(--muted);margin-top:10px}.empty{border:1px dashed var(--line);padding:55px 20px;text-align:center;border-radius:8px;background:#fff}.empty h3{font-size:20px;margin:0 0 8px}.empty p{color:var(--muted)}.empty button{margin-top:8px;border:1px solid var(--line);background:var(--ink);color:#fff;padding:9px 18px;border-radius:5px}.book-grid.list-view{grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}.list-view .book{display:grid;grid-template-columns:minmax(0,1fr) 112px 235px;align-items:center;gap:24px;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:15px 18px}.list-view .book-main{min-height:0;align-items:center}.list-view .cover{width:38px;height:52px;box-shadow:none}.list-view .cover .no-cover{font-size:8px;padding:2px}.list-view .book-copy{display:grid;grid-template-columns:minmax(0,1fr) 175px;gap:0 20px;align-items:center}.list-view .book-tag{grid-column:1/-1;margin:0 0 2px;justify-content:flex-start;gap:12px}.list-view .book h3{font-size:16px}.list-view .byline{margin:0;font-size:13px}.list-view .description{display:none}.list-view .book-meta{border:0;margin:0;padding:0;display:block}.list-view .book-meta .format{display:none}.list-view .book-actions{justify-content:flex-end}.list-view .pdf-link{margin-left:6px}footer{border-top:1px solid var(--line);padding:26px 0 35px;font-size:13px;color:var(--muted)}footer .wrap{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}footer a{text-decoration:underline;text-underline-offset:3px}.no-js{padding:12px 0;color:var(--muted);font-size:14px}
@media(min-width:1500px){.book-main{min-height:155px}.cover{width:92px;height:134px}}
@media(max-width:1180px){.book-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wrap{padding:0 26px}.brand small{display:none}.book-copy h3{font-size:17px}.list-view .book{grid-template-columns:minmax(0,1fr) 90px 235px;gap:12px}.list-view .book-copy{grid-template-columns:minmax(0,1fr) 125px}}
@media(max-width:860px){.book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.search-row{flex-wrap:wrap}.searchbox{flex-basis:100%}.control{flex:1}.control select{flex:1;max-width:none}.toplinks{gap:18px}.heading{padding-top:25px}.list-view .book{grid-template-columns:minmax(0,1fr) 185px}.list-view .book-meta{display:none}.list-view .book-copy{display:block}.list-view .byline{margin-top:3px}.list-view .pdf-link{display:none}.view-toggle{display:none}}
@media(max-width:560px){.wrap{padding:0 16px}.topbar .wrap{min-height:60px}.brand{font-size:21px}.toplinks a:nth-child(2){display:none}.toplinks{font-size:13px;gap:15px}.heading{gap:12px;padding:25px 0 20px}.heading h1{font-size:29px}.heading p{font-size:13px;max-width:245px}.eyebrow{font-size:10px;letter-spacing:1.5px}.shelf-total{font-size:12px}.shelf-total strong{font-size:26px}.tools{padding:14px 12px 12px}.searchbox input{font-size:14px}.control{font-size:12px;gap:5px}.control select{font-size:13px;min-width:0;padding-left:8px;padding-right:15px;width:100%}.categories{gap:4px;margin-top:12px;padding-top:12px}.category{font-size:12px;padding:6px 8px}.category span{display:none}.results-bar{margin:20px 0 12px;align-items:flex-start}.result-left{flex-wrap:wrap;gap:2px 9px}.result-left h2{font-size:17px}.result-count{font-size:12px}.result-tools{gap:0}.sort{font-size:12px}.sort select{font-size:12px;width:100px}.sort>span{display:none}.book-grid{gap:10px}.book{padding:12px 11px 11px;border-radius:6px}.book-main{display:flex;flex-direction:column;gap:12px;min-height:0;align-items:stretch}.cover{width:100%;height:160px;background:#f0f0e8;box-shadow:none;border:0}.cover img{object-fit:contain}.cover .no-cover{font-size:19px;max-width:130px;line-height:1.7}.book-tag{font-size:10px;margin-bottom:6px}.book-copy h3{font-size:15px;line-height:1.5;min-height:45px}.byline{font-size:12px;margin-top:7px;min-height:20px}.description{display:none}.book-meta{margin-top:auto;padding-top:9px;font-size:11px;border:0;min-height:31px}.book-meta .format{display:none}.book-actions{gap:7px;flex-wrap:wrap}.read-button{font-size:12px;padding:7px 9px;flex:1;text-align:center}.detail-button{font-size:12px;padding:6px 0}.pdf-link{display:none}.book .book-meta{margin-bottom:6px}.book-main{margin-bottom:8px}.list-view .book{padding:12px 8px;grid-template-columns:minmax(0,1fr);gap:10px}.list-view .book-main{flex-direction:row;gap:10px;margin:0}.list-view .cover{width:38px;height:52px;flex:none}.list-view .book h3{min-height:0;font-size:15px}.list-view .book-actions{justify-content:flex-start;margin-left:48px;max-width:230px}.load-more{width:100%;padding:12px}.load-area{padding-bottom:32px}.result-left .reset{font-size:12px}footer{font-size:12px}.js-tools[hidden]{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Keep flip reading and chapter reading separate and visible. */
.book-actions{flex-wrap:wrap;gap:6px 12px}.book[data-flip=true] .read-button{flex-basis:100%;text-align:center}.list-view .book[data-flip=true] .read-button{flex-basis:auto}

/* ============================================================
   墨金主题 · 2026-09-19
   覆盖层：让书架与全站（深墨底 · 金线 · 宣纸字）同一副面孔。
   只追加、不改上面的规则，回退时删掉本段即可。
   ============================================================ */
:root{
  color-scheme:dark;
  --paper:#0F0B07;
  --card:#1A1410;
  --ink:#F5EFE0;
  --muted:#A99B7E;
  --line:rgba(212,178,94,.22);
  --accent:#D4B25E;
  --soft:#221B14;
  --gold:#D4B25E;
  --gold2:#B8901F;
  --cream:#F5EFE0;
}
html{background:var(--paper)}
body{
  background:
    radial-gradient(1200px 600px at 50% -200px, rgba(212,178,94,.07), transparent 70%),
    linear-gradient(180deg,#0F0B07 0%,#14100B 60%,#0F0B07 100%);
  color:var(--ink);
}
a{color:var(--gold)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* 顶栏 */
.topbar{background:rgba(15,11,7,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{color:var(--cream)}
.brand small{color:var(--muted)}
.toplinks a{color:var(--muted)}
.toplinks a:hover{color:var(--gold)}
.toplinks .current{color:var(--gold);border-bottom:1px solid var(--gold)}

/* 标题区 */
.eyebrow{color:var(--gold2);letter-spacing:.22em}
.heading h1{color:var(--cream);font-weight:600;letter-spacing:.04em}
.heading p{color:var(--muted)}
.shelf-total{color:var(--muted)}
.shelf-total strong{color:var(--gold);font-weight:500}

/* 工具区：搜索、筛选、分类 */
.tools{background:rgba(26,20,16,.7);border:1px solid var(--line);border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.35)}
.searchbox input{background:#0F0B07;border:1px solid rgba(212,178,94,.35);color:var(--cream)}
.searchbox input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(212,178,94,.12)}
.searchbox input::placeholder{color:#7d7259}
.searchbox svg{color:var(--gold2)}
.control{color:var(--muted)}
.control select,.sort select{background:#0F0B07;border:1px solid rgba(212,178,94,.35);color:var(--cream)}
.categories{border-top:1px solid var(--line)}
.category{color:var(--muted);border:1px solid transparent}
.category span{color:#7d7259}
.category:hover{color:var(--gold);border-color:rgba(212,178,94,.35);background:rgba(212,178,94,.06)}
.category[aria-pressed=true]{background:var(--gold);color:#1A1410;border-color:var(--gold)}
.category[aria-pressed=true] span{color:#3a2e12}
.clear-search{color:var(--muted)}
.results-bar{border-bottom:1px solid var(--line)}
.result-left h2{color:var(--cream);font-weight:500}
.result-count{color:var(--muted)}
.sort>span{color:var(--muted)}
.view-toggle{background:#0F0B07;border:1px solid rgba(212,178,94,.3)}
.view-toggle button{color:var(--muted)}
.view-toggle button[aria-pressed=true]{background:var(--gold);color:#1A1410}

/* 书卡：像立在暗架上的书 */
.book{
  background:linear-gradient(180deg,rgba(245,239,224,.035),rgba(245,239,224,.015));
  border:1px solid var(--line);
  border-radius:6px;
  box-shadow:0 8px 24px rgba(0,0,0,.35), inset 0 1px 0 rgba(212,178,94,.06);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.book:hover{transform:translateY(-3px);border-color:rgba(212,178,94,.55);box-shadow:0 16px 40px rgba(0,0,0,.5),0 0 0 1px rgba(212,178,94,.18)}
.cover{background:#221B14;border:1px solid rgba(212,178,94,.18);box-shadow:4px 6px 14px rgba(0,0,0,.55)}
.cover img{background:#221B14}
.cover .no-cover{color:var(--muted);background:linear-gradient(160deg,#2A2118,#1A1410)}
.book-tag{color:var(--gold2);letter-spacing:.08em}
.book-tag .ordinal{color:#7d7259}
.book h3,.book-copy h3{color:var(--cream);font-weight:600}
.book h3 a:hover{color:var(--gold)}
.byline{color:var(--muted)}
.description{color:#B9AC93}
.book-meta{border-top:1px solid var(--line)}
.book-meta .format{color:var(--muted)}
.reading-state{color:#CFC29F}
.reading-state.info{color:#7d7259}
.reading-state.preview{color:var(--gold2)}

/* 按钮 */
.read-button{background:var(--gold);color:#1A1410;border:1px solid var(--gold);font-weight:600;letter-spacing:.06em}
.read-button:hover{background:#E4C878;border-color:#E4C878;color:#1A1410}
.read-button.secondary{background:transparent;border-color:rgba(212,178,94,.45);color:var(--gold)}
.read-button.secondary:hover{background:rgba(212,178,94,.1)}
.detail-button{color:var(--muted);border-color:transparent}
.detail-button:hover{color:var(--gold)}
.pdf-link{color:var(--muted)}
.pdf-link:hover{color:var(--gold)}
.load-more{background:transparent;border:1px solid rgba(212,178,94,.45);color:var(--gold)}
.load-more:hover{background:rgba(212,178,94,.1)}
.load-progress{color:var(--muted)}
.empty{background:var(--card);border:1px solid var(--line)}
.empty h3{color:var(--cream)}
.empty p{color:var(--muted)}
.empty button{background:var(--gold);color:#1A1410}
.no-js{color:var(--muted)}

/* 列表视图 */
.list-view .book{background:rgba(245,239,224,.025)}
.list-view .cover{box-shadow:3px 4px 10px rgba(0,0,0,.5)}

/* 页脚 */
footer{border-top:1px solid var(--line);color:var(--muted)}
footer a{color:var(--gold2)}

/* 书生 · 2026-10-03：每本有全文的专著配一个智能体入口（只追加） */
.agent-link{flex-basis:100%;order:9;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:2px;padding:7px 10px;border:1px dashed rgba(212,178,94,.55);border-radius:6px;color:var(--gold,#D4B25E);font-size:13px;letter-spacing:.06em;white-space:nowrap}
.agent-link::before{content:"✦";font-size:11px;opacity:.85}
.agent-link:hover{border-style:solid;background:rgba(212,178,94,.08)}
.list-view .agent-link{flex-basis:auto;order:0;margin-top:0}

.learn-intro{margin:14px 0 18px;padding:12px 16px;border:1px solid rgba(212,178,94,.4);border-left:3px solid var(--gold,#D4B25E);border-radius:6px;font-size:14px;line-height:1.8}
.learn-intro>strong{display:block;color:var(--gold,#D4B25E);letter-spacing:.1em;font-size:13px}
.learn-intro p{margin:2px 0 0}
.learn-intro .learn-list a{margin-right:.6em;text-decoration:underline;text-underline-offset:3px}
.learn-link{flex-basis:100%;order:8;display:flex;align-items:center;justify-content:center;gap:6px;margin-top:2px;padding:7px 10px;border:1px solid rgba(212,178,94,.55);border-radius:6px;color:var(--gold,#D4B25E);font-size:13px;letter-spacing:.06em;white-space:nowrap}
.learn-link::before{content:"✎";font-size:12px}
.learn-link:hover{background:rgba(212,178,94,.1)}
.list-view .learn-link{flex-basis:auto;order:0;margin-top:0}

/* Happiness agent narrow-card label fit 20261008 */
@media(max-width:560px){.book[data-id="happiness-secret"] .agent-link{display:block;white-space:normal;min-width:0;max-width:100%;text-align:center;line-height:1.7}.book[data-id="happiness-secret"] .agent-link::before{margin-right:.35em}}

/* Happiness publishing unit: reading / learning / intelligent dialogue. */
.book[data-id="happiness-secret"] .publication-unit-actions{display:flex;flex-direction:column;align-items:stretch;gap:7px}
.book[data-id="happiness-secret"] .publication-unit-label{order:0;flex-basis:auto;margin:0 0 2px;font-size:11px;letter-spacing:.07em;color:var(--muted)}
.book[data-id="happiness-secret"] .publication-unit-actions>a{display:flex;flex-basis:auto;width:100%;margin:0;min-height:44px;align-items:center;justify-content:center;white-space:normal;text-align:center;overflow-wrap:anywhere;line-height:1.55;padding:8px 7px}
.book[data-id="happiness-secret"] [data-unit-action="read"]{order:1}
.book[data-id="happiness-secret"] [data-unit-action="learn"]{order:2}
.book[data-id="happiness-secret"] [data-unit-action="agent"]{order:3}
.book[data-id="happiness-secret"] .unit-secondary{order:4;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.book[data-id="happiness-secret"] .ordinal{font-family:var(--sans);font-size:11px;letter-spacing:0;white-space:normal}
