/* book-print.css: the print edition of the book (named by series_title in tools/book/series.json).
   Linked with media="print" by the book's one-page packages (/book/whole.html and the smaller books), which
   load the site's own styles for the screen only. tools/book/build_pdfs.js prints those pages to the PDFs in
   /book/pdf/; printing from the browser gives the same book.
   Page: 170 x 240 mm. Body: Lora 10.5pt. Headings: Fraunces. Labels: IBM Plex Mono.
   Only flat colour, thin rules and vector art: no shadows, gradients or filters (they are rasterised and
   make the PDF huge). Each chapter is a named page (set in the package itself) with a running footer and a
   thumb tab in its part's colour: Part One at the top of the right edge, Part Two in the middle, Part Three
   at the bottom. */

/* The same typefaces as the site, as static (non-variable) files: a PDF embeds these as small TrueType
   subsets instead of large Type 3 fonts. Served by Google Fonts like the rest of the site's type. Defined
   after the site's own Google Fonts link, so in print they replace the variable files for every element
   that asks for Lora or Fraunces (the filled-in examples' stylesheet included). */
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 400; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NVf8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9vIVYX9G37lvd9sPEKsxx664UJf1hLTc7RrUo.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 500; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NVf8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9vIVYX9G37lvd9sPEKsxx664UJf1h5Tc7RrUo.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 600; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NVf8FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0K1ChJdt9vIVYX9G37lvd9sPEKsxx664UJf1iVSs7RrUo.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NUh8FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0K7iN7hzFUPJH58nib1603gg7S2nfgRYIctxuTCf7W.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 500; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NUh8FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0K7iN7hzFUPJH58nib1603gg7S2nfgRYIchRuTCf7W.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 600; src: url(https://fonts.gstatic.com/s/fraunces/v38/6NUh8FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2Wa0K7iN7hzFUPJH58nib1603gg7S2nfgRYIcaRyTCf7W.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 400; src: url(https://fonts.gstatic.com/s/lora/v37/0QI8MX1D_JOuMw_hLdO6T2wV9KnW-MoFoq92mQ.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 600; src: url(https://fonts.gstatic.com/s/lora/v37/0QI8MX1D_JOuMw_hLdO6T2wV9KnW-BQCoq92mQ.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/lora/v37/0QI6MX1D_JOuGQbT0gvTJPa787weuxJBkqg.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 500; src: url(https://fonts.gstatic.com/s/lora/v37/0QI6MX1D_JOuGQbT0gvTJPa787wsuxJBkqg.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 600; src: url(https://fonts.gstatic.com/s/lora/v37/0QI6MX1D_JOuGQbT0gvTJPa787zAvBJBkqg.ttf) format('truetype'); }

/* The few characters those faces lack (ticks and crosses, arrows, ā ł, Greek δ) come from Noto fonts, also from
   Google Fonts, added to each family by unicode-range, so the PDF never falls back to a system font (and the
   figures, which are inline SVG in the print edition and set in Lora, get them too). */
/* (each extra face repeats a real face's style and weight exactly, so Chromium joins them into one font) */
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 400; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 400; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 400; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 500; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 500; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 500; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 600; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 600; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: normal; font-weight: 600; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 400; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 400; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 400; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 600; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 600; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Lora'; font-style: italic; font-weight: 600; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 400; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 400; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 400; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 500; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 500; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 500; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 600; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 600; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: normal; font-weight: 600; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 400; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 400; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 400; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 500; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 500; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 500; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 600; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 600; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 600; unicode-range: U+0100-024F, U+0370-03FF; src: url(https://fonts.gstatic.com/s/notoserif/v33/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J4wsL2JAlAhZqFCjwA.ttf) format('truetype'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 400; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; unicode-range: U+2713-2718; src: url(https://fonts.gstatic.com/s/notosanssymbols2/v25/I_uyMoGduATTei9eI8daxVHDyfisHr71ypM.ttf) format('truetype'); }
@font-face { font-family: 'IBM Plex Mono'; font-style: normal; font-weight: 500; unicode-range: U+2190-21FF; src: url(https://fonts.gstatic.com/s/notosansmath/v19/7Aump_cpkSecTWaHRlH2hyV5UHkG.ttf) format('truetype'); }

/* A bound book: odd pages are right-hand pages (rectos), even pages left-hand (versos). The wider margin is on
   the inside (the gutter); the page number, the running head and the part's thumb tab sit on the outer edge.
   Each chapter and back-matter section is a named page (set in the package itself, see page_rules in
   tools/book/build_book.py) with its own running head and tab. Page 1 is the half-title: the cover is a
   separate file (build_pdfs.js). */
@page {
  size: 170mm 240mm;
  margin: 19mm 17mm 21mm 21mm;
}
/* the running head's words on pages without their own (the book's name) are set by the page itself, from
   series_title in tools/book/series.json (build_book.py page_rules) */
@page :right { margin: 19mm 17mm 21mm 21mm;
  @bottom-left { content: ""; font-family: "Lora", Georgia, serif; font-style: italic; font-size: 7.4pt; color: #6E6556; vertical-align: top; padding-top: 3mm; border-top: .4pt solid #CDBF98; white-space: nowrap; }
  @bottom-center { content: ""; vertical-align: top; border-top: .4pt solid #CDBF98; }
  @bottom-right { content: counter(page); font-family: "Fraunces", Georgia, serif; font-weight: 500; font-size: 8.6pt; color: #2B2620; vertical-align: top; padding-top: 3mm; border-top: .4pt solid #CDBF98; text-align: right; }
}
@page :left { margin: 19mm 21mm 21mm 17mm;
  @bottom-left { content: counter(page); font-family: "Fraunces", Georgia, serif; font-weight: 500; font-size: 8.6pt; color: #2B2620; vertical-align: top; padding-top: 3mm; border-top: .4pt solid #CDBF98; text-align: left; }
  @bottom-center { content: ""; vertical-align: top; border-top: .4pt solid #CDBF98; }
  @bottom-right { content: ""; font-family: "Lora", Georgia, serif; font-style: italic; font-size: 7.4pt; color: #6E6556; vertical-align: top; padding-top: 3mm; border-top: .4pt solid #CDBF98; white-space: nowrap; text-align: right; }
}
@page pe-full { margin: 0;
  @bottom-left { content: none; border: 0; } @bottom-center { content: none; border: 0; } @bottom-right { content: none; border: 0; } }
@page pe-front {
  @bottom-left { content: none; border: 0; } @bottom-center { content: none; border: 0; } @bottom-right { content: none; border: 0; } }
@page pe-blank {
  @bottom-left { content: none; border: 0; } @bottom-center { content: none; border: 0; } @bottom-right { content: none; border: 0; } }
/* an intentionally blank page, switched on by build_pdfs.js so the title page and each part opener start on
   a right-hand page */
.pe-recto-pad { display: none; }
.pe-recto-pad.is-on { display: block; page: pe-blank; break-before: page; height: 2mm; }

:root { --ink: #2B2620; --soft: #5A5346; --line: #D9CBA3; --paper: #F7F1E1; --brass: #A8792F; --pc: #2B2620; --pt: #F3EEE2; }

/* ---------- everything that is not the book goes ---------- */
html, body { background: #fff !important; margin: 0 !important; padding: 0 !important; }
body > :not(main) { display: none !important; }
* { box-shadow: none !important; text-shadow: none !important; filter: none !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; animation: none !important; transition: none !important; }
.no-print, .whole-toc, .whole-actions, .whole-note, .whole-top, .read-head.no-print, a.dig, .depth-bar, .pillar-line, .tol-listen-top, .tol-book-audio,
main [class*="tol-"]:not(.tol-try), .tsk-line-btn, .tsk-line, button, .gl-dive, .bt-switch, .book-end, .book-open { display: none !important; }

body { font-family: "Lora", Georgia, serif; font-size: 10.4pt; line-height: 1.5; color: var(--ink); -webkit-print-color-adjust: exact; print-color-adjust: exact; font-kerning: normal; }
main.read { display: block !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
p, li, dd { orphans: 2; widows: 2; hyphens: manual; }
p { margin: 0 0 2.6mm; }
a { color: inherit; text-decoration: none; }
/* site addresses and page references after links (made by build_book.py), and what only belongs on screen */
.pe-u { font-size: .86em; color: #5A5346; }
.pe-xref { color: #5A5346; }
.pe-nb { white-space: nowrap; }
.pe-noprint, .pe-body .nine-more, .pe-body p.depth-bar { display: none !important; }
strong { font-weight: 600; }
em, cite { font-style: italic; }
small { font-size: 8.4pt; }
ul, ol { margin: 0 0 3mm; padding-left: 5mm; }
li { margin: 0 0 1.2mm; }
img, svg { max-width: 100%; }

/* the invisible markers build_pdfs.js uses to find pages */
.pe-mark { position: absolute; font-size: 1px; line-height: 1px; color: #fff; white-space: nowrap; hyphens: none; letter-spacing: 0; }

/* ---------- cover ---------- */
.pe-cover, .pe-backcover, .pe-part { page: pe-full; position: relative; width: auto; height: 239.6mm; overflow: hidden; break-after: page; break-before: page; background: var(--paper); }
.pe-cover { break-before: auto; }
.pe-rules { position: absolute; inset: 0; width: 100%; height: 100%; }
.pe-cover-band { position: absolute; top: 0; left: 0; right: 0; height: 15mm; background: var(--acc); color: #FFFDF8; display: flex; justify-content: space-between; align-items: center; padding: 0 13mm 0 24mm; font-family: "IBM Plex Mono", monospace; font-size: 7pt; letter-spacing: .16em; text-transform: uppercase; }
.pe-cover-band span:last-child { font-family: "Lora", serif; font-style: italic; text-transform: none; letter-spacing: 0; font-size: 8.5pt; }
.pe-cover-text { position: absolute; top: 31mm; left: 24mm; right: 14mm; }
.pe-cover-title { font-family: "Fraunces", Georgia, serif; font-weight: 600; font-size: 35pt; line-height: 1.02; letter-spacing: -.012em; margin: 0; color: var(--ink); }
.pe-cover-sub { font-style: italic; font-size: 12.5pt; line-height: 1.38; margin: 4.5mm 0 0; color: var(--soft); max-width: 118mm; text-wrap: balance; }
.pe-cover-art { position: absolute; left: 24mm; right: 10mm; top: 86mm; height: 100mm; display: flex; align-items: center; justify-content: center; }
.pe-cover-art::before { content: ""; position: absolute; width: 104mm; height: 104mm; border-radius: 50%; background: var(--tint); left: 50%; top: 50%; transform: translate(-50%, -50%); }
.pe-cover-art .pe-art { position: relative; width: 116mm; height: 87mm; }
.pe-cover-foot { position: absolute; left: 24mm; right: 14mm; bottom: 13mm; border-top: .6pt solid var(--acc); padding-top: 3.5mm; }
.pe-cover-pkg { font-family: "Fraunces", serif; font-weight: 600; font-size: 13pt; color: var(--acc); margin: 0 0 1mm; }
.pe-cover-pkg span { font-weight: 400; color: var(--soft); }
.pe-cover-line { font-size: 9pt; color: var(--soft); margin: 0; }
.pe-cover-by { font-family: "Lora", Georgia, serif; font-style: italic; font-weight: 500; font-size: 11pt; letter-spacing: .02em; text-transform: none; margin: 5mm 0 0; color: var(--ink); }

/* ---------- front matter ---------- */
.pe-half, .pe-titlep, .pe-copy, .pe-how, .pe-toc { page: pe-front; break-before: page; }
.pe-half { height: 196mm; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
.pe-half-t { font-family: "Fraunces", serif; font-weight: 500; font-size: 22pt; margin: 0 0 3mm; }
.pe-half-s { font-family: "IBM Plex Mono", monospace; font-size: 7.5pt; letter-spacing: .2em; text-transform: uppercase; color: var(--soft); margin: 0; }
.pe-half::after { content: ""; width: 18mm; border-top: .6pt solid var(--brass); margin-top: 6mm; }
.pe-titlep { height: 196mm; display: flex; flex-direction: column; justify-content: space-between; text-align: center; border-top: 1.4pt solid var(--acc); border-bottom: 1.4pt solid var(--acc); padding: 10mm 0; box-sizing: border-box; }
.pe-titlep-t { font-family: "Fraunces", serif; font-weight: 600; font-size: 30pt; line-height: 1.05; margin: 0 0 3mm; }
.pe-titlep-s { font-style: italic; font-size: 12pt; color: var(--soft); margin: 0 auto 6mm; max-width: 100mm; text-wrap: balance; }
.pe-titlep-v { font-family: "IBM Plex Mono", monospace; font-size: 7.5pt; letter-spacing: .18em; text-transform: uppercase; color: var(--acc); margin: 0; }
.pe-titlep-art .pe-art { width: 70mm; height: 52mm; }
.pe-titlep-a { font-family: "Lora", Georgia, serif; font-style: italic; font-weight: 500; font-size: 12pt; letter-spacing: .02em; text-transform: none; margin: 0 0 3mm; }
.pe-titlep-p { font-size: 8.5pt; color: var(--soft); margin: 0; line-height: 1.5; }
.pe-copy { height: 196mm; display: flex; flex-direction: column; justify-content: flex-end; }
.pe-copy-in { font-size: 7.9pt; line-height: 1.5; color: #3F3A31; }
.pe-copy-in p { margin: 0 0 2.2mm; }
.pe-copy-in a { text-decoration: none; }

h1 { font-family: "Fraunces", serif; font-weight: 600; font-size: 22pt; line-height: 1.12; margin: 0 0 5mm; color: var(--ink); break-after: avoid; }
.pe-how h1, .pe-toc h1 { padding-bottom: 3mm; border-bottom: .6pt solid var(--brass); }
.pe-how-lede { font-style: italic; font-size: 11pt; color: var(--soft); }
.pe-how-grid { columns: 2; column-gap: 7mm; }
.pe-how-grid > div { break-inside: avoid; margin: 0 0 4mm; }
.pe-how .pe-how-h { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.2pt; letter-spacing: .14em; text-transform: uppercase; color: var(--brass); margin: 0 0 1.4mm; }
.pe-how p, .pe-how li { font-size: 9.4pt; line-height: 1.48; }
.pe-how-parts { list-style: none; padding: 0; }
.pe-how-parts li { border-left: 2.4pt solid var(--pc); padding-left: 2.6mm; }
.pe-how-keys { list-style: none; padding: 0; }
.pe-how-keys li { display: flex; gap: 2.4mm; align-items: baseline; }
.pe-key { flex: 0 0 3.2mm; height: 3.2mm; border-radius: .8mm; display: inline-block; transform: translateY(.5mm); }
.pe-key-scene { background: #F1ECF8; border-left: 1.6pt solid #8A6FC0; }
.pe-key-words { background: #FFF4DA; border-left: 1.6pt solid #C99A3E; }
.pe-key-try { border: .8pt solid #3E6B4C; }
.pe-key-mix { background: #F8F3EC; border: .6pt dashed #B49770; }

/* contents */
.pe-toc-list { list-style: none; padding: 0; margin: 0; }
.pe-toc-row { margin: 0; break-inside: avoid; }
.pe-toc-row a { display: flex; align-items: baseline; text-decoration: none; padding: .9mm 0; }
.pe-toc-l { flex: 0 0 18mm; font-family: "IBM Plex Mono", monospace; font-size: 7.4pt; letter-spacing: .06em; color: var(--brass); }
.pe-toc-t { flex: 0 1 auto; font-size: 9.6pt; line-height: 1.32; }
.pe-toc-s { display: block; }
.pe-toc-dots { flex: 1 1 6mm; min-width: 6mm; border-bottom: .7pt dotted #B5A77F; margin: 0 2mm; transform: translateY(-.8mm); }
.pe-pg { font-family: "Fraunces", serif; font-weight: 500; font-size: 9.4pt; min-width: 7mm; text-align: right; font-variant-numeric: lining-nums tabular-nums; }
.pe-toc-row.is-part { margin-top: 3.6mm; }
.pe-toc-row.is-part a { border-top: .6pt solid var(--pc); padding-top: 1.6mm; }
.pe-toc-row.is-part .pe-toc-l { color: var(--pc); font-weight: 500; }
.pe-toc-row.is-part .pe-toc-t { font-family: "Fraunces", serif; font-weight: 600; font-size: 11pt; color: var(--pc); }
.pe-toc-row.is-ch .pe-toc-l { text-align: right; padding-right: 3.5mm; box-sizing: border-box; font-family: "Fraunces", serif; font-size: 8.8pt; color: var(--soft); }
.pe-toc-row.is-front, .pe-toc-row.is-back { margin-top: .4mm; }
.pe-toc-row.is-back:first-of-type, .pe-toc-row.is-ch + .pe-toc-row.is-back { margin-top: 3.6mm; }
.pe-toc-row.is-back .pe-toc-t, .pe-toc-row.is-front .pe-toc-t { font-style: italic; }

/* ---------- part openers ---------- */
.pe-part { background: var(--paper); }
.pe-part::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 13mm; background: var(--pc); }
.pe-part-in { position: absolute; left: 32mm; right: 16mm; top: 30mm; bottom: 18mm; }
.pe-part-k { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 8pt; letter-spacing: .24em; text-transform: uppercase; color: var(--pc); margin: 0 0 2mm; }
.pe-part-h { font-size: 38pt; line-height: 1; margin: 0 0 5mm; border: 0; padding: 0; text-wrap: balance; }
.pe-part-b { font-style: italic; font-size: 12pt; line-height: 1.42; color: var(--soft); max-width: 100mm; margin: 0 0 9mm; text-wrap: balance; }
.pe-part-art { position: absolute; right: 0; top: -21mm; width: 34mm; height: 28mm; margin: 0; }
.pe-part-art svg { width: 100%; height: 100%; }
.pe-part-l { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.2pt; letter-spacing: .16em; text-transform: uppercase; color: var(--pc); margin: 0 0 2mm; padding-bottom: 1.6mm; border-bottom: .6pt solid var(--pc); }
.pe-part-list { list-style: none; padding: 0; margin: 0; }
.pe-part-list li { display: flex; align-items: baseline; gap: 2mm; margin: 0; padding: 1mm 0; border-bottom: .3pt solid #E2D6B6; font-size: 9.3pt; line-height: 1.3; }
.pe-part-list a { flex: 1; text-decoration: none; }
.pe-part-list a span { display: inline-block; min-width: 15mm; font-family: "IBM Plex Mono", monospace; font-size: 7pt; color: var(--pc); letter-spacing: .05em; }

/* ---------- chapters ---------- */
.pe-ch { break-before: page; position: relative; }
.ch-open { position: relative; margin: 0 0 6mm; padding: 0; break-inside: avoid; break-after: avoid; }
.ch-open::before { content: ""; display: block; width: 26mm; border-top: 2.4pt solid var(--pc); margin: 0 0 4mm; }
.ch-num { font-family: "Fraunces", serif; font-weight: 600; font-size: 50pt; line-height: .95; color: var(--pc); margin: 0; font-variant-numeric: lining-nums; }
.ch-kicker { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.3pt; letter-spacing: .18em; text-transform: uppercase; color: var(--pc); margin: 2.4mm 0 1.6mm; }
.ch-title { font-family: "Fraunces", serif; font-weight: 600; font-size: 20pt; line-height: 1.16; margin: 0 0 4mm; break-after: avoid; }
.ch-intro { font-style: italic; font-size: 11.6pt; line-height: 1.45; color: #4A4338; margin: 0 0 4.5mm; }
.ch-in { background: var(--pt); border-radius: 1.6mm; padding: 3mm 4mm 2mm; }
.ch-in-k { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 6.9pt; letter-spacing: .16em; text-transform: uppercase; color: var(--pc); margin: 0 0 1.6mm; }
.ch-in-list { columns: 2; column-gap: 6mm; margin: 0; padding-left: 4.2mm; font-size: 8.3pt; line-height: 1.3; }
.ch-in-list li { margin: 0 0 1mm; break-inside: avoid; }
.ch-in-list li::marker { color: var(--pc); font-family: "IBM Plex Mono", monospace; font-size: 7pt; }
.ch-in-list a { text-decoration: none; }

.pe-body h3 { font-family: "Fraunces", serif; font-weight: 600; font-size: 13.2pt; line-height: 1.22; margin: 6.5mm 0 2.4mm; break-after: avoid; color: var(--ink); }
.pe-body h4 { font-family: "Fraunces", serif; font-weight: 600; font-size: 11pt; line-height: 1.25; margin: 4.5mm 0 1.8mm; break-after: avoid; }
.pe-body h5 { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.6pt; letter-spacing: .12em; text-transform: uppercase; color: var(--pc); margin: 4mm 0 1.4mm; break-after: avoid; }
.pe-body > h3, .pe-body .chapter-body > h3 { padding-top: 2.4mm; border-top: .5pt solid #E0D3B0; }
.pe-body h3 + *, .pe-body h4 + * { break-before: avoid; }
.pe-body h3, .pe-body h4, .pe-body h5 { break-inside: avoid; }
.pe-body ol.ideas > li > h3 + p { break-before: avoid; orphans: 3; }

/* the big ideas: numbered sections */
.pe-body ol.ideas { list-style: none; padding: 0; margin: 2mm 0 5mm; counter-reset: idea; display: block !important; }
.pe-body ol.ideas > li { counter-increment: idea; margin: 0 0 4.5mm; padding: 0; position: relative; break-inside: auto; }
.pe-body ol.ideas > li > h3 { border: 0; padding: 0; margin: 0 0 1.8mm; font-size: 12.6pt; }
.pe-body ol.ideas > li > h3::before { content: counter(idea, decimal-leading-zero); display: block; font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.6pt; letter-spacing: .12em; color: var(--pc); margin-bottom: .6mm; }
.pe-body ol.ideas > li::before { content: none !important; }

/* boxes */
.pe-body .scene { margin: 3mm 0 4.5mm; padding: 3mm 4mm 1mm; background: #F5F1FA; border-left: 2.4pt solid #8A6FC0; border-radius: 0 1.4mm 1.4mm 0; break-inside: avoid; }
.pe-body .scene-when { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7pt; letter-spacing: .14em; text-transform: uppercase; color: #6A52A0; margin: 0 0 1.4mm; font-style: normal; }
.pe-body .scene p:not(.scene-when) { font-style: italic; }
.pe-body .simple-lede { font-style: italic; font-size: 11pt; color: #4A4338; }
.pe-body p.tol-try, .pe-body p.pe-words { margin: 2.4mm 0 3.2mm; padding: 2.2mm 3.4mm; background: #FFF6DE; border-left: 2.2pt solid #C99A3E; border-radius: 0 1.2mm 1.2mm 0; break-inside: avoid; }
.pe-body p.pe-words strong:first-child, .pe-body p.tol-try strong:first-child { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7pt; letter-spacing: .12em; text-transform: uppercase; color: #8A6420; display: block; margin-bottom: .6mm; }
.pe-body p.pe-try { margin: 2.4mm 0 3.2mm; padding: 2.2mm 3.4mm; border: .7pt solid var(--pc); border-radius: 1.4mm; break-inside: avoid; }
.pe-body p.pe-try strong:first-child { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7pt; letter-spacing: .12em; text-transform: uppercase; color: var(--pc); display: block; margin-bottom: .6mm; }
.pe-body p.pe-ex strong:first-child { font-style: italic; font-weight: 600; color: var(--pc); }
.pe-body p.pe-safe { padding: 2.2mm 3.4mm; background: #FBEDE7; border-left: 2.2pt solid #96412B; border-radius: 0 1.2mm 1.2mm 0; break-inside: avoid; }
.pe-body p.pe-note { font-size: 9pt; line-height: 1.45; padding: 2mm 3.4mm; background: #F3F0E8; border-radius: 1.2mm; break-inside: avoid; }
.pe-body p.pe-note strong:first-child { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 6.9pt; letter-spacing: .12em; text-transform: uppercase; color: var(--soft); }
.pe-body p.pe-mix, .pe-body p.pe-mix + ul, .pe-body h3[id$="--mix-ups"] + ul, .pe-body h4[id$="--mix-ups"] + ul { background: #F8F3EC; border: .6pt dashed #B49770; border-radius: 1.4mm; padding: 2.2mm 3.4mm 1.2mm 7mm; break-inside: avoid; }
.pe-body p.pe-mix { padding-left: 3.4mm; }
.pe-body p.pe-mix + ul { margin-top: -3.4mm; border-top: 0; border-radius: 0 0 1.4mm 1.4mm; }
.pe-body p.pe-solo { padding: 2mm 3.4mm; border: .6pt dashed #A9B7A0; border-radius: 1.4mm; break-inside: avoid; }
.pe-body .try-this { margin: 3mm 0 4mm; padding: 3mm 4mm 1.4mm; border: .8pt solid var(--pc); border-radius: 1.6mm; break-inside: avoid; }
.pe-body .try-this p { margin: 0 0 1.6mm; }
.pe-body .try-this > p:first-child > strong:first-child { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7pt; letter-spacing: .12em; text-transform: uppercase; color: var(--pc); }
.pe-body .try-this[data-in-short] { background: var(--pt); border: 0; border-left: 2.4pt solid var(--pc); border-radius: 0 1.6mm 1.6mm 0; }
.pe-body .try-this p a { white-space: normal; overflow-wrap: anywhere; }
.pe-body .yp-note { background: #FBF8F0; border: .7pt solid #CDBF98; border-left: .7pt solid #CDBF98; }
.pe-body .two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; margin: 3mm 0 4mm; break-inside: avoid; }
.pe-body .two-col > div { padding: 2.4mm 3.2mm; border: .6pt solid #D3C49C; border-radius: 1.4mm; }
.pe-body .locked-section { border-left: 1pt solid #D3C49C; padding-left: 3.4mm; }
.pe-body blockquote { margin: 3mm 0; padding: 0 0 0 4mm; border-left: 1.4pt solid var(--line); font-style: italic; }
.pe-body pre { font-family: "IBM Plex Mono", monospace; font-size: 8pt; line-height: 1.45; background: #F3F0E8; padding: 2mm 3mm; border-radius: 1.2mm; white-space: pre-wrap; break-inside: avoid; }
.pe-body code { font-family: "IBM Plex Mono", monospace; font-size: 8.4pt; }
.pe-body .table-wrap { overflow: visible !important; margin: 3mm 0 4mm; }
.pe-body table { width: 100%; border-collapse: collapse; font-size: 8.6pt; line-height: 1.38; font-variant-numeric: lining-nums; }
.pe-body thead { display: table-header-group; }
.pe-body tr { break-inside: avoid; }
.pe-body th { text-align: left; font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 6.9pt; letter-spacing: .08em; text-transform: uppercase; color: var(--pc); background: var(--pt); padding: 1.6mm 2mm; border-bottom: .8pt solid var(--pc); vertical-align: bottom; }
.pe-body td { padding: 1.6mm 2mm; border-bottom: .4pt solid #DCCFAE; vertical-align: top; }
.pe-body .nine-more, .pe-body .lib-legend { font-size: 8.4pt; color: var(--soft); }
.pe-body .lib-own-k { font-family: "IBM Plex Mono", monospace; font-size: 7pt; }

/* figures and filled-in examples */
.book-fig { margin: 4mm 0 5mm; padding: 0; break-inside: avoid; text-align: center; }
.book-fig img { display: block; margin: 0 auto 2mm; max-width: 100%; max-height: 165mm; width: auto; height: auto; }
.book-fig svg.pe-svg { display: block; margin: 0 auto 2mm; width: 100%; height: auto; max-height: 165mm; }
.book-fig figcaption { font-size: 8.4pt; line-height: 1.4; color: var(--soft); text-align: left; border-top: .4pt solid #D3C49C; padding-top: 1.6mm; }
.book-fig-n { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7pt; letter-spacing: .12em; text-transform: uppercase; color: var(--pc); margin-right: 1.4mm; }
/* a long filled-in example may run on to the next page (between its fields and rows, never inside one) rather
   than leave a hole; its tab, title and first lines stay together */
.book-ex-wrap { margin: 4mm 0 5mm; break-inside: auto; }
.book-ex-wrap .bk-ex { break-inside: auto !important; page-break-inside: auto !important; }
.bk-ex > figcaption { break-after: avoid; }
.bk-ex-sheet > :first-child, .bk-ex-sheet > :first-child + * { break-before: avoid; break-after: avoid; }
.bk-ex-note, .bk-ex-link { break-before: avoid; }
.book-fig a.book-fig-zoom { text-decoration: none; }
.pe-glance { page: pe-front; break-before: page; }
.pe-glance h1 { padding-bottom: 3mm; border-bottom: .6pt solid var(--brass); }
.pe-glance-figs { display: block; --pc: #A8792F; }
.pe-glance .book-fig { margin: 0 0 6mm; }
.pe-glance .book-fig + .book-fig { break-before: page; }
.pe-glance .book-fig img, .pe-glance .book-fig svg.pe-svg { max-height: 152mm; }

/* ---------- the end of every chapter ---------- */
.pe-end { margin: 8mm 0 0; padding: 4mm 0 0; border-top: 2.4pt double var(--pc); break-before: auto; }
.pe-end-k { font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 7.2pt; letter-spacing: .16em; text-transform: uppercase; color: var(--pc); margin: 0 0 2mm; border: 0; padding: 0; }
.pe-end-rem { background: var(--pt); border-radius: 1.6mm; padding: 3mm 4mm 1.4mm; margin: 0 0 4mm; break-inside: avoid; }
.pe-end-list { list-style: none; padding: 0; margin: 0; }
.pe-end-list li { position: relative; padding-left: 5mm; margin: 0 0 1.6mm; font-size: 9.4pt; line-height: 1.42; }
.pe-end-list li::before { content: ""; position: absolute; left: .4mm; top: 1.6mm; width: 1.8mm; height: .9mm; border-left: 1.2pt solid var(--pc); border-bottom: 1.2pt solid var(--pc); transform: rotate(-45deg); }
.pe-end-links { margin: 0 0 4mm; }
.pe-end-conn li, .pe-end-k { break-inside: avoid; }
.pe-end-k { break-after: avoid; }
.pe-end-conn { list-style: none; padding: 0; margin: 0; }
.pe-end-conn li { display: grid; grid-template-columns: 1fr auto; column-gap: 4mm; padding: 1.5mm 0; border-bottom: .4pt solid #E2D6B6; margin: 0; font-size: 9pt; line-height: 1.35; }
.pe-conn-l { grid-column: 1; font-weight: 600; }
.pe-conn-l a { text-decoration: none; }
.pe-conn-w { grid-column: 1; color: var(--soft); font-style: italic; font-size: 8.6pt; }
.pe-conn-p { grid-column: 2; grid-row: 1 / span 2; align-self: center; font-family: "IBM Plex Mono", monospace; font-size: 7.4pt; white-space: nowrap; color: var(--pc); }
.pe-conn-p a { text-decoration: none; }
.pe-conn-p .pe-pg { font-family: inherit; font-size: inherit; font-weight: 500; }
.pe-end-use { break-inside: avoid; break-before: avoid; }
.pe-end-links { break-inside: avoid; }
.pe-use { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; }
.pe-use li { display: flex; gap: 3mm; align-items: flex-start; margin: 0; padding: 2.4mm; border: .6pt solid #D3C49C; border-radius: 1.6mm; }
.pe-qr { flex: 0 0 16mm; width: 16mm; height: 16mm; display: block; }
.pe-qr svg { width: 16mm; height: 16mm; display: block; }
.pe-use-t { font-size: 8.8pt; line-height: 1.35; }
.pe-use-t a { font-weight: 600; text-decoration: none; display: block; }
.pe-use-d { display: block; color: var(--soft); font-size: 8.2pt; margin-top: .6mm; }
.pe-use-u { display: block; font-family: "IBM Plex Mono", monospace; font-size: 6.2pt; color: var(--soft); margin-top: 1mm; }

/* ---------- back matter ---------- */
.pe-back { page: pe-back; break-before: page; --pc: #96412B; --pt: #F6E2D9; }
.pe-back-h { font-size: 22pt; margin: 0 0 3mm; padding: 4mm 0 0; border-top: 2.4pt solid var(--pc); }
.pe-back-lede { font-style: italic; color: var(--soft); font-size: 9.6pt; margin: 0 0 5mm; }
.pe-gloss-list { columns: 2; column-gap: 7mm; margin: 0; font-size: 8.6pt; line-height: 1.42; }
.pe-gl { break-inside: avoid; margin: 0 0 2.8mm; }
.pe-gl dt { font-family: "Fraunces", serif; font-weight: 600; font-size: 10pt; color: var(--ink); margin: 0 0 .5mm; }
.pe-gl dd { margin: 0; }
.pe-gl-ex { display: block; color: var(--soft); font-style: italic; margin-top: .6mm; }
.pe-gl-ex strong { font-weight: 500; }
.pe-lof-list { list-style: none; padding: 0; margin: 0; }
.pe-lof-list li { margin: 0; }
.pe-lof-list a { display: flex; align-items: baseline; text-decoration: none; padding: 1mm 0; font-size: 9pt; }
.pe-lof-n { flex: 0 0 20mm; font-family: "IBM Plex Mono", monospace; font-size: 7pt; color: var(--pc); }
.pe-lof-t em { color: var(--soft); font-size: 8.4pt; }
.pe-notes .pe-notes-h { font-family: "Fraunces", serif; font-weight: 600; font-size: 10.6pt; margin: 5mm 0 2mm; padding-top: 1.6mm; border-top: .5pt solid #E0D3B0; break-after: avoid; column-span: all; }
.pe-notes .pe-notes-h span { display: block; font-family: "IBM Plex Mono", monospace; font-weight: 500; font-size: 6.8pt; letter-spacing: .14em; text-transform: uppercase; color: var(--pc); margin-bottom: .6mm; }
.pe-refs { list-style: none; padding: 0; margin: 0; columns: 2; column-gap: 6mm; font-size: 7.6pt; line-height: 1.4; }
.pe-refs li { break-inside: avoid; margin: 0 0 2mm; }
.pe-ref-a { font-weight: 600; }
.pe-ref-t { font-style: italic; }
.pe-ref-f { color: #4A4338; }
.pe-ref-u { display: block; font-family: "IBM Plex Mono", monospace; font-size: 6.2pt; color: var(--soft); text-decoration: none; margin-top: .3mm; overflow-wrap: anywhere; }
.pe-notes .pe-notes-h + .pe-refs { break-before: avoid; }
.pe-notes .pe-notes-h { break-inside: avoid; }
.pe-ix { list-style: none; padding: 0; margin: 0; columns: 3; column-gap: 5mm; font-size: 8.3pt; line-height: 1.36; }
.pe-ix li { margin: 0 0 1mm; break-inside: avoid; padding-left: 3mm; text-indent: -3mm; }
.pe-ix-t { font-weight: 600; }
.pe-ixp { font-variant-numeric: lining-nums; color: #3F3A31; }
.pe-ix li.is-empty { display: none; }

/* back cover */
.pe-backcover { break-before: page; background: var(--acc); color: #FFFDF8; }
.pe-backcover .pe-rules { opacity: .14; }
.pe-bc-in { position: absolute; left: 24mm; right: 18mm; top: 26mm; bottom: 16mm; }
.pe-bc-k { font-family: "IBM Plex Mono", monospace; font-size: 7.4pt; letter-spacing: .2em; text-transform: uppercase; margin: 0 0 6mm; opacity: .9; }
.pe-bc-blurb { font-family: "Fraunces", serif; font-size: 13pt; line-height: 1.42; margin: 0 0 6mm; }
.pe-bc-q { font-style: italic; font-size: 11pt; margin: 0 0 6mm; }
.pe-bc-list { font-size: 9pt; line-height: 1.5; padding-left: 4mm; margin: 0 0 6mm; }
.pe-bc-list li::marker { color: #FFFDF8; }
.pe-bc-art { width: 50mm; height: 42mm; background: #FFFDF8; border-radius: 50%; padding: 4mm; box-sizing: content-box; }
.pe-bc-art svg { width: 100%; height: 100%; }
.pe-bc-site { position: absolute; bottom: 12mm; left: 0; right: 0; margin: 0; font-size: 9.6pt; }
.pe-bc-by { position: absolute; bottom: 4mm; left: 0; right: 0; margin: 0; font-family: "IBM Plex Mono", monospace; font-size: 7pt; letter-spacing: .06em; text-transform: none; opacity: .85; }
.pe-backcover a { color: inherit; }

/* filled-in examples (their own look is /assets/css/book-examples.css): the static print typefaces, and the part colour on the tab */
.bk-ex, .bk-ex .bk-ex-v { font-family: "Lora", Georgia, serif !important; }
.bk-ex .bk-ex-title, .bk-ex .bk-ex-h, .bk-ex h3, .bk-ex h4 { font-family: "Fraunces", Georgia, serif !important; }
.bk-ex { font-size: 8.8pt !important; line-height: 1.42 !important; margin: 4mm 0 5mm !important; padding: 4mm 4mm 2.4mm !important; border-top: 2pt solid var(--pc) !important; }
.bk-ex .bk-ex-k { color: var(--pc) !important; }

/* the "Fill in your own" link under each example shows a short address (a print-only span from build_book.py) */
.bk-ex-link a::after { content: none !important; }
.bk-ex .bk-ex-k { position: static !important; display: inline-block; margin: -7.2mm 0 1.6mm !important; transform: none; }
.bk-ex > figcaption { margin-top: 0 !important; }
.bk-ex-t th, .pe-body .bk-ex-t th { font-family: "Lora", Georgia, serif !important; font-weight: 600; font-size: 7.6pt; letter-spacing: 0; text-transform: none; line-height: 1.25; color: var(--soft); background: none; border-bottom: .8pt solid #CDBF98; padding: 1.2mm 1.4mm; hyphens: manual; }
.bk-ex-t td { padding: 1.2mm 1.4mm; }
.bk-ex-t .pe-th-opt { display: none; }
.bk-ex-t td:last-child { min-width: 24mm; }
.bk-ex-t td:first-child { min-width: 20mm; }

/* part openers: the short chapter names (the full titles are for the screen) */
.pe-part-list b { font-weight: 400; }
.pe-part-list b.no-print { display: none; }
.ch-title, .pe-back-h, .pe-cover-title { text-wrap: balance; }
.pe-ref-v { color: var(--soft); }
.book-ex-wrap.pe-ex-short, .book-ex-wrap.pe-ex-short .bk-ex { break-inside: avoid !important; page-break-inside: avoid !important; }
.book-ex-wrap.pe-ex-push { break-before: page; }
