/* The library: text stays selectable and every book is a real link. */
:root { --paper:#f3eee3; --ink:#363a30; --muted:#747363; --line:#d8d0bf; --accent:#5a653e; --soft:#eae4d6; --wood:#bca081; --shelf-edge:#927b61; --page:#faf5e8; }
html[data-theme='dark'] { --paper:#242721; --ink:#e8e1cf; --muted:#b5b29f; --line:#4b4b3d; --accent:#bdc39b; --soft:#303329; --wood:#716049; --shelf-edge:#4a3d2e; --page:#32352b; }
body { background-image:url('/paper-grain.svg'),radial-gradient(ellipse at 15% 3%,#ffffff42,transparent 65%); background-size:180px 180px,100% 100%; }
.shell { max-width:1080px; padding:0 46px; }
.site-header { padding:32px 0 24px; align-items:center; }
.wordmark { display:block; font-size:32px; letter-spacing:-1.8px; line-height:1; }
.wordmark .wordmark-caption { display:block; margin-top:9px; font:9px var(--sans); letter-spacing:1.4px; text-transform:uppercase; color:var(--muted); }
nav { gap:29px; font-size:13px; }
.intro { position:relative; max-width:none; padding:48px 160px 42px 0; }
.intro h1 { font-size:clamp(48px,6vw,70px); letter-spacing:-3px; line-height:1; margin-bottom:20px; }
.intro .eyebrow { font-size:10px; letter-spacing:1.9px; margin-bottom:20px; }
.intro .lede { font-size:18px; line-height:1.65; color:var(--muted); }
.library-stamp { position:absolute; top:65px; right:12px; display:grid; justify-items:center; gap:9px; width:109px; padding:13px 9px 12px; border:1px solid #929375; outline:1px solid #929375; outline-offset:-5px; transform:rotate(6deg); color:#798061; opacity:.85; }
.library-stamp span { font:9px var(--serif); letter-spacing:2px; }
.library-stamp svg { width:62px; height:42px; }
.section-heading { border-top-color:var(--line); padding-top:18px; }
.section-heading > div:first-child { display:flex; align-items:baseline; gap:15px; }
.section-heading h2 { font:21px var(--serif); letter-spacing:-.3px; }
.section-number { font:italic 13px var(--serif); color:var(--muted); }
.view-switch { display:flex; gap:16px; align-items:center; }
.view-switch button { background:none; border:0; padding:5px 0; color:var(--muted); font-size:11px; }
.view-switch button[aria-pressed='true'] { color:var(--ink); box-shadow:0 1px 0 currentColor; }
.archive-tools { margin:21px 0 2px; gap:20px; }
.search-field input { background:transparent; border-width:0 0 1px; border-radius:0; padding:10px 0; font-size:13px; }
.outline-button { padding:8px 0 8px 15px; border:0; font:italic 14px var(--serif); }
.outline-button:hover { background:none; text-decoration:underline; }
.archive-filters { border-bottom:0; padding-bottom:0; gap:10px; }
.archive-filters select { font-size:11px; }
.result-count { font-family:var(--serif); font-style:italic; font-size:12px; }
.shelf-room { margin:10px -14px 0; padding:0 0 24px; }
.bookshelf { list-style:none; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:63px 0; padding:0; margin:0; }
.shelf-item { position:relative; min-width:0; height:330px; padding:34px 16px 13px; display:flex; align-items:flex-end; justify-content:center; }
.shelf-item::after { content:''; position:absolute; z-index:2; left:0; right:0; bottom:0; height:13px; background:url('/paper-grain.svg'),repeating-linear-gradient(0deg,transparent 0 2px,#503f2920 3px,transparent 4px 6px),linear-gradient(0deg,var(--shelf-edge),var(--wood) 45%,#dac1a0 85%,#e4cfae); border-bottom:1px solid #75644a55; box-shadow:0 3px 3px #44301625,0 12px 13px -4px #37210d30; }
.shelf-item:first-child::after { border-radius:2px 0 0 2px; }
.shelf-item:last-child::after { border-radius:0 2px 2px 0; }
.bound-book { --cloth:#536247; --foil:#e9dcc0; position:relative; display:block; width:177px; height:264px; max-width:100%; transform:rotate(var(--lean)); transform-origin:center bottom; color:var(--foil); text-decoration:none; transition:transform 230ms ease,filter 230ms ease; z-index:1; border-radius:3px 5px 5px 3px; box-shadow:8px 7px 9px -5px #30200f66,2px 1px 2px #1d160c59; }
.bound-book:hover,.bound-book:focus-visible { transform:translateY(-13px) rotate(0deg); z-index:3; text-decoration:none; filter:brightness(1.045); }
.binding-moss { --cloth:#4c5a43; --foil:#e3d8b8; }
.binding-oxblood { --cloth:#704a43; --foil:#efdab9; }
.binding-ochre { --cloth:#af8b4e; --foil:#302f24; }
.binding-indigo { --cloth:#465661; --foil:#ebdbc0; }
.book-size-0 { height:262px; width:172px; }
.book-size-1 { height:279px; width:185px; }
.book-size-2 { height:249px; width:175px; }
.book-cover { position:absolute; inset:0 4px 0 0; z-index:1; display:flex; flex-direction:column; align-items:center; padding:25px 15px 14px 23px; overflow:hidden; text-align:center; background:url('/paper-grain.svg'),linear-gradient(90deg,#0004,#ffffff08 3%,#0002 5%,transparent 8%,#ffffff10 9%,transparent 12%,transparent 96%,#0002),var(--cloth); border-radius:3px 3px 2px 3px; box-shadow:inset 0 1px 1px #ffffff45,inset 0 -1px 1px #0003; }
.book-cover::after { content:''; position:absolute; inset:12px 10px 10px 17px; border:1px solid currentColor; opacity:.22; pointer-events:none; }
.book-pages { position:absolute; top:3px; right:0; bottom:3px; width:7px; border:1px solid #b8ac90; border-left:0; background:repeating-linear-gradient(0deg,#d9cdb7,#f3e9d5 1px,#d9cdb7 2px); border-radius:0 3px 3px 0; }
.cover-kicker { display:block; flex:0 0 auto; font:7px/1.5 var(--sans); letter-spacing:1.6px; text-transform:uppercase; opacity:.8; margin:0 0 13px; }
.cover-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:5; overflow:hidden; font:23px/1.1 var(--serif); letter-spacing:-.65px; text-wrap:balance; flex:0 0 auto; }
.long-title .cover-title { font-size:19px; line-height:1.18; letter-spacing:-.4px; }
.cover-ornament { display:block; min-height:19px; height:58px; flex:1 1 58px; max-height:65px; margin:8px 0 6px; opacity:.7; }
.cover-ornament svg { display:block; height:100%; width:77px; }
.cover-author { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; max-width:100%; font:10px/1.4 var(--serif); flex:0 0 auto; }
.cover-imprint { font:6px var(--sans); letter-spacing:1.8px; margin-top:auto; padding-top:12px; opacity:.7; }
.paper-binding { --cloth:#e1d5b6; --foil:#4a5140; }
.paper-binding .book-cover { border-left:13px solid #637056; padding-left:12px; background:url('/paper-grain.svg'),linear-gradient(90deg,#48382016,transparent 15%,#fff2),var(--cloth); }
.paper-binding .book-cover::after { inset:14px 10px; }
.paper-binding .cover-kicker { border-bottom:1px solid #52604465; padding-bottom:8px; width:90%; }
.bookmarked::before { content:''; position:absolute; z-index:3; top:-3px; right:22px; width:10px; height:22px; background:#8b4637; clip-path:polygon(0 0,100% 0,100% 100%,50% 76%,0 100%); box-shadow:1px 1px 1px #0002; }
.shelf-caption { position:absolute; top:100%; margin:19px 3px 0; max-width:94%; text-align:center; font:italic 11px/1.4 var(--serif); color:var(--muted); }
.shelf-caption > span:first-child { font-style:normal; }
.shelf-foot { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:36px; }
.shelf-invitation { font:italic 12px var(--serif); color:var(--muted); margin:0; }
.text-link { font-size:11px; text-decoration:none; }
.draft-banner { margin:23px 0 0; padding:12px 0 0; background:transparent; border-top:1px dotted var(--line); }
.draft-banner p,.draft-banner .text-button { font-size:11px; }
.collection-tools { margin-top:12px; font-size:11px; color:var(--muted); }
.collection-tools summary { cursor:pointer; width:fit-content; padding:4px 0; }
.collection-tools summary span { opacity:.75; margin-left:8px; font-style:italic; font-family:var(--serif); }
.undo-button { margin-top:15px; }
.archive-list { margin-top:20px; }
.archive-list .archive-entry { background:url('/paper-grain.svg'),var(--page); border:1px solid var(--line); border-bottom:0; padding:24px; }
.archive-list .archive-entry:last-child { border-bottom:1px solid var(--line); }
.desk-section { margin-top:52px; }
.desk-objects { display:grid; grid-template-columns:1fr 1fr; gap:48px; padding:38px 33px 21px; }
.desk-objects a { text-decoration:none; color:#403f30; position:relative; display:block; min-height:229px; transition:transform 200ms ease; }
.desk-objects a:hover { transform:translateY(-5px) rotate(0deg); }
.desk-notebook { padding:24px 25px 17px 35px; transform:rotate(-2deg); background:url('/paper-grain.svg'),linear-gradient(90deg,#4c5841 0 14px,#0002 14px,transparent 17px),#d9d6b7; border-radius:2px 5px 5px 2px; box-shadow:2px 2px 0 #ece5d6,3px 3px 0 #bbb39f,5px 8px 14px #463a2520; }
.notebook-label { border:1px solid #82886a77; display:block; padding:14px 18px 15px; }
.object-kicker { display:block; font:8px var(--sans); letter-spacing:1.7px; margin-bottom:14px; }
.desk-objects strong { display:block; font:27px/1.06 var(--serif); letter-spacing:-.6px; margin-bottom:12px; }
.object-subtitle { font:italic 12px var(--serif); display:block; }
.object-foot { display:flex; justify-content:space-between; gap:12px; font:10px var(--sans); margin-top:19px; opacity:.75; }
.desk-folder { transform:rotate(2deg); margin:7px 0 -7px; }
.folder-tab { position:absolute; top:-14px; left:0; background:#c1a77a; border-radius:6px 6px 0 0; height:35px; width:154px; padding:10px 16px; font:7px var(--sans); letter-spacing:1px; }
.folder-paper { position:absolute; inset:8px 12px 8px; background:repeating-linear-gradient(0deg,transparent,transparent 17px,#929b7525 18px),#faf6e9; box-shadow:1px -1px 0 #d6ccba; transform:rotate(-3deg); }
.folder-front { position:relative; display:block; margin-top:20px; padding:24px 25px 18px; background:url('/paper-grain.svg'),linear-gradient(10deg,#a5885730,transparent),#d7be90; border-radius:2px 6px 3px 3px; border-top:1px solid #e3cda7; box-shadow:1px 1px 1px #84715470,5px 8px 14px #463a2520; }
.folder-front .object-kicker { font-family:monospace; letter-spacing:1px; }
.folder-front strong { font-size:28px; }
.reading-dialog { width:min(790px,calc(100% - 36px)); max-height:calc(100dvh - 44px); padding:0; border:0; border-radius:3px 8px 8px 3px; overflow:auto; background:var(--page); color:var(--ink); box-shadow:0 25px 80px #0005,3px 3px 0 #b5a78b; }
.reading-dialog::backdrop { background:#29251970; backdrop-filter:blur(3px); }
.close-reading { position:sticky; top:0; z-index:2; display:flex; align-items:center; gap:10px; margin-left:auto; padding:12px 20px; border:0; color:var(--muted); background:var(--page); font:11px var(--sans); }
.close-reading span { font:24px var(--serif); }
.reading-spread { display:grid; grid-template-columns:1fr 1fr; min-height:395px; background:url('/paper-grain.svg'),linear-gradient(90deg,transparent 47%,#3c291115 49.8%,#fff2 50%,#3c29110a 51%,transparent 54%); }
.reading-card-title,.reading-card-notes { padding:22px 36px 36px; display:flex; flex-direction:column; }
.card-label { font-size:9px; line-height:1.5; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted); margin:0 0 28px; }
.card-label span { padding:0 6px; }
.reading-card-title h2 { font:34px/1.1 var(--serif); letter-spacing:-1px; margin:0 0 21px; overflow-wrap:anywhere; }
.card-author { font:14px/1.5 var(--serif); color:var(--muted); margin:0 0 16px; }
.card-progress { font:italic 13px var(--serif); margin:0 0 30px; }
.source-link { margin-top:auto; font:13px var(--sans); align-self:flex-start; }
.card-note { font:18px/1.7 var(--serif); margin:0 0 24px; white-space:pre-wrap; overflow-wrap:anywhere; }
.card-note.unwritten { color:var(--muted); font-style:italic; }
.card-subjects { display:flex; flex-wrap:wrap; gap:7px 16px; font:11px var(--sans); color:var(--accent); margin:auto 0 20px; }
.card-date { font:10px/1.6 var(--sans); color:var(--muted); margin:0; }
.reading-card-notes .text-button { align-self:flex-start; margin-top:19px; }
.site-footer { margin-top:49px; }
.page-heading { padding-top:46px; }
@media(max-width:850px) and (min-width:621px) {
  .shell { padding:0 32px; }
  .shelf-item { padding-left:9px; padding-right:9px; height:302px; }
  .bound-book { height:241px; }
  .book-size-1 { height:255px; }
  .book-size-2 { height:236px; }
  .book-cover { padding:19px 10px 11px 17px; }
  .cover-title { font-size:20px; }
  .long-title .cover-title { font-size:16px; }
  .cover-kicker { letter-spacing:1px; font-size:6px; }
  .cover-author { font-size:9px; }
  .cover-imprint { letter-spacing:1px; font-size:5px; }
  .cover-ornament { margin:5px 0; }
  .desk-objects { gap:29px; padding-left:16px; padding-right:16px; }
  .notebook-label { padding:14px 12px; }
}
@media(max-width:620px) {
  .shell { padding:0 23px; }
  .site-header { gap:22px; padding:25px 0 21px; }
  .wordmark { font-size:31px; }
  .wordmark .wordmark-caption { font-size:7px; letter-spacing:1px; }
  nav { gap:16px; font-size:12px; }
  .intro { padding:40px 74px 36px 0; }
  .intro .eyebrow { font-size:8px; line-height:1.8; max-width:235px; }
  .intro h1 { font-size:53px; letter-spacing:-2px; }
  .intro .lede { font-size:16px; }
  .desktop-break { display:none; }
  .library-stamp { top:50px; right:0; width:61px; padding:11px 5px 10px; gap:5px; }
  .library-stamp span { font-size:6px; letter-spacing:1px; }
  .library-stamp svg { width:38px; height:27px; }
  .section-heading h2 { font-size:19px; }
  .section-heading > div:first-child { gap:10px; }
  .view-switch { gap:13px; }
  .view-switch button { font-size:10px; }
  .archive-tools { gap:14px; margin-top:15px; }
  .search-field input { font-size:12px; }
  .outline-button { font-size:13px; white-space:nowrap; }
  .result-count { width:auto; margin:0 0 0 auto; }
  .bookshelf { grid-template-columns:repeat(2,minmax(0,1fr)); gap:50px 0; }
  .shelf-room { margin:7px -6px 0; }
  .shelf-item { height:308px; padding:32px 11px 13px; }
  .bound-book { width:160px; height:249px; }
  .book-size-1 { height:266px; }
  .book-size-2 { height:237px; }
  .book-cover { padding:21px 10px 12px 18px; }
  .cover-title { font-size:21px; }
  .long-title .cover-title { font-size:17px; }
  .cover-kicker { font-size:6px; letter-spacing:1px; }
  .cover-author { font-size:9px; }
  .cover-imprint { font-size:5px; letter-spacing:1px; }
  .shelf-foot { margin-top:31px; }
  .shelf-invitation { font-size:11px; }
  .draft-banner { margin-top:20px; }
  .draft-banner p { max-width:260px; font-size:10px; }
  .desk-section { margin-top:35px; }
  .desk-objects { grid-template-columns:1fr; gap:39px; padding:32px 20px 15px; }
  .desk-notebook,.desk-folder { max-width:340px; }
  .reading-spread { grid-template-columns:1fr; background:url('/paper-grain.svg'); }
  .reading-card-title,.reading-card-notes { padding:17px 28px 30px; }
  .reading-card-title h2 { font-size:31px; }
  .reading-card-notes { border-top:1px solid var(--line); padding-top:25px; }
  .card-label { margin-bottom:20px; }
  .card-note { font-size:17px; }
  .archive-list .archive-entry { padding:20px; }
}
@media(max-width:370px) { .shell { padding:0 18px; } .intro h1 { font-size:45px; } .shelf-item { padding-left:8px; padding-right:8px; } .cover-title { font-size:19px; } .long-title .cover-title { font-size:16px; } }
@media(prefers-reduced-motion:reduce) { .bound-book,.desk-objects a { transition:none; } }
@media print { .shelf-room,.view-switch,.archive-tools,.archive-filters,.collection-tools,.draft-banner,.shelf-foot { display:none; } .archive-list[hidden] { display:block !important; } .reading-dialog { box-shadow:none; } }
