@font-face{font-family:ibm plex serif;font-style:normal;font-weight:400;src:url(/fonts/IBMPlexSerif-Regular.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex serif;font-style:italic;font-weight:400;src:url(/fonts/IBMPlexSerif-Italic.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex serif;font-style:normal;font-weight:600;src:url(/fonts/IBMPlexSerif-SemiBold.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex serif;font-style:italic;font-weight:700;src:url(/fonts/IBMPlexSerif-BoldItalic.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:400;src:url(/fonts/IBMPlexSans-Regular.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:500;src:url(/fonts/IBMPlexSans-Medium.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex sans condensed;font-style:normal;font-weight:400;src:url(/fonts/IBMPlexSansCondensed-Regular.woff2)format("woff2");font-display:swap}@font-face{font-family:ibm plex sans condensed;font-style:normal;font-weight:500;src:url(/fonts/IBMPlexSansCondensed-Medium.woff2)format("woff2");font-display:swap}:root{--font-serif:"IBM Plex Serif", Georgia, "Times New Roman", serif;--font-sans:"IBM Plex Sans", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--font-cond:"IBM Plex Sans Condensed", "IBM Plex Sans", sans-serif;--maxw:1200px;--pad:clamp(1.1rem, 4vw, 3rem);--cover-w:clamp(98px, 12vw, 138px);--shelf-col-gap:clamp(1.3rem, 3.2vw, 3rem);--shelf-row-gap:clamp(2.4rem, 4.5vw, 3.6rem);--shelf-meta-h:3.2rem;--star:#e3b95a;--star-empty:rgba(255,255,255,.14);color-scheme:dark}:root,[data-theme=warm]{--bg:#3b3734;--surface:#454039;--line:#575049;--meta:#a99b8c;--meta-2:#cbbdad;--text:#ece8e3;--title:#f5f1ec}[data-theme=green]{--bg:#373b34;--surface:#41453b;--line:#51574a;--meta:#9daa8e;--meta-2:#c0ccb0;--text:#e9ece4;--title:#f2f5ec}[data-theme=blue]{--bg:#34383b;--surface:#3e4246;--line:#4e555b;--meta:#93a3ad;--meta-2:#b5c5ce;--text:#e6eaee;--title:#eef3f7}[data-theme=purple]{--bg:#3a343b;--surface:#443e46;--line:#554d58;--meta:#a596ab;--meta-2:#c7b9cc;--text:#ebe6ed;--title:#f3eef5}[data-theme=red]{--bg:#3b3434;--surface:#453d3d;--line:#574c4c;--meta:#ab9695;--meta-2:#ccb8b7;--text:#ede7e6;--title:#f5eeed}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body,h1,h2,h3,h4,p,figure,ul,ol,blockquote{margin:0}ul[class],ol[class]{list-style:none;padding:0}img{max-width:100%;display:block}a{color:inherit}button,input{font:inherit;color:inherit}body{font-family:var(--font-serif);font-size:clamp(1rem,.94rem + .3vw,1.125rem);line-height:1.72;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}a{text-decoration:none}p a,.prose a{color:var(--meta-2);text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:.06em;text-decoration-color:var(--line);transition:color .15s}p a:hover,.prose a:hover{color:var(--title);text-decoration-color:var(--meta)}::selection{background:var(--meta);color:var(--bg)}:focus-visible{outline:2px solid var(--meta-2);outline-offset:2px}h1,h2,h3{font-family:var(--font-serif);font-weight:600;color:var(--title);line-height:1.2;letter-spacing:-.01em}.section-title{font-size:clamp(1.7rem,1.3rem + 1.6vw,2.5rem);font-weight:600;margin-bottom:1.6rem}.section-title--sub{color:var(--meta);font-weight:400;font-style:italic;font-size:.5em;letter-spacing:0;margin-left:.6em}.site-header{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}.site-header__inner{display:flex;align-items:center;gap:clamp(1rem,4vw,3rem);padding-block:1.1rem;flex-wrap:wrap}.wordmark{display:inline-flex;align-items:center;gap:.6rem}.wordmark__mark{height:1.9rem;width:auto;flex:none}.wordmark__name{font-family:var(--font-serif);font-weight:700;font-style:italic;font-size:1.9rem;line-height:1;color:var(--title);letter-spacing:-.01em}.wordmark:hover .wordmark__name{color:var(--meta-2)}.site-nav{display:flex;align-items:baseline;margin-right:auto}.site-nav__states{display:flex;align-items:baseline;margin:0;padding:0;list-style:none}.site-nav__states li+li::before{content:"·";margin:0 .55rem;color:var(--line)}.site-nav__about{margin-left:2.8rem}.site-nav a{font-family:var(--font-sans);font-size:.9rem;font-weight:500;color:var(--meta);letter-spacing:.01em;padding-block:.15rem;border-bottom:1.5px solid transparent;transition:color .15s,border-color .15s}.site-nav a:hover,.site-nav a[aria-current]{color:var(--title);border-color:var(--meta)}.site-search{display:flex;align-items:center}.site-search input{font-family:var(--font-sans);font-size:.85rem;color:var(--text);border:0;border-bottom:1px solid var(--line);width:clamp(7rem,12vw,10rem);padding:.3rem .3rem .3rem 1.55rem;transition:border-color .15s;background:no-repeat .25rem/.85rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239b9088' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='6.8' cy='6.8' r='4.8'/%3E%3Cpath d='M10.6 10.6 L15 15'/%3E%3C/svg%3E")}.site-search input::placeholder{color:var(--meta)}.site-search input:focus{outline:none;border-color:var(--meta-2)}main{padding-block:clamp(2rem,5vw,3.4rem)clamp(3rem,7vw,5rem)}.site-footer{border-top:1px solid var(--line);padding-block:1.6rem 2.4rem;font-family:var(--font-sans);font-size:.82rem;color:var(--meta)}.site-footer .wrap{display:flex;gap:1rem;flex-wrap:wrap;justify-content:space-between}.shelf{display:flex;flex-wrap:wrap;align-items:flex-end;column-gap:var(--shelf-col-gap);row-gap:var(--shelf-row-gap)}.book{display:flex;flex-direction:column;width:var(--cover-w);color:var(--text)}.book__cover{display:block;position:relative}.book__cover img{width:100%;height:auto;border-bottom:1.5px dashed var(--line);box-shadow:0 8px 18px -6px rgba(0,0,0,.5);transition:transform .18s ease,box-shadow .18s ease}.book__cover--empty{aspect-ratio:2/3;display:flex;align-items:flex-end;background:var(--surface);border-bottom:1.5px dashed var(--line);box-shadow:0 8px 18px -6px rgba(0,0,0,.5)}.book__cover--empty span{font-family:var(--font-serif);font-weight:600;font-size:.8rem;line-height:1.25;color:var(--meta-2);padding:.6rem}.book:hover .book__cover img,.book:hover .book__cover--empty{transform:translateY(-4px);box-shadow:0 14px 26px -8px rgba(0,0,0,.6)}.book__meta{height:var(--shelf-meta-h);display:flex;flex-direction:column;gap:.28rem;padding-top:.55rem}.book__metatop{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.book__seriesnum{flex:none;min-width:1.6rem;height:1.6rem;padding:0 .35rem;display:flex;align-items:center;justify-content:center;background:var(--meta-2);color:var(--bg);border-radius:999px;font-family:var(--font-cond);font-weight:700;font-size:.85rem;line-height:1}.book__date{font-family:var(--font-cond);font-weight:400;font-size:.8rem;letter-spacing:.02em;color:var(--meta)}.stars{--r:0;position:relative;display:inline-block;width:max-content;max-width:100%;white-space:nowrap;font-size:.95rem;line-height:1;letter-spacing:1.5px;color:var(--star-empty)}.stars::before{content:"★★★★★"}.stars b{position:absolute;top:0;left:0;overflow:hidden;width:calc(var(--r) * 10%);color:var(--star)}.stars b::before{content:"★★★★★";letter-spacing:1.5px}.empty{font-style:italic;color:var(--meta)}.book__veil{position:absolute;left:0;right:0;top:0;bottom:calc(var(--pct,0) * 1%);background:color-mix(in srgb,var(--bg) 60%,transparent);border-bottom:1.5px solid var(--meta-2);backdrop-filter:saturate(.55)brightness(.9);pointer-events:none}.book__pct{font-family:var(--font-cond);font-weight:500;font-size:1.1rem;line-height:1;color:var(--text)}.book-detail{display:grid;grid-template-columns:minmax(180px,240px)1fr;gap:clamp(1.6rem,4vw,3.2rem);align-items:start}.book-detail__side{position:sticky;top:5.4rem;align-self:start;display:flex;flex-direction:column}.book-detail__cover img{width:100%;height:auto;box-shadow:0 16px 34px -12px rgba(0,0,0,.6)}.book-detail--nocover{grid-template-columns:1fr}.book-detail--nocover .book-detail__cover{display:none}.book-detail--nocover .book-detail__side{position:static;order:2}.book-detail__series{font-family:var(--font-serif);font-style:italic;font-weight:400;font-size:clamp(1.25rem,1rem + .9vw,1.6rem);line-height:1.2;color:var(--meta);letter-spacing:0;margin-bottom:.25rem}.book-detail__series a{color:inherit;text-decoration:none;transition:color .15s}.book-detail__series a:hover{color:var(--meta-2)}.book-detail__title{font-size:clamp(1.9rem,1.3rem + 2.2vw,2.9rem);font-weight:600;margin-bottom:.35rem}.book-detail__authors{font-family:var(--font-serif);font-size:clamp(1.25rem,1rem + .9vw,1.6rem);line-height:1.25;color:var(--text);margin-bottom:1rem}.book-detail__authors a{color:var(--text);text-decoration:none;transition:color .15s}.book-detail__authors a:hover{color:var(--meta-2)}.book-detail__authors .role{color:var(--meta);font-style:normal;font-size:.72em}.book-detail__pub{font-style:italic;color:var(--text);opacity:.85;margin-bottom:1rem}.book-detail__line{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:1.1rem;text-align:center}.book-detail__date{font-family:var(--font-cond);font-size:.9rem;color:var(--meta)}.stars--lg{font-size:1.25rem;letter-spacing:2px}.stars--lg b::before{letter-spacing:2px}.prose{max-width:66ch}.prose p{margin-block:0 1.2rem}.prose h2,.prose h3{margin-block:2rem .6rem}.prose img{margin-block:1.4rem;border-radius:2px}.prose blockquote{margin-block:1.4rem;padding-left:1.1rem;border-left:2px solid var(--line);color:var(--meta-2);font-style:italic}.prose ul,.prose ol{margin-block:0 1.2rem;padding-left:1.3rem}.prose li{margin-block:.3rem}.prose .has-text-align-center{text-align:center}.prose .asterism{text-align:center;color:var(--meta);margin-block:2rem;font-size:1.1em;letter-spacing:.3em;text-indent:.3em}.book-info{margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid var(--line);font-family:var(--font-sans);font-size:.84rem;line-height:1.5;color:var(--meta);display:flex;flex-direction:column;gap:.5rem}.book-info a{color:var(--meta-2)}.book-info a:hover{color:var(--title)}.book-info b{font-weight:500;color:var(--meta);margin-right:.15em}.book-info .role{font-style:italic;opacity:.8}.book-prevnext{display:flex;justify-content:space-between;gap:1.5rem;margin-top:clamp(2.2rem,5vw,3.5rem);padding-top:1.4rem;border-top:1px solid var(--line);font-family:var(--font-sans);font-size:.9rem}.book-prevnext a{color:var(--meta);font-weight:500}.book-prevnext a:hover{color:var(--title)}.book-prevnext__next{margin-left:auto;text-align:right}.list-head{margin-bottom:1.6rem}.list-kicker{font-family:var(--font-sans);font-size:.82rem;font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--meta);display:block;margin-bottom:.35rem}.pagination{display:flex;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.4rem;border-top:1px solid var(--line);font-family:var(--font-sans);font-size:.9rem}.pagination a{color:var(--meta);font-weight:500}.pagination a:hover{color:var(--title)}.pagination .next{margin-left:auto}#search{--pagefind-ui-scale:.9;--pagefind-ui-primary:var(--title);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--surface);--pagefind-ui-border:var(--line);--pagefind-ui-tag:var(--surface);--pagefind-ui-border-width:1px;--pagefind-ui-font:var(--font-sans);max-width:640px}@media(max-width:640px){.book-detail{grid-template-columns:1fr}.book-detail__side{position:static}.book-detail__cover{max-width:200px}.site-header__inner{gap:.8rem 1.4rem}.wordmark__name{font-size:1.6rem}}