:root{--paper:#fafafa;--ink:#262626;--muted:#777;--line:#dcdcdc;--blue:#386489;--ease:cubic-bezier(.22,.76,.18,1);font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.3}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--blue);outline-offset:5px}button{border:0;background:none}button:hover:not(:disabled){color:var(--blue)}.skip{position:fixed;top:-60px;left:20px;background:white;z-index:100;padding:12px}.skip:focus{top:20px}.masthead{height:98px;border-bottom:1px solid var(--line);margin:0 5%;display:flex;justify-content:space-between;align-items:center}.brand{text-decoration:none;display:flex;align-items:center;gap:17px;font:10px/1.3 'Courier New',monospace;letter-spacing:.15em}.monogram{font:27px Georgia,serif;letter-spacing:-2px;border:1px solid #888;width:48px;height:48px;display:grid;place-items:center;position:relative}.monogram span{position:absolute;font:11px Arial;right:-5px;top:-5px;background:var(--paper);padding:1px}.header-right{display:flex;align-items:center;gap:38px}.private-label{font:9px 'Courier New',monospace;color:#888;letter-spacing:.1em}.text-button{font-size:12px;padding:10px 0}.text-button span{margin-left:12px}main{width:94%;max-width:1920px;margin:auto}.intro{padding:58px 0 42px}.eyebrow{font:10px 'Courier New',monospace;letter-spacing:.15em;display:flex;align-items:center;gap:9px}.tiny-square{width:5px;height:5px;background:#555}.intro-line{display:flex;justify-content:space-between;align-items:flex-end;gap:30px}.intro h1{font:clamp(45px,5.6vw,82px)/1.06 Georgia,'Times New Roman',serif;letter-spacing:-.055em;margin:20px 0 0;font-weight:400}.intro h1 em{font-weight:400;color:#777}.intro-note{padding-bottom:6px;font-size:13px;line-height:1.5}.intro-note p{margin:0 0 5px}.quiet{color:#888;font-size:12px}.toolbar{display:flex;align-items:center;gap:23px;border-top:1px solid var(--line);padding:18px 0}.view-tabs{display:flex;align-items:center;gap:25px;flex-shrink:0}.view-tabs button{padding:7px 0;font-size:12px;white-space:nowrap;color:#888}.view-tabs button[aria-pressed=true]{color:#222}.view-tabs span{font:9px 'Courier New',monospace;margin-left:5px;color:#888}.view-tabs button[aria-pressed=true]:before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:#333;margin-right:7px}.search{display:flex;align-items:center;gap:10px;margin-left:auto;width:320px;padding:9px 10px;border-bottom:1px solid #ccc}.search svg{fill:none;stroke:#888;stroke-width:1.2;flex-shrink:0}.search input{background:none;border:0;outline:0;min-width:0;width:100%;font-size:12px;color:#333}.search kbd{font:10px monospace;color:#999;border:1px solid #ddd;padding:2px 5px}.random-button{font-size:12px;white-space:nowrap}.random-button span{font-size:20px;vertical-align:middle;margin-right:5px}.categories{display:flex;gap:6px;flex-wrap:wrap;margin:5px 0 22px}.categories button{font-size:10px;color:#777;border:1px solid transparent;border-radius:2px;padding:8px 13px;white-space:nowrap}.categories button[aria-pressed=true]{border-color:#c4c4c4;color:#222;background:#fff}.categories button:hover{background:#fff}.shelf-stage{position:relative;border:1px solid #dedede;background:#fff;min-height:450px;padding:20px 24px 18px}.stage-top,.stage-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;font:9px 'Courier New',monospace;color:#888;letter-spacing:.06em}.sort-label{display:flex;align-items:center;gap:10px;font-size:8px}.sort-label select{font:10px 'Courier New',monospace;border:0;border-bottom:1px solid #ddd;padding:2px 18px 3px 3px;background:white;color:#666;border-radius:0}.stage-bottom{position:relative;padding-top:8px}.shelf-hint{font-size:8px;letter-spacing:.1em}.hand{font-size:15px;margin-right:6px;color:#444}#shelf{width:100%;max-width:1050px;margin:0 auto}#shelf svg{display:block;width:100%;overflow:visible}#shelf svg text{user-select:none}.book-spine{cursor:pointer;outline:none;transform-box:fill-box;transform-origin:50% 100%;transition:transform .35s var(--ease),filter .35s}.book-spine:hover,.book-spine:focus-visible{transform:translate(6px,-10px);filter:drop-shadow(-4px 8px 3px #0002)}.book-spine:hover .spine-front,.book-spine:focus-visible .spine-front{stroke:#333;stroke-width:1.4;fill:#fff}.book-spine.is-selected{opacity:.12}.shelf-navigation{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:76px}.shelf-navigation>p{font:12px Georgia,serif;color:#777;line-height:1.5}.shelf-navigation strong{font-weight:400;color:#333}.pagination{display:flex;align-items:center;gap:20px}.pagination button{border:1px solid #d5d5d5;border-radius:50%;width:35px;height:35px;font-size:16px;background:white}.pagination span{font:10px 'Courier New',monospace;color:#777;white-space:nowrap}footer{border-top:1px solid var(--line);padding:27px 0 35px;display:flex;justify-content:space-between;gap:15px;color:#888;font-size:10px}.footer-dot{padding:0 8px}footer a{text-decoration:none}#empty{text-align:center;padding:80px 10px}#empty h2{font:27px Georgia,serif}#empty p{color:#888;font-size:12px}.empty-icon{font-size:35px;color:#aaa}.outline-button{padding:10px 18px;border:1px solid #bbb;font-size:12px;margin-top:15px}dialog{border:0;padding:0;background:none;color:var(--ink)}dialog::backdrop{background:rgba(31,32,33,.44);backdrop-filter:blur(7px)}#reader{overflow:visible;width:min(1090px,94vw);max-width:none;max-height:94dvh;margin:auto}#reader[open]{animation:reader-enter .3s ease both}.reader-toolbar{display:flex;align-items:center;justify-content:space-between;color:white;font:10px 'Courier New',monospace;letter-spacing:.08em;padding:0 6px 20px}.reader-toolbar button{color:white;letter-spacing:0;font:12px Arial;display:flex;align-items:center;gap:18px}.reader-toolbar button span{font-size:25px;font-weight:200}.open-book{position:relative;display:grid;grid-template-columns:1fr 1.12fr;min-height:min(590px,calc(94dvh - 90px));height:min(650px,calc(94dvh - 90px));max-height:calc(94dvh - 90px);border-radius:5px 9px 9px 5px;background:#fdfcf9;box-shadow:0 0 0 1px #b9b7b2,2px 3px 0 #e4e2dd,3px 5px 0 #a7a5a1,4px 8px 0 #e9e7e2,5px 10px 0 #888782,0 35px 80px #0005;perspective:1800px;transform-style:preserve-3d}.book-binding{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 43%,#00000006 45%,#0000001c 47.13%,#fff8 47.3%,#00000012 47.5%,transparent 51%);z-index:2;border-radius:inherit}.left-page{padding:35px 38px 28px;display:flex;flex-direction:column;min-width:0;position:relative;border-right:1px solid #ccc6;background:linear-gradient(90deg,#fdfcf9,#fdfcf9 85%,#f0efeb);border-radius:5px 0 0 5px;overflow:auto}.page-running-head{font:8px 'Courier New',monospace;letter-spacing:.15em;color:#999;border-bottom:1px solid #dedcd6;padding-bottom:14px;margin-bottom:25px}.category-tag{font:9px 'Courier New',monospace;color:var(--book-accent);letter-spacing:.12em;text-transform:uppercase}#book-title{font:clamp(26px,3.2vw,44px)/1.1 Georgia,serif;font-weight:400;letter-spacing:-.035em;margin:13px 0 16px;overflow-wrap:anywhere}#book-author{font-size:12px;color:#7c7c77;line-height:1.5;margin:0}#book-illustration{height:165px;flex:1;min-height:100px;max-height:210px;padding:14px 0;opacity:.8;display:grid;place-items:center}#book-illustration svg{height:100%;width:100%;max-height:185px}.left-bottom{margin-top:auto;border-top:1px solid #dedcd6;padding-top:18px;display:flex;justify-content:space-between;gap:10px;align-items:flex-end}.save-button{padding:7px 0;font-size:11px}.save-button span{margin-right:5px;font-size:16px}.save-button[aria-pressed=true]{color:var(--blue)}.edition-note{font:8px/1.7 'Courier New',monospace;color:#999;text-align:right}.right-page{min-width:0;display:flex;flex-direction:column;padding:34px 38px 25px;overflow:hidden;border-radius:0 9px 9px 0}.reader-tabs{display:flex;gap:16px;flex-shrink:0;border-bottom:1px solid #dcdad5;margin-bottom:28px}.reader-tabs button{font:9px 'Courier New',monospace;white-space:nowrap;padding:0 0 14px;color:#8a8a84;border-bottom:1px solid transparent;margin-bottom:-1px}.reader-tabs button[aria-current=page]{color:#262626;border-color:#333}.page-content{overflow:auto;flex:1;outline:none;padding-right:5px;min-height:0;scrollbar-width:thin;scrollbar-color:#bbb transparent}.page-content.entering{animation:page-turn .38s var(--ease)}.page-kicker{font:9px 'Courier New',monospace;color:#999;letter-spacing:.12em;margin:0 0 13px}.page-content h3{font:31px/1.16 Georgia,serif;letter-spacing:-.035em;margin:0 0 20px;font-weight:400}.page-content p{font:13px/1.85 Arial,sans-serif;color:#666;max-width:44em}.page-content .large-copy{font:17px/1.7 Georgia,serif;color:#444}.page-content h4{font:10px 'Courier New',monospace;letter-spacing:.08em;color:#777;font-weight:400;margin:25px 0 12px}.idea-list{list-style:none;counter-reset:ideas;padding:0;margin:0}.idea-list li{display:grid;grid-template-columns:23px 1fr;gap:10px;border-top:1px solid #e2e0dc;padding:15px 0;font:13px/1.7 Arial;color:#555;counter-increment:ideas}.idea-list li:before{content:'0' counter(ideas);font:9px 'Courier New',monospace;color:#aaa;padding-top:5px}.practice-note{border-left:2px solid var(--book-accent);padding:0 0 0 17px;margin:25px 0}.practice-note p{font:17px/1.7 Georgia,serif;color:#555}.source-links{display:flex;flex-wrap:wrap;gap:14px 20px;font:10px 'Courier New',monospace;padding-top:18px}.source-links a{color:#777;text-decoration:none}.connection{width:100%;display:flex;text-align:left;gap:15px;align-items:center;border-top:1px solid #e1dfdb;padding:17px 0}.connection .mini-spine{width:8px;height:45px;background:var(--connection-accent);flex-shrink:0;border:1px solid #0002}.connection strong{display:block;font:17px/1.2 Georgia,serif;font-weight:400}.connection small{display:block;color:#999;font-size:10px;margin-top:6px}.connection .arrow{margin-left:auto;font-size:18px}.page-navigation{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid #dcdad5;padding-top:16px;margin-top:20px;flex-shrink:0}.page-navigation button{font-size:11px;padding:4px 0}.page-navigation button span{margin-left:12px}.page-navigation>span{font:9px 'Courier New',monospace;color:#aaa}.reader-note{color:#e6e6e6;text-align:center;font:9px 'Courier New',monospace;padding-top:12px;letter-spacing:.03em}.reader-note span{padding:0 12px}.swing-cover{position:absolute;inset:0 0 0 47.17%;z-index:5;transform-origin:left center;transform-style:preserve-3d;backface-visibility:hidden;background:var(--book-accent,#3c5365);color:#fffef7;border-radius:0 6px 6px 0;box-shadow:inset 4px 0 8px #0003;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px;text-align:center;pointer-events:none;animation:cover-open 1.2s var(--ease) .15s both}.swing-cover span{font:9px 'Courier New',monospace;letter-spacing:.18em;opacity:.7}.swing-cover strong{font:38px/1.12 Georgia,serif;font-weight:400;margin:35px 0 25px;letter-spacing:-.025em}.swing-cover em{font:12px Arial;font-style:normal;opacity:.8}.cover-rule{position:absolute;inset:20px;border:1px solid #ffffff36}.cover-mark{font-size:55px;font-weight:200;opacity:.4;margin-top:35px}.fly-book{position:fixed;z-index:1000;border-radius:2px 7px 7px 2px;background:var(--book-accent);color:#fff;box-shadow:inset 5px 0 8px #0003,8px 10px 25px #0003;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;transform-origin:center;pointer-events:none}.fly-book strong{font:30px/1.1 Georgia,serif;font-weight:400}.fly-book small{font:10px Arial;opacity:.8;margin-top:20px}.fly-book:before{content:'';position:absolute;inset:13px;border:1px solid #ffffff40}.fly-book:after{content:'';position:absolute;right:-6px;top:5px;bottom:4px;width:6px;background:repeating-linear-gradient(to right,#eee 0 1px,#bbb 1px 2px);transform:skewY(-20deg);border-right:1px solid #777}#about{width:min(520px,90vw);max-height:86dvh;overflow:auto;background:#fcfcfa;padding:48px;box-shadow:0 20px 80px #0004;border:1px solid #aaa}#about h2{font:42px/1.05 Georgia,serif;letter-spacing:-.04em;font-weight:400;margin:20px 0 26px}#about p{font:13px/1.8 Arial;color:#777}#about>a{font-size:11px}.close-about{position:absolute;right:18px;top:12px;font-size:25px}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);background:#303030;color:white;padding:13px 20px;font-size:12px;opacity:0;transition:.25s;pointer-events:none;z-index:1001}#toast.show{transform:translate(-50%,0);opacity:1}@keyframes reader-enter{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}@keyframes cover-open{0%{transform:rotateY(0)}100%{transform:rotateY(-175deg);visibility:hidden}}@keyframes page-turn{0%{opacity:.15;transform:translateX(15px) rotateY(-8deg)}100%{opacity:1;transform:none}}@media(min-width:1550px){main{max-width:1400px}.intro{padding-top:70px}}@media(max-width:950px){.private-label{display:none}.intro-note{font-size:11px}.toolbar{gap:15px}.view-tabs{gap:15px}.search{width:260px}.random-button{font-size:11px}.left-page{padding:28px}.right-page{padding:28px}.reader-tabs{gap:12px}.reader-tabs button{font-size:8px}.open-book{min-height:min(570px,calc(94dvh - 90px))}.swing-cover strong{font-size:30px}.swing-cover{padding:30px}.edition-note{font-size:7px}}@media(max-width:680px){.masthead{height:76px;margin:0 6%}.brand{font-size:9px;gap:12px}.monogram{width:37px;height:37px;font-size:23px}.text-button{font-size:10px}.header-right{gap:0}main{width:88%}.intro{padding:37px 0 29px}.eyebrow{font-size:8px}.intro-line{display:block}.intro h1{font-size:55px;margin-top:18px}.intro-note{margin-top:22px;font-size:12px}.intro-note .quiet{font-size:10px}.toolbar{flex-wrap:wrap;gap:12px;padding:14px 0}.view-tabs{order:0;gap:23px}.view-tabs button{font-size:11px}.search{order:2;width:100%;padding:10px 1px;margin:0}.search input{font-size:12px}.search kbd{display:none}.random-button{margin-left:auto;font-size:10px}.categories{flex-wrap:nowrap;overflow:auto;scrollbar-width:none;padding:3px 0 5px;margin-bottom:14px;gap:2px}.categories button{font-size:9px;padding:7px 11px}.shelf-stage{padding:17px 10px 14px;min-height:420px;margin:0 -8px}.stage-top{font-size:7px;gap:8px}.sort-label{font-size:0;gap:0}.sort-label select{font-size:8px;max-width:110px}.stage-bottom{font-size:7px;gap:6px}.shelf-hint{font-size:6px;letter-spacing:0}.hand{font-size:11px;margin-right:2px}.shelf-navigation{min-height:80px;gap:10px}.shelf-navigation>p{font-size:11px;max-width:60%}.pagination{gap:10px}.pagination button{width:29px;height:29px}.pagination span{font-size:8px}footer{font-size:8px;line-height:1.6;flex-direction:column;gap:8px;padding:20px 0}.open-book{display:flex;flex-direction:column;height:auto;min-height:0;max-height:calc(94dvh - 64px);overflow:auto}.left-page{flex-shrink:0;padding:23px 24px 20px;background:linear-gradient(100deg,#fdfcf9,#f4f3ef);border:0;border-bottom:1px solid #ddd;border-radius:5px 5px 0 0;overflow:visible;display:block}.page-running-head{display:none}.category-tag{font-size:8px}#book-title{font-size:31px;margin:8px 0 9px;max-width:95%}#book-author{font-size:11px}#book-illustration{display:none}.left-bottom{padding:10px 0 0;margin-top:10px;border:0;align-items:center}.edition-note{font-size:6px;line-height:1.7}.save-button{font-size:10px;padding:0}.right-page{padding:22px 24px;overflow:visible;display:block}.reader-tabs{margin-bottom:24px;gap:22px;justify-content:space-between}.reader-tabs button{font-size:8px}.page-content{overflow:visible;min-height:0;padding:0}.page-content h3{font-size:28px}.page-content p{font-size:12px;line-height:1.8}.page-content .large-copy{font-size:16px}.idea-list li{font-size:12px}.book-binding{display:none}.reader-toolbar{padding:0 3px 12px;font-size:7px}.reader-toolbar button{font-size:10px;gap:9px}.reader-note{display:none}.swing-cover{inset:0;padding:40px;animation-duration:.85s}.swing-cover strong{font-size:36px}.page-navigation{margin-top:25px}.source-links{font-size:9px}.connection strong{font-size:16px}.reader-toolbar button span{font-size:22px}.fly-book strong{font-size:24px}#about{padding:35px}#about h2{font-size:37px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.swing-cover{display:none}}
@media(min-width:1000px){.masthead{height:76px}.intro{padding:35px 0 29px}.intro h1{font-size:65px}.toolbar{padding:13px 0}.categories{margin:2px 0 16px}.shelf-stage{padding-top:17px}.shelf-stage #shelf svg{max-height:max(450px,calc(100dvh - 375px))}.shelf-navigation{min-height:62px}footer{padding:19px 0 24px}}
#book-tooltip{position:fixed;z-index:60;transform:translate(-50%,-100%);width:max-content;max-width:290px;pointer-events:none;background:#fdfdfb;border:1px solid #bdbdb7;box-shadow:0 8px 25px #0001;padding:15px 18px;opacity:0;transition:opacity .15s}#book-tooltip.show{opacity:1}#book-tooltip strong{display:block;font:18px/1.2 Georgia,serif;font-weight:400;color:#333}#book-tooltip span{display:block;font-size:10px;color:#888;margin-top:7px}#book-tooltip small{display:block;font:7px 'Courier New',monospace;letter-spacing:.1em;color:#aaa;margin-top:12px}

/* Alan's oak: fine-line illustration with quiet, occasional movement. */
.tree-logo{width:66px;height:60px;overflow:visible;color:#62645e;flex-shrink:0}.brand{gap:12px;line-height:1.65}.tree-leaf{opacity:0}.leaf-one{animation:leaf-drift 16s ease-in infinite;transform-origin:57px 30px}.leaf-two{animation:leaf-drift-two 21s ease-in 7s infinite}.bird-one{animation:bird-arrive 23s ease-in-out infinite}.bird-two{animation:bird-arrive-two 29s ease-in-out 4s infinite;opacity:0}.bird-wings{animation:wings-away 23s linear infinite}.bird-perched{animation:perch 23s linear infinite}.bird-two .bird-wings{animation-duration:29s;animation-delay:4s}.bird-two .bird-perched{animation-duration:29s;animation-delay:4s}
@keyframes leaf-drift{0%,65%{opacity:0;transform:translate(59px,28px) rotate(0deg)}68%{opacity:.8}80%{transform:translate(66px,47px) rotate(95deg)}94%{opacity:.7;transform:translate(54px,69px) rotate(220deg)}100%{opacity:0;transform:translate(51px,71px) rotate(240deg)}}
@keyframes leaf-drift-two{0%,65%{opacity:0;transform:translate(20px,30px)}68%{opacity:.6}84%{transform:translate(11px,50px) rotate(-90deg)}98%,100%{opacity:0;transform:translate(24px,71px) rotate(-190deg)}}
@keyframes bird-arrive{0%,8%{opacity:0;transform:translate(-19px,7px)}12%{opacity:1;transform:translate(4px,11px)}20%,75%{opacity:1;transform:translate(29px,28px)}84%{opacity:1;transform:translate(67px,8px)}90%,100%{opacity:0;transform:translate(99px,-8px)}}
@keyframes bird-arrive-two{0%,8%{opacity:0;transform:translate(100px,4px)}12%{opacity:1;transform:translate(78px,12px)}20%,75%{opacity:1;transform:translate(56px,32px)}84%{opacity:1;transform:translate(25px,4px)}90%,100%{opacity:0;transform:translate(-14px,-9px)}}
@keyframes wings-away{0%,19%,76%,100%{opacity:1}20%,75%{opacity:0}}@keyframes perch{0%,19%,76%,100%{opacity:0}20%,75%{opacity:1}}
.book-spine{filter:drop-shadow(1px 1px 1px #0002)}.book-spine:hover .spine-front,.book-spine:focus-visible .spine-front{fill:revert-layer;stroke:#555}.cover-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;border-radius:inherit;z-index:1;box-shadow:inset 8px 0 10px #0003}.fly-book:after{z-index:2}.actual-cover{max-width:100%;height:100%;max-height:220px;object-fit:contain;box-shadow:3px 4px 0 #dedbd3,7px 9px 16px #0002;transform:rotate(-2deg)}#book-illustration.has-cover{opacity:1;min-height:120px;max-height:240px}.cover-credit{font:8px/1.5 'Courier New',monospace;color:#999;text-align:center;margin:0 0 12px}.tooltip-cover{width:57px;max-height:86px;object-fit:contain;float:left;margin:0 14px 4px 0;box-shadow:2px 3px 5px #0002}#book-tooltip{min-height:80px;max-width:340px}#book-tooltip:after{content:'';display:block;clear:both}@media(max-width:680px){.tree-logo{width:51px;height:50px}#book-illustration.has-cover{display:block;height:140px;float:right;min-height:0;margin-top:10px}.actual-cover{max-height:120px}.cover-credit{clear:both;font-size:7px}.left-bottom{clear:both}}@media(prefers-reduced-motion:reduce){.tree-leaf{display:none}.bird-one{animation:none!important;opacity:1;transform:translate(29px,28px)}.bird-two{display:none}.bird-wings{display:none}.bird-perched{animation:none!important;opacity:1}}

#book-illustration{position:relative}#book-illustration .actual-cover{position:absolute;top:12px;bottom:12px;left:50%;transform:translateX(-50%) rotate(-2deg);height:calc(100% - 24px);opacity:0}#book-illustration.cover-loaded .actual-cover{opacity:1}#book-illustration.cover-loaded>svg{visibility:hidden}

.cover-art{object-fit:contain;background:#f3f0e9}

/* Full 5 × 8 cabinet. Zoom changes scale, never collection membership. */
.shelf-viewport{width:100%;max-height:76dvh;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}#shelf{max-width:none;width:100%;margin:0 auto}#shelf svg,.shelf-stage #shelf svg{width:100%;height:auto;max-height:none}#shelf:not(.zoomed){max-width:100%}#shelf.zoomed{margin:0}.shelf-stage{min-height:0}.shelf-slot.is-dimmed{opacity:.12;pointer-events:none}.pagination[hidden]{display:none}.zoom-label{font:8px 'Courier New',monospace;display:flex;align-items:center;gap:8px;margin-left:auto}.zoom-label select{font:10px 'Courier New',monospace;border:0;border-bottom:1px solid #ddd;padding:3px;background:transparent;color:#555}.stage-top{padding-bottom:14px}.book-spine:hover,.book-spine:focus-visible{transform:translate(4px,-12px);filter:drop-shadow(-3px 7px 3px #0004)}.shelf-stage #empty{position:absolute;inset:70px 20% auto;background:#fffffff2;padding:30px;z-index:5}.shelf-stage{overflow:hidden}
/* The artwork is the bound cover: no white mat, card, or padded frame. */
#book-illustration{max-height:290px;height:260px;min-height:100px;padding:0;margin:20px auto 16px;width:100%;perspective:900px}#book-illustration.has-cover{max-height:290px;opacity:1}#book-illustration .actual-cover{inset:auto;top:0;left:50%;width:auto;height:100%;max-height:100%;max-width:100%;object-fit:contain;transform:translateX(-50%) rotateY(-9deg);border-radius:1px 4px 4px 1px;box-shadow:2px 1px 0 #b9b6ad,4px 2px 0 #f2f0e8,6px 3px 0 #b9b6ad,10px 12px 17px #0002;background:none}#book-illustration.cover-loaded>svg{display:none}.cover-art{object-fit:cover;background:none}.fly-book{padding:0}.fly-book:has(.cover-art):before{z-index:3;inset:0;border:0;border-left:6px solid #0002;box-shadow:inset 8px 0 8px #0002}.cover-credit{font-size:7px;margin-bottom:12px}.swing-cover:has(.cover-art){background:transparent;box-shadow:none}.swing-cover .cover-art{object-fit:contain;background:none}.swing-cover:has(.cover-art)>:not(.cover-art){visibility:hidden}
@media(max-width:680px){.stage-top{flex-wrap:wrap}.zoom-label{font-size:7px}.zoom-label select{font-size:8px}#shelf:not(.zoomed){max-width:100%}.shelf-viewport{max-height:70dvh}#book-illustration.has-cover{float:none;height:200px;display:block;width:100%;margin:20px auto}#book-illustration .actual-cover{max-height:200px}.cover-credit{clear:both}}

/* A physical cover reveal beside the guide, inspired by editorial book displays. */
#reader{width:min(1180px,94vw)}#reader::backdrop{background:#f1f0eceb;backdrop-filter:blur(12px)}.reader-toolbar{color:#666}.reader-toolbar button{color:#444}.open-book{display:grid;grid-template-columns:1fr 1.05fr;background:none;box-shadow:none;border-radius:0;perspective:none;transform-style:flat;height:min(680px,calc(94dvh - 85px));max-height:calc(94dvh - 85px)}.book-binding,.swing-cover{display:none!important}.left-page{padding:14px 35px 20px;background:none;border:0;border-radius:0;overflow:visible;align-items:center;justify-content:center}.page-running-head{display:none}.left-page .category-tag{order:2;margin-top:10px}#book-title{order:3;font:24px/1.16 Georgia,serif;text-align:center;margin:9px 0;max-width:420px}#book-author{order:4;font-size:11px;text-align:center}.left-bottom{order:6;width:100%;margin-top:20px;border-top:1px solid #ccc8;padding-top:12px}.edition-note{font-size:7px}.cover-credit{order:5;margin:12px 0 0}.right-page{background:#fbfaf6;padding:35px 38px;box-shadow:0 6px 30px #00000006;border:1px solid #ddd9d1;border-radius:2px;animation:guide-arrive .8s .35s both}.reader-note{color:#888}.reader-toolbar{padding-bottom:16px}#book-illustration,#book-illustration.has-cover{order:1;display:grid;place-items:center;position:relative;width:100%;height:clamp(220px,48dvh,440px);max-height:440px;flex:none;margin:8px auto 18px;padding:0;perspective:1500px;overflow:visible}.book-object{position:relative;height:min(42dvh,390px);width:auto;max-width:85%;aspect-ratio:var(--ratio);transform:rotateY(-18deg) rotateX(5deg);transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.8,.2,1);--depth:23px}.book-object:has(.actual-cover){height:min(42dvh,390px)}.book-object:after{content:'';position:absolute;left:2%;right:-5%;bottom:-30px;height:18px;background:#0003;filter:blur(14px);transform:rotateX(75deg);pointer-events:none}.jacket-front{position:absolute;inset:0;transform:translateZ(calc(var(--depth)/2));background:var(--jacket);border-radius:1px 3px 3px 1px;backface-visibility:hidden;overflow:hidden;box-shadow:inset 0 0 0 1px #0002}.jacket-front:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0003,transparent 2%,#fff3 3%,#0002 4%,transparent 6%,transparent 97%,#0002);pointer-events:none;z-index:3}.jacket-back{position:absolute;inset:0;transform:translateZ(calc(var(--depth)/-2));background:var(--jacket);border-radius:2px}.jacket-spine{position:absolute;top:0;bottom:0;left:calc(var(--depth)/-2);width:var(--depth);transform:rotateY(-90deg);background:linear-gradient(90deg,#0003,transparent 30%,#fff2 60%,#0002),var(--jacket);display:flex;justify-content:center;align-items:center;overflow:hidden}.jacket-spine span{writing-mode:vertical-rl;text-orientation:mixed;font:11px Georgia,serif;color:#eee;white-space:nowrap;max-height:85%;overflow:hidden}.book-pages{position:absolute;top:3px;bottom:3px;right:calc(var(--depth)/-2 + 2px);width:calc(var(--depth) - 4px);transform:rotateY(90deg);background:repeating-linear-gradient(90deg,#e8e4d8 0 1px,#c9c3b5 1px 1.6px);border:1px solid #c6c0b4}.book-top{position:absolute;top:calc(var(--depth)/-2 + 2px);left:2px;right:2px;height:calc(var(--depth) - 4px);transform:rotateX(90deg);background:repeating-linear-gradient(#e8e4d8 0 1px,#c9c3b5 1px 1.6px)}#book-illustration .actual-cover{position:absolute;inset:0;width:100%;height:100%;max-width:none;max-height:none;object-fit:fill;transform:none;box-shadow:none;border-radius:0;opacity:1;background:none}.jacket-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px;text-align:center;color:white}.jacket-fallback strong{font:28px/1.1 Georgia,serif}.jacket-fallback small{font:11px Arial;margin-top:20px}.jacket-fallback svg{width:70%;height:auto;opacity:.5}.cover-loaded .jacket-fallback{visibility:hidden}@keyframes guide-arrive{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}@media(max-width:680px){.open-book{display:flex;height:auto;overflow:auto;background:#f5f3ee}.left-page{padding:20px 28px}.right-page{border:0;padding:26px}.book-object,.book-object:has(.actual-cover){height:240px;max-width:80%}#book-illustration,#book-illustration.has-cover{height:280px;max-height:280px;margin:0 auto}.left-page .category-tag{margin-top:0}.left-bottom{margin-top:12px}#book-title{font-size:23px}.reader-toolbar{font-size:8px}.reader-note{display:none}}@media(prefers-reduced-motion:reduce){.book-object{transform:none;transition:none}.right-page{animation:none}}

.book-object,.book-object:has(.actual-cover){height:auto;width:min(350px,var(--native-limit,350px),calc(42dvh * var(--ratio)),85%);max-width:none;aspect-ratio:var(--ratio)}@media(max-width:680px){.book-object,.book-object:has(.actual-cover){height:auto;width:min(280px,var(--native-limit,280px),calc(240px * var(--ratio)),80%)}}

#reader.is-returning .right-page,#reader.is-returning .left-page>:not(#book-illustration){opacity:0;transition:opacity .25s}#reader.is-returning .book-object{transition:none}
@media(min-width:1000px){.intro{padding:24px 0 20px}.intro h1{font-size:48px}.intro h1{margin-top:14px}.shelf-viewport{max-height:max(390px,calc(100dvh - 350px))}}

.right-page #book-title{order:0;text-align:left;font-size:30px;line-height:1.12;max-width:none;margin:0 0 8px;flex-shrink:0}.right-page #book-author{order:0;text-align:left;margin:0 0 25px;flex-shrink:0}.left-page #book-illustration{height:min(52dvh,470px);max-height:470px;flex:1}.left-page .left-bottom{flex-shrink:0}.right-page .reader-tabs{order:0}.right-page .page-content{order:0}.right-page .page-navigation{order:0}@media(max-width:680px){.right-page #book-title{font-size:27px}.left-page #book-illustration{height:280px;flex:none}.right-page #book-author{margin-bottom:20px}}

.jacket-fallback{color:#343430}.jacket-spine span{color:#454540}

.book-edition{font:11px/1.5 Arial,sans-serif;color:#777;margin:-16px 0 20px;flex-shrink:0}.book-edition[hidden]{display:none}.cover-edition{display:block;font-size:9px;line-height:1.4;color:#888;margin-top:5px;max-width:300px}.cover-credit{flex-shrink:0}

/* Static illustrated spines share one type size and lightweight hover treatment. */
.book-spine{filter:none;transition:transform .2s var(--ease)}.book-spine:hover,.book-spine:focus-visible{transform:translate(3px,-8px);filter:none}.book-spine:hover .spine-front,.book-spine:focus-visible .spine-front{fill:#f8f8f4;stroke:#676767;stroke-width:.9}.spine-title{pointer-events:none}.shelf-bookmark{pointer-events:none}
@media(prefers-reduced-motion:reduce){.book-spine{transition:none}.page-content.entering{animation:none}}

/* Use the full page width for the overview; only enlarged views scroll inside. */
.shelf-viewport:not(:has(#shelf.zoomed)){max-height:none;overflow:hidden}
.book-spine:hover .spine-front,.book-spine:focus-visible .spine-front{stroke:none;fill:#f8f8f4}
.book-spine:hover .book-outline,.book-spine:focus-visible .book-outline,.book-spine:hover .book-seams,.book-spine:focus-visible .book-seams{stroke:#676767}
@media(max-width:680px){main{width:92%}.shelf-stage{margin:0}.zoom-label select,.sort-label select{font-size:11px;padding:6px 2px}.stage-top{row-gap:10px}.shelf-viewport:has(#shelf.zoomed){max-height:70dvh}}

/* A closer, one-column view uses the same illustrated books and native scrolling. */
.section-nav{display:flex;align-items:center;gap:12px;flex-shrink:0;color:#666;font:12px/1.4 Arial,Helvetica,sans-serif;letter-spacing:0}
.section-nav[hidden]{display:none}
.section-nav button{width:36px;height:36px;border:1px solid #d3d3d3;border-radius:4px;background:#fff;font-size:19px}
.section-nav button svg{display:block;width:20px;height:20px;margin:auto;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.section-nav button:hover:not(:disabled){background:#f4f5f0;border-color:#9c9c9c}
.shelf-viewport:has(#shelf.section-view){max-height:76dvh;overflow:auto}
#shelf.section-view{width:min(100%,960px);min-width:720px;max-width:none;margin:0 auto}
@media(max-width:900px){.stage-top{flex-wrap:wrap}.section-nav{order:4;width:100%;justify-content:center;padding:6px 0 0}.stage-top .zoom-label{margin-left:auto}}
@media(max-width:680px){.shelf-viewport:has(#shelf.section-view){max-height:70dvh}#shelf.section-view{margin:0}.section-nav button{width:42px;height:42px}.section-nav{gap:18px}.shelf-hint{font-size:8px}}

/* Pull forward along the shelf plane; the upper board still occludes the book. */
.book-spine{transition:transform .22s cubic-bezier(.22,.76,.18,1)}
.book-spine:hover,.book-spine:focus-visible{transform:translate(-8px,6.18px);filter:none}
@media(prefers-reduced-motion:reduce){.book-spine{transition:none}}

/* Both Pick for me controls use the same bounded, outlined icon. */
.random-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.shuffle-icon{display:block;width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}

/* Quiet footer links, with comfortable mobile tap targets. */
footer{align-items:center}
footer .footer-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px 28px}
footer .footer-project{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font:400 12px/1.5 Arial,Helvetica,sans-serif}
footer .footer-links a{display:inline-flex;align-items:center;gap:7px;min-height:44px;font:400 12px/1.5 Arial,Helvetica,sans-serif;color:var(--muted);text-decoration:underline;text-decoration-color:currentColor;text-decoration-thickness:1px;text-underline-offset:4px}
footer .footer-links a:hover{color:var(--ink)}
@media(max-width:680px){footer{align-items:flex-start}footer .footer-links{flex-direction:column;align-items:flex-start;justify-content:flex-start}}

/* Mobile controls share one type scale, baseline, and touch-target size. */
@media(max-width:680px){
 main{width:calc(100% - 32px)}
 .masthead{margin-inline:16px}
 .masthead .brand{font-size:12.5px;letter-spacing:.08em;gap:8px}
 .masthead .text-button,.masthead .theme-toggle{font-size:13px;min-height:44px}
 .masthead .text-button span{margin-left:6px}
 .intro .eyebrow{font-size:12.5px;letter-spacing:.08em}
 .intro-note,.intro-note .quiet{font-size:14px;line-height:1.5}
 .toolbar{gap:12px}
 .view-tabs{gap:16px}
 .view-tabs button{font-size:13px;min-height:44px}
 .view-tabs span{font-size:12.5px;margin-left:4px}
 .toolbar .random-button{font-size:13px;min-height:44px;gap:6px}
 .search{min-height:48px}
 .search input{font-size:16px;line-height:1.5}
 .categories{gap:4px;scroll-padding-inline:4px}
 .categories button{font-size:13px;line-height:1.4;min-height:44px;padding:10px 12px}
 .shelf-navigation>p{font-size:13px;max-width:none}
 .shelf-stage #empty p{font-size:13px}
 footer,footer .footer-project,footer .footer-links a{font-size:13px}
 /* Let the cabinet use the mobile screen, while controls retain reading gutters. */
 .shelf-stage{margin-inline:-8px;padding:0 0 16px;overflow:clip}
 .shelf-stage .stage-top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;padding:14px 0 12px;background:#fff;border-bottom:1px solid var(--line);margin:0 12px 8px}
 .shelf-stage #stage-label{grid-column:1/-1;grid-row:1;font-size:12.5px;line-height:1.5;letter-spacing:.06em;padding:0}
 .shelf-stage .zoom-label,.shelf-stage .sort-label{position:relative;display:block;min-width:0;margin:0;font-size:0;order:initial}
 .shelf-stage .zoom-label{grid-column:1;grid-row:2}
 .shelf-stage .sort-label{grid-column:2;grid-row:2}
 .shelf-stage .zoom-label::after,.shelf-stage .sort-label::after{content:'';position:absolute;right:14px;top:50%;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-70%) rotate(45deg);pointer-events:none}
 .shelf-stage .zoom-label select,.shelf-stage .sort-label select{appearance:none;-webkit-appearance:none;display:block;box-sizing:border-box;width:100%;min-width:0;max-width:none;height:48px;margin:0;border:1px solid #d3d3d3;border-radius:4px;padding:0 32px 0 12px;background:#fff;color:#555;font:400 16px/1.4 Arial,Helvetica,sans-serif;letter-spacing:0}
 .shelf-stage .zoom-label select:focus-visible,.shelf-stage .sort-label select:focus-visible{outline:2px solid currentColor;outline-offset:2px}
 .shelf-stage .section-nav{grid-column:1/-1;grid-row:3;order:initial;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;width:100%;gap:12px;padding:0;text-align:center;font-size:14px;line-height:1.5}
 .shelf-stage .section-nav[hidden]{display:none}
 .shelf-stage .section-nav button{display:grid;place-items:center;width:44px;height:44px;padding:0;font-size:22px;line-height:1}
 .shelf-stage .section-nav button svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
 .shelf-viewport:has(#shelf.section-view){max-height:none;overflow:visible;overscroll-behavior:auto}
 #shelf.section-view{width:100%;min-width:0;max-width:100%;margin:0}
 .shelf-stage .stage-bottom{margin-inline:12px;font-size:12.5px;letter-spacing:0;flex-wrap:wrap;gap:8px;line-height:1.5}
 .shelf-stage .shelf-hint{font-size:12.5px;letter-spacing:0;line-height:1.5}
 [data-theme=night] .shelf-stage .stage-top{background:#1b1d1f}
}

/* Front-facing mobile spines lift gently without introducing perspective. */
.front-shelf .book-spine:hover,.front-shelf .book-spine:focus-visible{transform:translateY(-4px)}

/* The mobile shelf is books and horizontal boards, on the page itself. */
.shelf-stage:has(.front-shelf),[data-theme=night] .shelf-stage:has(.front-shelf){background:transparent;border:0}
.shelf-stage:has(.front-shelf) .stage-top{background:var(--paper)}

/* One brief light pass per row as it comes into view. */
.front-shelf .spine-foil{transition:opacity .2s ease}
.front-shelf .spine-foil-sweep{transform-box:fill-box;transform:translateX(-110%);opacity:0}
.front-shelf .spines-lit .spine-foil-sweep{animation:spine-foil-pass 1.8s ease-in-out var(--foil-delay) both}
.front-spine:is(:hover,:focus-visible,:active) .spine-foil{opacity:.6}
@keyframes spine-foil-pass{0%{transform:translateX(-110%);opacity:0}20%{opacity:.65}75%{opacity:.65}100%{transform:translateX(110%);opacity:0}}
@media(prefers-reduced-motion:reduce){.front-shelf .spine-foil-sweep{animation:none!important}.front-shelf .spine-foil{transition:none}}
