.book{--paper:#fbf7ef;--paper-2:#f4eee2;--page:#fffdf8;--ink:#2b2620;--ink-2:#5d554b;--ink-3:#978c7e;--rule:#e4dccd;--rule-2:#d6ccb8;--ribbon:#9c3d2a;--ribbon-soft:#f3e2dc;--moss:#4d6b3c;--moss-soft:#e6ecdc;--gold:#a47a22;--cobalt:var(--ribbon);--faint:var(--ink-3);--muted:var(--ink-2);--hair:var(--rule);--good:var(--moss);--warn:var(--gold);--book-serif:"Literata", "Newsreader", Georgia, serif;--book-sans:"IBM Plex Sans", system-ui, sans-serif;--book-mono:"IBM Plex Mono", ui-monospace, monospace;background:var(--paper);color:var(--ink);font-family:var(--book-serif);min-height:80vh}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .book{--paper:#1b1916;--paper-2:#221f1b;--page:#201d19;--ink:#e9e2d6;--ink-2:#b8ad9d;--ink-3:#857a6b;--rule:#37322b;--rule-2:#463f36;--ribbon:#e08a72;--ribbon-soft:#3a241e;--moss:#9dbb86;--moss-soft:#263021;--gold:#d8ae55}}:root[data-theme=dark] .book{--paper:#1b1916;--paper-2:#221f1b;--page:#201d19;--ink:#e9e2d6;--ink-2:#b8ad9d;--ink-3:#857a6b;--rule:#37322b;--rule-2:#463f36;--ribbon:#e08a72;--ribbon-soft:#3a241e;--moss:#9dbb86;--moss-soft:#263021;--gold:#d8ae55}.book a{color:var(--ribbon)}.book .ui{font-family:var(--book-sans)}.book .small-caps{font-family:var(--book-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:600}.shelf{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:34px 28px;display:grid}.cover{aspect-ratio:5/7;border-radius:3px 8px 8px 3px;flex-direction:column;justify-content:space-between;padding:26px 22px 20px 30px;transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s;display:flex;position:relative;overflow:hidden;box-shadow:inset 7px 0 #0000002e,inset 9px 0 #ffffff14,0 1px 1px #00000014,0 14px 30px -12px #28190a73;color:#f7f1e6!important;text-decoration:none!important}.cover:hover{transform:translateY(-6px)rotate(-.6deg);box-shadow:inset 7px 0 #0000002e,inset 9px 0 #ffffff14,0 26px 40px -14px #28190a8c}.cover:after{content:"";pointer-events:none;background:linear-gradient(115deg,#ffffff1f,#0000 38% 70%,#0000001f);position:absolute;inset:0}.cover .kicker{font-family:var(--book-sans);letter-spacing:.18em;text-transform:uppercase;opacity:.78;font-size:10.5px}.cover h2{font-family:var(--book-serif);letter-spacing:-.01em;margin-top:12px;font-size:29px;font-weight:600;line-height:1.08}.cover p{opacity:.86;margin-top:12px;font-size:13.5px;line-height:1.45}.cover .foot{font-family:var(--book-sans);opacity:.9;justify-content:space-between;font-size:11.5px;display:flex}.cover .bar{background:#ffffff38;border-radius:2px;height:3px;margin-top:10px;overflow:hidden}.cover .bar i{background:#f7f1e6;height:100%;display:block}.cover .glyph{opacity:.14;width:170px;height:170px;position:absolute;top:44%;right:-18px}.toc-part{margin-top:34px}.toc-part h3{font-family:var(--book-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ribbon);border-bottom:1px solid var(--rule-2);padding-bottom:8px;font-size:11.5px;font-weight:600}.toc-row{border-bottom:1px solid var(--rule);grid-template-columns:38px 1fr auto;align-items:baseline;gap:14px;padding:11px 4px;display:grid;color:var(--ink)!important;text-decoration:none!important}.toc-row:hover{background:var(--paper-2)}.toc-row .n{font-family:var(--book-mono);color:var(--ink-3);font-size:12px}.toc-row .t{font-size:17px;line-height:1.3}.toc-row .s{-webkit-line-clamp:2;color:var(--ink-2);-webkit-box-orient:vertical;margin-top:2px;font-size:14px;line-height:1.4;display:-webkit-box;overflow:hidden}.toc-row .m{font-family:var(--book-sans);color:var(--ink-3);white-space:nowrap;text-align:right;font-size:12px}.toc-row .done{color:var(--moss);font-weight:600}.toc-row .part-read{color:var(--gold)}.reader-grid{grid-template-columns:220px minmax(0,1fr) 330px;gap:44px;max-width:1360px;margin:0 auto;padding:0 28px;display:grid}@media (max-width:1180px){.reader-grid{grid-template-columns:minmax(0,1fr) 320px}.reader-left{display:none}}@media (max-width:860px){.reader-grid{grid-template-columns:minmax(0,1fr);padding:0 16px}.reader-right{max-height:none!important;position:static!important}}.reader-left,.reader-right{align-self:start;max-height:calc(100vh - 92px);padding-bottom:20px;position:sticky;top:76px;overflow-y:auto}.runhead{font-family:var(--book-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--rule);justify-content:space-between;gap:12px;padding:18px 0 12px;font-size:11px;display:flex}.progress-line{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.progress-line i{background:var(--ribbon);width:0;height:100%;transition:width .2s linear;display:block}.chapter{max-width:680px;margin:0 auto;padding-bottom:40px;font-size:19px;line-height:1.7}.chapter .ch-n{font-family:var(--book-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--ribbon);margin-top:46px;font-size:12px;font-weight:600}.chapter h1.ch-title{font-family:var(--book-serif);letter-spacing:-.015em;margin:12px 0 14px;font-size:clamp(34px,4.6vw,50px);font-weight:600;line-height:1.06}.chapter .ch-sub{color:var(--ink-2);font-size:19px;font-style:italic;line-height:1.5}.chapter .ch-meta{font-family:var(--book-sans);color:var(--ink-3);flex-wrap:wrap;gap:14px;margin:18px 0 30px;font-size:12.5px;display:flex}.chapter .body>p:first-of-type:not(:has(>strong:first-child,>em:first-child,>code:first-child)):first-letter{float:left;color:var(--ribbon);padding:6px 10px 0 0;font-size:4.1em;font-weight:600;line-height:.82}.chapter .body>*+*{margin-top:1em}.chapter .body h2{letter-spacing:-.005em;margin-top:2.1em;font-size:27px;font-weight:600;line-height:1.2}.chapter .body h3{margin-top:1.8em;font-size:21px;font-weight:600;line-height:1.25}.chapter .body h4{font-family:var(--book-sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin-top:1.6em;font-size:13px}.chapter .body p{-webkit-hyphens:auto;hyphens:auto;text-wrap:pretty}.chapter .body strong{font-weight:650}.chapter .body ul,.chapter .body ol{padding-left:1.3em}.chapter .body li{margin-top:.35em}.chapter .body li::marker{color:var(--ribbon)}.chapter .body blockquote{border-left:3px solid var(--ribbon);color:var(--ink-2);margin:1.4em 0;padding:4px 0 4px 22px;font-style:italic}.chapter .body code{font-family:var(--book-mono);background:var(--paper-2);border:1px solid var(--rule);border-radius:4px;padding:.08em .35em;font-size:.8em}.chapter .body pre{background:var(--page);border:1px solid var(--rule);border-radius:6px;padding:16px 18px;font-size:14px;line-height:1.55;overflow-x:auto}.chapter .body pre code{background:0 0;border:0;padding:0;font-size:1em}.chapter .body table{border-collapse:collapse;width:100%;font-family:var(--book-sans);margin:1.4em 0;font-size:14.5px}.chapter .body th{text-align:left;border-bottom:1.5px solid var(--ink);padding:7px 10px 7px 0;font-weight:600}.chapter .body td{border-bottom:1px solid var(--rule);vertical-align:top;padding:7px 10px 7px 0}.chapter .body hr{text-align:center;border:0;margin:2.4em 0}.chapter .body hr:after{content:"❧";color:var(--ink-3);font-size:20px}.chapter .body mark{color:inherit;background:#d6aa4647;border-radius:2px;padding:0 .15em}.chapter .body img{border-radius:6px;max-width:100%}.chapter .body .eyebrow,.chapter .body>h1:first-child,.chapter .body>.eyebrow+h1{display:none}.chapter .body .hook{color:var(--ink-2);font-size:21px;font-style:italic;line-height:1.55}.chapter .body .callout{background:var(--page);border:1px solid var(--rule);border-left:3px solid var(--gold);border-radius:6px;padding:14px 18px;font-size:17px}.chapter .body .callout.analogy{border-left-color:var(--ribbon);background:var(--ribbon-soft)}.chapter .body .callout.tip,.chapter .body .callout.exam{border-left-color:var(--moss);background:var(--moss-soft)}.chapter .body .next-teaser,.chapter .body .recap{font-family:var(--book-sans);background:var(--paper-2);border-radius:6px;padding:14px 18px;font-size:15px}.side-title{font-family:var(--book-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:22px 0 10px;font-size:10.5px;font-weight:600}.side-toc a{font-family:var(--book-sans);border-left:2px solid var(--rule);padding:5px 0 5px 10px;font-size:13px;line-height:1.35;display:block;color:var(--ink-2)!important;text-decoration:none!important}.side-toc a.l3{padding-left:22px;font-size:12.5px}.side-toc a.on{border-left-color:var(--ribbon);font-weight:600;color:var(--ink)!important}.side-toc a:hover{color:var(--ink)!important}.tutor{font-family:var(--book-sans);background:var(--page);border:1px solid var(--rule);border-radius:10px;flex-direction:column;margin-top:18px;display:flex;overflow:hidden}.tutor header{border-bottom:1px solid var(--rule);align-items:center;gap:10px;padding:12px 14px;display:flex}.tutor header .dot{background:var(--moss);width:8px;height:8px;box-shadow:0 0 0 3px var(--moss-soft);border-radius:50%}.tutor header b{font-size:13px}.tutor header span{color:var(--ink-3);margin-left:auto;font-size:11.5px}.tutor .log{flex-direction:column;gap:12px;max-height:46vh;padding:12px 14px;font-size:14px;line-height:1.5;display:flex;overflow-y:auto}.tutor .me{background:var(--paper-2);border-radius:10px 10px 2px;align-self:flex-end;max-width:88%;padding:8px 11px}.tutor .it{font-family:var(--book-serif);font-size:15px}.tutor .md>*+*{margin-top:.55em}.tutor .md ol,.tutor .md ul{padding-left:1.2em}.tutor .md code{font-family:var(--book-mono);background:var(--paper-2);border-radius:3px;padding:0 .25em;font-size:.82em}.tutor .md strong{font-weight:650}.tutor .it small{font-family:var(--book-sans);color:var(--ink-3);margin-top:6px;font-size:11px;display:block}.tutor .quick{flex-wrap:wrap;gap:6px;padding:0 14px 10px;display:flex}.tutor .quick button{border:1px solid var(--rule-2);color:var(--ink-2);background:0 0;border-radius:99px;padding:4px 9px;font-size:12px}.tutor .quick button:hover{border-color:var(--ribbon);color:var(--ribbon)}.tutor form{border-top:1px solid var(--rule);display:flex}.tutor input{min-width:0;color:var(--ink);background:0 0;border:0;outline:none;flex:1;padding:12px 14px;font-size:14px}.tutor form button{color:var(--ribbon);padding:0 14px;font-size:12.5px;font-weight:600}.tutor .quote{border-left:2px solid var(--gold);font-family:var(--book-serif);color:var(--ink-2);gap:8px;margin:0 14px 8px;padding:6px 10px;font-size:13px;font-style:italic;display:flex}.tutor .quote button{color:var(--ink-3);margin-left:auto;font-style:normal}.pop{z-index:70;background:var(--ink);color:var(--paper);font-family:var(--book-sans);border-radius:8px;gap:2px;padding:3px;display:flex;position:absolute;box-shadow:0 10px 24px #00000040}.pop button{color:var(--paper);border-radius:6px;padding:6px 10px;font-size:12.5px}.pop button:hover{background:#ffffff24}.predict{font-family:var(--book-sans);background:var(--page);border:1px dashed var(--rule-2);border-radius:10px;margin:0 0 34px;padding:16px 18px}.predict b{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-size:11px}.predict p{font-family:var(--book-serif);margin-top:6px;font-size:18px}.predict .why{color:var(--ink-3);margin-top:8px;font-size:12.5px}.after{max-width:680px;font-family:var(--book-sans);margin:10px auto 0}.after .card{background:var(--page);border:1px solid var(--rule);border-radius:12px;margin-top:22px;padding:22px 24px}.after h3{font-family:var(--book-serif);font-size:24px;font-weight:600;line-height:1.2}.after .lead{color:var(--ink-2);margin-top:6px;font-size:14.5px}.after textarea{width:100%;font-family:var(--book-serif);background:var(--paper);border:1px solid var(--rule-2);color:var(--ink);resize:vertical;border-radius:8px;outline:none;margin-top:14px;padding:12px 14px;font-size:17px;line-height:1.5}.after textarea:focus{border-color:var(--ribbon)}.after .row{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;font-size:13px;display:flex}.after .btn{background:var(--ink);color:var(--paper);border-radius:8px;margin-left:auto;padding:9px 16px;font-size:13.5px;font-weight:600}.after .btn:disabled{background:var(--rule-2);color:var(--ink-3)}.after .chip{border:1px solid var(--rule-2);color:var(--ink-2);border-radius:99px;padding:4px 10px;font-size:12.5px}.after .chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.verdict{letter-spacing:.14em;text-transform:uppercase;font-size:11px;font-weight:700}.verdict.correct{color:var(--moss)}.verdict.partial{color:var(--gold)}.verdict.missed{color:var(--ribbon)}.pagers{grid-template-columns:1fr 1fr;gap:16px;margin-top:30px;display:grid}.pagers a{border:1px solid var(--rule);background:var(--page);border-radius:10px;padding:16px 18px;display:block;color:var(--ink)!important;text-decoration:none!important}.pagers a:hover{border-color:var(--ribbon)}.pagers small{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:11px;display:block}.pagers strong{font-family:var(--book-serif);font-size:17px;font-weight:600;line-height:1.3}.pagers .nx{text-align:right}.book .rc-shell{font-family:var(--book-sans)}.chapter .body table{max-width:100%;display:block;overflow-x:auto}.chapter .body code{overflow-wrap:anywhere}.chapter .body pre code{overflow-wrap:normal}.chapter .body .callout,.chapter .body blockquote{overflow-x:auto}
