/* The publisher system (operator, 2026-11-06, from the approved canvas): a serious publisher on
   ink. Anton for titles only, Source Serif 4 for ledes and descriptions, IBM Plex Mono for labels,
   one accent red, thin rules instead of boxes, the covers as books with their printed spines.
   Scoped to body.pub, which the home page, the Store and the Volume pages carry over body.paper,
   so the paper system's chrome (header, phone menu, order panel) is restyled here and nothing
   reaches TG//OS, the modules or Negative Space. Motion is restrained: sections rise in once
   (pub.js), books lift on hover, nothing pins or parallaxes. */
body.paper.pub{background:#121110 linear-gradient(180deg,#151311 0%,#0F0E0C 40%,#0F0E0C 100%);color:#E4D8C0;--pb-rule:rgba(228,216,192,.14);--pb-dim:#d2c8b2;--pb-mute:#a99f8a;--pb-red:#B23A2E;--pb-red-ink:#E0685C;--pb-paper:#E4D8C0;--pb-card:#181614;--f-serif:'Source Serif 4',Georgia,'Times New Roman',serif}
body.paper.pub::before{display:none}
/* a breath of the film's grain over the ink, so the ground is a surface and not a void */
body.paper.pub::after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:url(/images/paper/film-grain.jpg) repeat;background-size:128px;opacity:.045;mix-blend-mode:screen}
body.paper.pub > *{position:relative;z-index:1}
body.pub .pp-torn{display:none}
body.pub h1,body.pub h2,body.pub h3{color:var(--pb-paper)}
body.pub a{color:var(--pb-paper)}
@media (hover:hover){body.pub a:hover{color:var(--pb-red-ink)}}
body.pub .pb-serif{font-family:var(--f-serif);font-weight:400}
body.pub .pb-mono{font-family:var(--f-mono);font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--pb-mute)}
body.pub a{transition:color .25s ease}
body.pub .pb-h{font-family:var(--f-head);font-weight:400;text-transform:uppercase;line-height:.9;letter-spacing:-.005em;margin:0;color:var(--pb-paper)}
body.pub .pb-rule{height:1px;background:var(--pb-rule)}
body.pub .pb-wrap{width:100%;max-width:1440px;margin:0 auto;padding-left:var(--gut);padding-right:var(--gut);box-sizing:border-box}

/* chrome: the paper header on ink, the phone menu */
body.paper.pub .pp-top{position:sticky;top:0;z-index:40;background:#0F0E0C;border-bottom:1px solid var(--pb-rule)}
body.paper.pub .pp-top .pp-wrap{min-height:76px}
body.paper.pub .pp-brand{font-size:22px;letter-spacing:.04em;color:var(--pb-paper)}
body.paper.pub .pp-nav a{color:var(--pb-mute);font-size:12px;letter-spacing:.12em}
body.paper.pub .pp-nav a[aria-current],body.paper.pub .pp-nav a.on{color:var(--pb-paper);border-bottom:1px solid var(--pb-red-ink);padding-bottom:4px}
body.paper.pub .pp-menu summary{border-color:rgba(228,216,192,.4);color:var(--pb-paper)}
/* Open, the button fills with paper (tg-system), so its label must turn to ink; the rule above
   would otherwise leave paper text on a paper ground (phone pass, 2026-11-06). */
body.paper.pub .pp-menu[open] summary{color:#0F0E0C}
body.paper.pub .pp-menu nav{background:#0F0E0C;border-color:var(--pb-rule)}
body.paper.pub .pp-menu nav a{color:var(--pb-paper)}

/* buttons: one outline, one red */
body.pub .pb-btn,body.paper.pub .pp-btn,body.paper.pub .pp-go2,body.paper.pub .pp-cli,body.paper.pub .pp-social a,body.paper.pub .pp-menu summary{transition:background .25s ease,color .25s ease,border-color .25s ease,transform .15s ease,box-shadow .25s ease}
body.pub .pb-btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 28px;font-family:var(--f-mono);font-size:13px;letter-spacing:.1em;text-transform:uppercase;border:1px solid rgba(228,216,192,.6);color:var(--pb-paper);background:none;cursor:pointer;text-decoration:none}
@media (hover:hover){body.pub .pb-btn:hover,body.paper.pub .pp-btn:not(:disabled):hover,body.paper.pub .pp-go2:hover,body.paper.pub .pp-cli:hover,body.paper.pub .pp-social a:hover{background:var(--pb-paper);color:#0F0E0C;border-color:var(--pb-paper);box-shadow:0 10px 24px -12px rgba(228,216,192,.35)}}
body.pub .pb-btn:active,body.paper.pub .pp-btn:not(:disabled):active,body.paper.pub .pp-go2:active,body.paper.pub .pp-cli:active,body.paper.pub .pp-social a:active{transform:translateY(1px) scale(.985);transition-duration:.08s}
body.pub .pb-btn.pb-red,body.paper.pub .pp-btn.pp-red{background:var(--pb-red);border-color:var(--pb-red);color:#F7F1E6}
@media (hover:hover){body.pub .pb-btn.pb-red:hover,body.paper.pub .pp-btn.pp-red:not(:disabled):hover{background:#c9463a;border-color:#c9463a;color:#FFF7EA;box-shadow:0 12px 28px -12px rgba(201,70,58,.6)}}
body.pub .pb-btn.pb-dim,body.pub .pb-btn:disabled,body.paper.pub .pp-btn:disabled{border-color:rgba(228,216,192,.25);color:var(--pb-mute);background:none;cursor:default;transform:none}
body.pub :focus-visible{outline:2px solid var(--pb-red-ink);outline-offset:4px;border-radius:1px}
/* links under text: the underline grows in */
body.pub .pp-note a,body.pub .pb-row p a,body.pub .pp-order-f a,body.pub .pb-head > a,body.paper.pub .pp-vhero .pp-vgrid > div > .pp-note a{text-decoration:none;background:linear-gradient(currentColor,currentColor) no-repeat left 100%/0 1px;transition:background-size .3s ease,color .25s ease}
@media (hover:hover){body.pub .pp-note a:hover,body.pub .pb-row p a:hover,body.pub .pp-order-f a:hover,body.pub .pb-head > a:hover,body.paper.pub .pp-vhero .pp-vgrid > div > .pp-note a:hover{background-size:100% 1px}}

/* the book: the printed cover with its printed spine, a shadow, and a lift on hover */
/* a real object: the front face and the printed spine as a side face, turned 22 degrees so the
   spine shows, under a perspective set on the card. --spine is the spine's share of the cover
   width from the print files (scripts/build-books.py), so the thickness is the Volume's own. */
body.pub .pb-card,body.pub .pp-shelf > a,body.paper.pub .pp-vol > a:first-of-type{perspective:1400px}
body.pub .pb-book{--t:calc(var(--spine,.07) * 100%);position:relative;display:block;width:100%;aspect-ratio:410/634;transform-style:preserve-3d;transform:rotateY(28deg);transition:transform .45s cubic-bezier(.2,.7,.2,1)}
body.pub .pb-book img{position:absolute;display:block;object-fit:cover;backface-visibility:hidden}
body.pub .pb-book .pb-cover{inset:0;width:100%;height:100%;box-shadow:0 30px 44px -12px rgba(0,0,0,.8),0 0 0 1px rgba(228,216,192,.12)}
body.pub .pb-book .pb-spine{top:0;right:100%;width:var(--t);height:100%;transform-origin:right center;transform:rotateY(-90deg);filter:brightness(.78);box-shadow:inset -2px 0 4px rgba(0,0,0,.35)}
body.pub .pb-book::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.18),rgba(0,0,0,0) 14%,rgba(255,255,255,0) 86%,rgba(255,255,255,.05))}
@media (hover:hover){body.pub a:hover .pb-book,body.pub a.pb-book:hover{transform:rotateY(14deg) translateY(-6px)}}
body.pub .pb-shelf{padding-left:32px}
body.pub .pb-strip-label{display:flex;justify-content:space-between;gap:24px;margin:clamp(48px,6vw,80px) 0 0;padding-top:24px;border-top:1px solid var(--pb-rule)}
body.pub .pb-strip-label a{color:var(--pb-paper)}
body.pub .pb-sec.pb-tight{padding-top:0}
body.pub .pb-hero{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end}
body.pub .pb-hero > .pb-hero-r{display:flex;flex-direction:column;gap:28px;padding-bottom:12px}
/* One gradient over the whole plate, left to right, so the text column reads and no panel edge
   shows at any width (operator, 2026-11-06: a dark box sat over the plate on a wide screen). */
body.pub .pb-chero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(15,14,12,.94) 0%,rgba(15,14,12,.82) 40%,rgba(15,14,12,.45) 70%,rgba(15,14,12,.15) 100%)}
body.pub .pb-chero > div{z-index:2}
@media (max-width:1060px){body.pub .pb-hero{grid-template-columns:1fr;gap:24px}}
body.pub a:focus-visible .pb-book{outline:2px solid var(--pb-red-ink);outline-offset:6px}

/* section heads: a title, a note or link at the right, one rule under */
body.pub .pb-head{display:flex;justify-content:space-between;align-items:end;gap:24px;padding-bottom:28px;border-bottom:1px solid var(--pb-rule)}
body.pub .pb-head h2{font-size:clamp(40px,4.4vw,64px)}
body.pub .pb-head > p,body.pub .pb-head > a,body.pub .pb-head > span{margin:0 0 8px}
body.pub .pb-head > a{color:var(--pb-paper)}
body.pub .pb-sec{padding-top:clamp(72px,8.5vw,120px)}

/* the home page */
body.pub .pb-hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:64px;align-items:end;padding:clamp(56px,7vw,96px) 0 clamp(40px,5vw,72px)}
body.pub .pb-hero > div{display:flex;flex-direction:column;gap:28px}
body.pub .pb-hero h1{font-size:clamp(72px,11.7vw,168px)}
body.pub .pb-lede{margin:0;max-width:32ch;font-family:var(--f-serif);font-size:clamp(20px,1.95vw,28px);line-height:1.35;color:var(--pb-paper);text-wrap:pretty}
body.pub .pb-cta{display:flex;gap:16px;margin-top:8px;flex-wrap:wrap}
body.pub .pb-hero-aside{display:flex;flex-direction:column;gap:14px;padding:0 0 10px 40px;border-left:1px solid var(--pb-rule);align-self:end}
body.pub .pb-aside{margin:0;font-family:var(--f-serif);font-size:clamp(17px,1.45vw,21px);line-height:1.5;color:var(--pb-dim);max-width:34ch}
body.pub .pb-shelf{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:48px;padding:64px 0 0 14px}
body.pub .pb-card{display:flex;flex-direction:column;gap:18px;text-decoration:none;color:var(--pb-paper)}
body.pub .pb-card b{font-family:var(--f-head);font-weight:400;font-size:26px;line-height:1;text-transform:uppercase}
body.pub .pb-card span.pb-desc{font-family:var(--f-serif);font-size:17px;line-height:1.45;color:var(--pb-dim)}
body.pub .pb-pages{display:flex;gap:24px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-left:var(--gut);margin:0 calc(-1 * var(--gut));padding:48px var(--gut) 18px;scrollbar-width:thin;scrollbar-color:rgba(228,216,192,.35) transparent}
body.pub .pb-pages figure{margin:0;display:flex;flex-direction:column;gap:12px;flex:0 0 220px;scroll-snap-align:start}
body.pub .pb-pages img{display:block;width:100%;height:auto;box-shadow:0 20px 40px -16px rgba(0,0,0,.8),0 0 0 1px rgba(228,216,192,.14)}
body.pub .pb-pages figcaption{font-size:11px}
body.pub .pb-band{margin-top:clamp(80px,8.5vw,120px);display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);background:var(--pb-card);border:1px solid rgba(228,216,192,.14)}
body.pub .pb-band > img{display:block;width:100%;height:100%;min-height:560px;object-fit:cover;object-position:left center;-webkit-mask-image:linear-gradient(90deg,#000 55%,transparent 100%);mask-image:linear-gradient(90deg,#000 55%,transparent 100%)}
body.pub .pb-band > div{padding:clamp(32px,5vw,72px);display:flex;flex-direction:column;gap:28px;justify-content:center}
body.pub .pb-band h2{font-size:clamp(40px,4.4vw,64px);max-width:12ch}
body.pub .pb-band .pb-text{margin:0;max-width:44ch;font-family:var(--f-serif);font-size:clamp(17px,1.45vw,21px);line-height:1.5;color:var(--pb-dim)}
body.pub .pb-facts{display:grid;grid-template-columns:repeat(3,auto);gap:20px 56px;justify-content:start;padding:12px 0 4px;border-top:1px solid var(--pb-rule);margin:0}
body.pub .pb-facts > div{display:flex;flex-direction:column;gap:8px}
body.pub .pb-facts dt{margin:0;padding:0;border:0}
body.pub .pb-facts dd{margin:0;padding:0;border:0;font-family:var(--f-head);font-size:clamp(28px,2.8vw,40px);line-height:1;text-transform:uppercase;color:var(--pb-paper)}
body.pub .pb-plates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;padding-top:48px}
body.pub .pb-plate{position:relative;display:block;min-height:clamp(360px,40vw,520px);overflow:hidden;border:1px solid rgba(228,216,192,.14);color:var(--pb-paper);text-decoration:none}
body.pub .pb-plate img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
@media (hover:hover){body.pub .pb-plate:hover img{transform:scale(1.03)}}
body.pub .pb-plate img.pp-tg{image-rendering:pixelated}
body.pub .pb-plate > span{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,14,12,.1) 30%,rgba(15,14,12,.92) 100%)}
body.pub .pb-plate > div{position:absolute;left:clamp(20px,3vw,40px);right:clamp(20px,3vw,40px);bottom:clamp(20px,3vw,40px);display:flex;flex-direction:column;gap:14px}
body.pub .pb-plate h3{font-size:clamp(40px,4.4vw,64px)}
body.pub .pb-plate p{margin:0;font-family:var(--f-serif);font-size:clamp(16px,1.3vw,19px);line-height:1.45;color:var(--pb-dim)}
body.pub .pb-rows{margin-top:28px}
body.pub .pb-row{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;border-top:1px solid var(--pb-rule)}
body.pub .pb-row:last-child{border-bottom:1px solid var(--pb-rule)}
body.pub .pb-row h3{font-size:28px;flex:0 0 240px;margin:0;text-transform:none;font-family:var(--f-head);font-weight:400;line-height:1}
body.pub .pb-row p{flex:1;margin:0;font-family:var(--f-serif);font-size:18px;line-height:1.5;color:var(--pb-dim)}
body.pub .pb-row code{font-family:var(--f-mono);font-size:13px;color:var(--pb-paper);overflow-wrap:anywhere}
body.pub .pb-row .pb-btn{min-height:44px;padding:0 20px}
body.paper.pub .pp-dispatch{margin-top:clamp(80px,8.5vw,120px);padding:56px 0 0;border-top:1px solid var(--pb-rule);grid-template-columns:minmax(0,1fr) 520px}
body.paper.pub .pp-dispatch h2{font-size:48px;color:var(--pb-paper)}
body.paper.pub .pp-dispatch p{font-family:var(--f-serif);font-size:19px;color:var(--pb-dim)}
body.paper.pub .pp-dispatch input[type=email]{background:#0F0E0C;color:var(--pb-paper);border:1px solid rgba(228,216,192,.4);font-family:var(--f-mono);min-height:56px}
body.paper.pub .pp-dispatch .pp-btn{background:var(--pb-paper);color:#0F0E0C;min-height:56px;font-family:var(--f-mono);letter-spacing:.12em;text-transform:uppercase;font-size:13px}
body.paper.pub .pp-foot{background:#0F0E0C;border-top:1px solid var(--pb-rule);color:var(--pb-mute);font-family:var(--f-mono);font-size:12px;letter-spacing:.08em}
body.paper.pub .pp-foot a,body.paper.pub .pp-foot code{color:var(--pb-paper)}

/* the Store: the title and the shelf, then the catalogue */
body.paper.pub .pp-mast{background:transparent;color:var(--pb-paper)}
body.paper.pub .pp-mast .pp-wrap{padding-top:clamp(48px,6vw,88px);padding-bottom:clamp(32px,4.5vw,64px)}
body.paper.pub .pp-torn + main > .pp-sec:first-child,body.paper.pub .pp-torn + .pp-sec{padding-top:clamp(24px,3vw,40px)}
body.paper.pub .pp-mast h1{font-size:clamp(72px,11.7vw,168px);line-height:.88}
body.pub .pb-mast-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:64px;align-items:end}
body.pub .pb-mast-grid > div{display:flex;flex-direction:column;gap:24px}
body.pub .pb-mast-grid .pb-lede{max-width:34ch;font-size:clamp(18px,1.7vw,24px);line-height:1.4}
body.pub .pb-mast-grid .pp-shelf{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:28px;padding-left:14px;align-items:end;margin:0}
body.pub .pb-mast-grid .pp-shelf a{display:block;text-decoration:none}
body.pub .pb-mast-grid .pp-shelf a::before{content:none}
body.pub .pb-mast-grid .pp-shelf b{display:none}
body.paper.pub .pp-shop{grid-template-columns:minmax(0,1fr) 360px;column-gap:64px}
body.paper.pub .pp-shop > .pp-main > .pp-sec:first-child{padding-top:0}
body.paper.pub .pp-head{border-top:0;padding:0 0 20px;margin:0;align-items:end}
body.paper.pub .pp-head h2{font-size:clamp(40px,4.4vw,56px);color:var(--pb-paper)}
body.paper.pub .pp-head .pp-tag{color:var(--pb-mute)}
body.paper.pub .pp-vols{display:block;counter-reset:vol}
body.paper.pub .pp-vol{counter-increment:vol;display:grid;grid-template-columns:72px minmax(0,1fr) 168px 168px;gap:24px;align-items:center;padding:28px 0;border:0;border-top:1px solid var(--pb-rule);background:none;border-radius:0}
body.paper.pub .pp-vol:last-of-type{border-bottom:1px solid var(--pb-rule)}
body.paper.pub .pp-vol::before{content:counter(vol,upper-roman);grid-column:1;grid-row:1/span 2;font-family:var(--f-head);font-size:40px;line-height:1;color:var(--pb-mute)}
body.paper.pub .pp-vol .pp-buy[data-print]{grid-column:3}
body.paper.pub .pp-vol .pp-buy[data-reader]{grid-column:4}
body.paper.pub .pp-vol > a:first-of-type{display:none}
body.paper.pub .pp-vol > div{display:contents}
body.paper.pub .pp-vol h3{font-size:30px;line-height:1;margin:0}
body.paper.pub .pp-vol h3 a{color:var(--pb-paper);text-decoration:none}
body.paper.pub .pp-vol h3 + p{display:none}
body.paper.pub .pp-vol > div > h3{grid-column:2;grid-row:1;align-self:end}
body.paper.pub .pp-vol .pb-desc{grid-column:2;grid-row:2;margin:0;font-family:var(--f-serif);font-size:17px;line-height:1.45;color:var(--pb-dim)}
body.paper.pub .pp-vol .pp-buy{grid-row:1/span 2;margin:0 !important;padding:0;border:0;background:none;display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:0}
/* the home page's hero still carries .pp-hero so the opener's hand-off lands the film in it */
body.paper.pub .pp-hero{height:auto;min-height:0;background:none;position:relative;color:inherit}
body.paper.pub .pp-hero::before{display:none}
/* the home page's service cards as rows */
body.paper.pub .pp-cards{display:flex;flex-direction:column;gap:0;margin-top:0}
body.paper.pub .pp-card{flex-direction:row;align-items:center;gap:24px;border:0;border-top:1px solid var(--pb-rule);background:none;padding:22px 0;color:var(--pb-paper)}
body.paper.pub .pp-card:last-child{border-bottom:1px solid var(--pb-rule)}
body.paper.pub .pp-card h3{flex:0 0 240px;font-size:28px;line-height:1;color:var(--pb-paper)}
body.paper.pub .pp-card p{flex:1;font-family:var(--f-serif);font-size:18px;line-height:1.5;color:var(--pb-dim)}
body.paper.pub .pp-card code.pp-addr{flex:0 1 360px;margin:0;background:none;border:0;padding:0;font-size:13px;color:var(--pb-paper)}
body.paper.pub .pp-card .pp-go2,body.paper.pub .pp-card .pp-cli{margin:0;min-height:44px;flex:0 0 auto;width:auto;padding:0 20px;background:none;border:1px solid var(--pb-paper);color:var(--pb-paper);font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
body.paper.pub .pp-social{margin-top:28px;gap:12px}
body.paper.pub .pp-social a{border:1px solid rgba(228,216,192,.3);color:var(--pb-paper);background:none;min-height:48px;font-family:var(--f-mono);font-size:12px;letter-spacing:.12em}
body.paper.pub .pp-vol .pp-buy > span{font-family:var(--f-head);font-size:32px;line-height:1;color:var(--pb-paper)}
body.paper.pub .pp-vol .pp-buy > span small{font-family:var(--f-mono) !important;font-size:12px !important;letter-spacing:.12em !important;color:var(--pb-mute);margin-bottom:6px}
body.paper.pub .pp-vol .pp-buy small[data-psoon],body.paper.pub .pp-vol .pp-buy small[data-rsoon]{font-family:var(--f-mono);font-size:11px !important;letter-spacing:.1em;text-transform:uppercase;text-align:left !important;color:var(--pb-mute)}
body.paper.pub .pp-vol .pp-buy .pp-btn{min-height:44px;padding:0 20px;width:auto;font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;background:var(--pb-red);color:#F7F1E6}
body.paper.pub .pp-vol .pp-buy .pp-btn:disabled{background:none;border:1px solid rgba(228,216,192,.3);color:var(--pb-mute)}
body.paper.pub .pp-note{margin-top:24px;max-width:70ch;font-family:var(--f-serif);font-size:17px;line-height:1.5;color:var(--pb-dim)}
body.paper.pub .pp-note a{color:var(--pb-paper)}
body.paper.pub .pp-course{background:var(--pb-card);border:1px solid rgba(228,216,192,.14);padding:48px;gap:28px}
body.paper.pub .pb-course-plate{display:block;width:calc(100% + 96px);max-width:none;height:clamp(220px,28vw,380px);object-fit:cover;object-position:left 30%;margin:-48px -48px 8px;-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent 100%);mask-image:linear-gradient(180deg,#000 55%,transparent 100%)}
@media (max-width:760px){body.paper.pub .pb-course-plate{width:calc(100% + 44px);margin:-26px -22px 4px;height:200px}}
body.paper.pub .pp-course-top{border-bottom-color:var(--pb-rule)}
body.paper.pub .pp-price{font-family:var(--f-head)}
body.paper.pub .pp-dates li{border-top-color:var(--pb-rule)}
body.paper.pub .pp-dates{border-bottom-color:var(--pb-rule)}
body.paper.pub .pp-dates li > span{font-family:var(--f-serif);font-weight:400;font-size:19px}
body.paper.pub .pp-dates .pp-btn{font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
body.paper.pub .pp-dates .pp-btn:disabled{background:none;border:1px solid rgba(228,216,192,.3);color:var(--pb-mute)}
body.paper.pub .pp-prose,body.paper.pub .pp-prose p,body.paper.pub .pp-prose li,body.paper.pub .pp-deckcap{color:var(--pb-dim);font-family:var(--f-serif)}
body.paper.pub .pp-prose h3{color:var(--pb-paper)}
body.paper.pub .pp-order{background:none;border:1px solid rgba(228,216,192,.22);color:var(--pb-paper);top:100px}
body.paper.pub .pp-order-h{border-bottom:0;padding:28px 28px 8px}
body.paper.pub .pp-order-h h2{font-size:30px}
body.paper.pub .pp-order-empty{font-family:var(--f-serif);font-size:17px;color:var(--pb-dim);padding:0 28px}
body.paper.pub .pp-order-f{padding:18px 28px 28px}
body.paper.pub .pp-order-f p{font-family:var(--f-serif);font-size:15px;color:var(--pb-mute)}
body.paper.pub .pp-order-f a{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--pb-paper)}
body.paper.pub .pp-line{border-bottom-color:var(--pb-rule);padding:14px 28px}

/* the Volume page */
body.paper.pub .pp-vhero{background:#0F0E0C;color:var(--pb-paper)}
body.paper.pub .pp-vhero .pp-wrap{padding-top:28px;padding-bottom:0}
body.paper.pub .pp-vhero h1{font-size:clamp(72px,9.5vw,136px);line-height:.88}
body.paper.pub .pp-vhero .pp-vgrid{grid-template-columns:420px minmax(0,1fr);gap:96px;align-items:start;margin-top:40px}
body.paper.pub .pp-vhero .pp-vgrid > .pb-book,body.paper.pub .pp-vhero .pp-vgrid > a{margin:24px 0 0 40px;width:calc(100% - 40px);max-width:380px;justify-self:start}
/* The Volume page's book is a child of the wide hero grid. A perspective on the grid puts the
   vanishing point far to the right of the book, which projects the spine behind the cover; the
   perspective() function uses the book's own centre instead. */
body.paper.pub .pp-vhero .pp-vgrid > .pb-book{transform:perspective(1400px) rotateY(26deg)}
@media (hover:hover){body.paper.pub .pp-vhero .pp-vgrid > .pb-book:hover{transform:perspective(1400px) rotateY(14deg)}}
body.paper.pub .pp-vhero .pp-head{padding:0 0 20px;border-bottom:0}
body.paper.pub .pp-vhero .pp-head h2{font-size:clamp(32px,3vw,44px)}
body.paper.pub .pp-vhero article{background:none !important;border:1px solid rgba(228,216,192,.22) !important;color:var(--pb-paper) !important;padding:28px !important;gap:12px !important}
body.paper.pub .pp-vhero article > span:first-child{font-family:var(--f-mono) !important;font-size:12px !important;letter-spacing:.12em !important;color:var(--pb-mute)}
body.paper.pub .pp-vhero article b{font-size:56px !important;color:var(--pb-paper)}
body.paper.pub .pp-vhero article p{font-family:var(--f-serif);font-size:16px;color:var(--pb-dim)}
body.paper.pub .pp-vhero article a.pp-btn,body.paper.pub .pp-vhero article span[id$="-soon"],body.paper.pub .pp-vhero article #psoon,body.paper.pub .pp-vhero article #print-soon{font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;border:1px solid rgba(228,216,192,.3) !important;color:var(--pb-mute) !important;background:none !important}
body.paper.pub .pp-vhero article a.pp-btn{background:var(--pb-red) !important;border-color:var(--pb-red) !important;color:#F7F1E6 !important}
body.paper.pub .pp-vhero .pp-vgrid > div > .pp-note,body.paper.pub .pp-vhero .pp-vgrid > div > p{font-family:var(--f-serif);font-size:15px;line-height:1.5;color:var(--pb-mute)}
body.paper.pub .pp-vhero .pp-vgrid > div > .pp-note a{color:var(--pb-dim)}
body.paper.pub .pp-read .pp-sec{padding-top:clamp(72px,8.5vw,120px)}
body.paper.pub #preview [role=region]{scrollbar-color:var(--pb-paper) #0F0E0C}
body.paper.pub #preview li img{border:0 !important;box-shadow:0 24px 44px -16px rgba(0,0,0,.85),0 0 0 1px rgba(228,216,192,.14)}
body.paper.pub .pp-credits{color:var(--pb-mute);font-family:var(--f-mono);font-size:11px}
body.paper.pub .pp-credits b{color:var(--pb-dim)}
body.paper.pub .wi-grid{gap:0 64px;grid-template-columns:repeat(2,minmax(0,1fr))}
body.paper.pub .wi-art{display:grid;grid-template-columns:64px minmax(0,1fr);gap:20px;padding:18px 0;border:0;border-top:1px solid rgba(228,216,192,.14);background:none}
body.paper.pub .wi-art .fr-n{font-family:var(--f-mono);font-size:13px;color:var(--pb-red-ink);padding-top:4px}
body.paper.pub .wi-art .fr-t{font-family:var(--f-head);font-size:22px;line-height:1.05;text-transform:uppercase;color:var(--pb-paper)}
body.paper.pub .wi-art .wi-by{font-family:var(--f-serif);font-size:15px;color:var(--pb-mute);margin-top:6px}
body.paper.pub .wi-art .wi-by a{color:var(--pb-dim)}
body.paper.pub .fr-art,body.paper.pub .fr-art summary{background:none;color:var(--pb-paper);border-color:var(--pb-rule)}
body.paper.pub .fr-art .fr-t{color:var(--pb-paper)}
body.paper.pub .fr-art li,body.paper.pub .fr-src{color:var(--pb-dim);font-family:var(--f-serif)}
body.paper.pub .fr-art a{color:var(--pb-paper)}

/* the Web Series page, and the feature pattern the operator likes (2026-11-06): a large plate with
   its caption box set into a corner, and a numbered strip of parts under it. Used for both series
   here and on the home page. */
body.paper.pub .pp-head.pp-xl h2{font-size:clamp(44px,5.6vw,80px)}
body.paper.pub .pp-head p{font-family:var(--f-serif);font-size:19px;color:var(--pb-dim)}
body.paper.pub .pp-tgbox,body.paper.pub .pp-feat{border:1px solid var(--pb-rule);background:var(--pb-card)}
body.paper.pub .pp-feat{grid-template-columns:1fr minmax(0,420px)}
body.paper.pub .pp-plate{border-right:1px solid var(--pb-rule);min-height:520px;background-color:#0F0E0C}
body.paper.pub .pp-plate.pp-tg{border-right:0;border-bottom:1px solid var(--pb-rule);min-height:560px}
body.paper.pub .pp-plate .pp-tag{background:var(--pb-paper);color:#0F0E0C;font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
body.paper.pub .pp-plate .pp-cap{background:rgba(15,14,12,.85);color:var(--pb-mute);font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
body.paper.pub .pp-boot{background:rgba(15,14,12,.88);color:var(--pb-paper);border-top:1px solid var(--pb-rule);border-right:1px solid var(--pb-rule);padding:24px 28px}
body.paper.pub .pp-boot > span:first-child{font-family:var(--f-serif);font-size:17px;line-height:1.5;color:var(--pb-dim)}
body.paper.pub .pp-feat-text{background:none;color:var(--pb-paper);padding:32px}
body.paper.pub .pp-feat-text .pp-kicker{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--pb-red-ink)}
body.paper.pub .pp-feat-text h3{color:var(--pb-paper)}
body.paper.pub .pp-feat-text p{font-family:var(--f-serif);font-size:18px;line-height:1.5;color:var(--pb-dim)}
@media (hover:hover){body.paper.pub .pp-feat-text:hover{background:#1f1c19;color:var(--pb-paper)}}
body.paper.pub .pp-mods{background:none}
body.paper.pub .pp-mods li{border-right:1px solid var(--pb-rule)}
body.paper.pub .pp-mods a{color:var(--pb-paper);transition:background .25s ease}
@media (hover:hover){body.paper.pub .pp-mods a:hover{background:#1f1c19;color:var(--pb-paper)}}
body.paper.pub .pp-mods .pp-num{color:var(--pb-red-ink)}
body.paper.pub .pp-mods h3{color:var(--pb-paper)}
body.paper.pub .pp-mods span:last-child{font-family:var(--f-serif);font-size:15px;color:var(--pb-dim)}
/* the Resources page: the service cards as rows, the software cards as a two-column list */
body.paper.pub #network .pp-cards,body.paper.pub #software .pp-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;margin-top:0}
body.paper.pub #network .pp-card,body.paper.pub #software .pp-card{flex-direction:column;align-items:stretch;gap:12px;padding:26px 0}
body.paper.pub #network .pp-card h3,body.paper.pub #software .pp-card h3{flex:none;font-size:30px}
body.paper.pub #network .pp-card p,body.paper.pub #software .pp-card p{font-size:17px}
body.paper.pub .pp-card code.pp-addr{flex:none}
body.paper.pub .pp-card .pp-cli{display:flex;gap:12px;align-items:center;border:1px solid var(--pb-rule);padding:12px 14px;background:#0F0E0C}
body.paper.pub .pp-card .pp-cli code{flex:1;color:var(--pb-paper);font-size:13px}
body.paper.pub .pp-card .pp-cli button{flex:0 0 auto;min-height:40px;padding:0 16px;background:none;border:1px solid rgba(228,216,192,.5);color:var(--pb-paper);font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
body.paper.pub .pp-card .pp-go2{align-self:flex-start;min-height:48px;padding:0 22px;margin-top:4px}
@media (max-width:760px){
  body.paper.pub #network .pp-cards,body.paper.pub #software .pp-cards{grid-template-columns:1fr}
  body.paper.pub .pp-feat{grid-template-columns:1fr}
  body.paper.pub .pp-plate{border-right:0;border-bottom:1px solid var(--pb-rule);min-height:300px}
  body.paper.pub .pp-plate.pp-tg{min-height:340px}
  body.paper.pub .pp-boot{width:100%;border-right:0}
}
/* fewer lines (operator, 2026-11-06): surfaces instead of boxes, one hairline between rows and
   none inside them, credits as a plain list */
body.paper.pub{--pb-rule:rgba(228,216,192,.1)}
body.paper.pub .pp-vhero article{border:0 !important;background:var(--pb-card) !important;padding:32px !important}
body.paper.pub .pp-vhero article a.pp-btn,body.paper.pub .pp-vhero article span[id$="-soon"],body.paper.pub .pp-vhero article #psoon,body.paper.pub .pp-vhero article #print-soon{border:0 !important;padding:0 !important;min-height:0 !important;justify-content:flex-start;background:none !important;color:var(--pb-mute) !important;text-align:left}
body.paper.pub .pp-vhero article a.pp-btn{background:var(--pb-red) !important;color:#F7F1E6 !important;padding:0 24px !important;min-height:48px !important;justify-content:center}
body.paper.pub .wi-art,body.paper.pub .wi-art *{border:0 !important;box-shadow:none !important;background:none !important}
body.paper.pub .wi-art{border-top:1px solid var(--pb-rule) !important;padding:16px 0;gap:14px}
body.paper.pub .wi-art > span:last-child{display:flex;flex-direction:column;gap:4px}
body.paper.pub .wi-art .wi-by{margin:0}
body.paper.pub .wi-art .wi-by a{text-decoration:none;color:var(--pb-dim);border-bottom:1px solid rgba(228,216,192,.25) !important;transition:border-color .25s,color .25s}
@media (hover:hover){body.paper.pub .wi-art .wi-by a:hover{color:var(--pb-paper);border-color:var(--pb-paper) !important}}
body.paper.pub .wi-grid{border-bottom:1px solid var(--pb-rule)}
body.paper.pub .pp-credits{margin-top:18px;color:var(--pb-mute);font-size:12px}
body.paper.pub .pp-credits li{border:0 !important;padding:3px 0}
body.paper.pub .pp-credits li > span{color:var(--pb-dim);font-weight:400}
body.paper.pub .pp-credits a{color:var(--pb-dim);text-decoration:none;border-bottom:1px solid rgba(228,216,192,.25)}
body.paper.pub .fr-art{border:0 !important;border-top:1px solid var(--pb-rule) !important}
body.paper.pub .fr-art summary{border:0 !important}
body.paper.pub .pp-vol .pp-buy{border:0 !important}
body.paper.pub .pp-order{border:0;background:var(--pb-card)}
body.paper.pub .pp-order-h{border-bottom:1px solid var(--pb-rule)}
body.paper.pub .pp-course{border:0}
body.pub .pb-band{border:0}
body.paper.pub .pp-tgbox,body.paper.pub .pp-feat{border:0}
body.paper.pub .pp-mods li{border-right:1px solid var(--pb-rule)}
body.paper.pub .pp-plate{border-right:1px solid var(--pb-rule)}
body.paper.pub .pp-plate.pp-tg{border-bottom:1px solid var(--pb-rule)}
body.pub .pb-row:last-child,body.paper.pub .pp-card:last-child{border-bottom:0}
body.pub .pb-plate{border:0}
/* the course page (/course/, 2026-11-06) */
body.pub .pb-chero{position:relative;overflow:hidden;margin:0 calc(-1 * var(--gut));padding:0 var(--gut);min-height:min(78svh,720px);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end;gap:48px}
body.pub .pb-chero > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 35%;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,.35) 40%,transparent 100%);mask-image:linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,.35) 40%,transparent 100%);z-index:0}
body.pub .pb-chero > div{position:relative;z-index:1;display:flex;flex-direction:column;gap:24px;padding:clamp(56px,8vw,112px) 0 clamp(40px,5vw,72px)}
body.pub .pb-chero h1{font-size:clamp(56px,7.8vw,112px);max-width:11ch}
body.pub .pb-chero .pb-lede{max-width:44ch;font-size:clamp(18px,1.6vw,23px)}
body.pub .pb-chero .pb-facts{padding-top:20px;border-top:1px solid rgba(228,216,192,.25)}
body.pub .pb-cgrid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(32px,6vw,96px);align-items:start}
body.pub .pb-cgrid h2{font-size:clamp(36px,3.6vw,52px);position:sticky;top:100px}
body.pub .pb-prose{font-family:var(--f-serif);font-size:clamp(17px,1.35vw,19px);line-height:1.6;color:var(--pb-dim);max-width:66ch}
body.pub .pb-prose p{margin:0 0 1.1em}
body.pub .pb-prose p:last-child{margin-bottom:0}
body.pub .pb-prose b{color:var(--pb-paper);font-weight:600}
body.pub .pb-prose ul,body.pub .pb-prose ol{margin:0 0 1.1em;padding:0;list-style:none}
body.pub .pb-prose li{position:relative;padding:12px 0 12px 28px;border-top:1px solid var(--pb-rule)}
body.pub .pb-prose li::before{content:"";position:absolute;left:0;top:23px;width:12px;height:1px;background:var(--pb-red-ink)}
body.pub .pb-prose ol{counter-reset:step}
body.pub .pb-prose ol li{padding-left:64px;counter-increment:step}
body.pub .pb-prose ol li::before{content:counter(step,decimal-leading-zero);width:auto;height:auto;top:12px;background:none;font-family:var(--f-mono);font-size:13px;letter-spacing:.08em;color:var(--pb-red-ink)}
body.pub .pb-prose h3{font-family:var(--f-head);font-weight:400;text-transform:uppercase;font-size:28px;line-height:1;margin:1.6em 0 .6em;color:var(--pb-paper)}
body.pub .pb-prose h3:first-child{margin-top:0}
body.pub .pb-prose .pb-time{display:inline-block;min-width:9.5ch;font-family:var(--f-mono);font-size:13px;letter-spacing:.06em;color:var(--pb-mute);margin-right:8px}
body.pub .pb-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
body.pub .pb-modes > div{display:flex;flex-direction:column;gap:12px;padding:28px;background:var(--pb-card)}
body.pub .pb-modes h3{margin:0;font-size:26px}
body.pub .pb-modes p{font-size:16px}
body.pub .pb-dates .pb-row{padding:22px 0}
body.pub .pb-dates .pb-row span.pb-serif{flex:1;font-size:22px}
@media (max-width:1060px){
  body.pub .pb-chero{grid-template-columns:1fr}
  body.pub .pb-cgrid{grid-template-columns:1fr;gap:20px}
  body.pub .pb-cgrid h2{position:static}
  body.pub .pb-modes{grid-template-columns:1fr}
}
@media (max-width:760px){
  body.pub .pb-chero{min-height:0}
  body.pub .pb-chero > div{padding:40px 0 32px}
  body.pub .pb-chero::before{background:linear-gradient(180deg,rgba(15,14,12,.9) 0%,rgba(15,14,12,.82) 60%,rgba(15,14,12,.96) 100%)}
  body.pub .pb-prose li{padding-left:22px}
  body.pub .pb-prose ol li{padding-left:44px}
  body.pub .pb-prose .pb-time{display:block;margin:0 0 4px}
}
/* reveals: once, restrained; off with reduced motion */
body.pub .pb-r{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
body.pub .pb-r.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){body.pub .pb-r{opacity:1;transform:none;transition:none}body.pub .pb-book,body.pub .pb-plate img{transition:none}}

/* tablets and phones */
@media (max-width:1060px){
  body.pub .pb-hero{grid-template-columns:1fr;gap:40px}
  body.pub .pb-shelf{grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 28px}
  body.pub .pb-band{grid-template-columns:1fr}
  body.pub .pb-band > img{min-height:320px;max-height:420px}
  body.pub .pb-mast-grid{grid-template-columns:1fr;gap:40px}
  body.paper.pub .pp-shop{grid-template-columns:1fr}
  body.paper.pub .pp-order{position:static;margin-top:48px}
  body.paper.pub .pp-vol{grid-template-columns:56px minmax(0,1fr);gap:16px 24px}
  body.paper.pub .pp-vol .pp-buy,body.paper.pub .pp-vol .pp-buy[data-print],body.paper.pub .pp-vol .pp-buy[data-reader]{grid-column:2;grid-row:auto;flex-direction:row;align-items:center;justify-content:space-between;width:100%;padding:10px 0 0;border-top:1px solid rgba(228,216,192,.12)}
  body.paper.pub .pp-vol > div > h3,body.paper.pub .pp-vol .pb-desc{grid-row:auto}
  body.paper.pub .pp-vol::before{grid-row:1/span 4}
  body.paper.pub .pp-card{flex-direction:column;align-items:flex-start;gap:10px;padding:18px 0}
  body.paper.pub .pp-card h3{flex:none;font-size:22px}
  body.paper.pub .pp-card p{font-size:15px}
  body.paper.pub .pp-card code.pp-addr{flex:none;overflow-wrap:anywhere}
  body.paper.pub .pp-card .pp-go2,body.paper.pub .pp-card .pp-cli{width:100%}
  body.paper.pub .pp-vhero .pp-vgrid{grid-template-columns:1fr;gap:32px}
  body.paper.pub .pp-vhero .pp-vgrid > .pb-book,body.paper.pub .pp-vhero .pp-vgrid > a{margin:0 0 0 24px;width:calc(100% - 24px);max-width:320px;justify-self:center}
  body.paper.pub .wi-grid{grid-template-columns:1fr}
}
@media (max-width:760px){
  body.paper.pub .pp-top .pp-wrap{min-height:60px}
  body.pub .pb-hero{padding:40px 0 48px;gap:28px}
  body.pub .pb-hero-aside{padding:18px 0 0;border-left:0;border-top:1px solid var(--pb-rule)}
  body.pub .pb-cta{flex-direction:column}
  body.pub .pb-cta .pb-btn{width:100%}
  body.pub .pb-head{flex-direction:column;align-items:flex-start;gap:8px;padding-bottom:18px}
  body.pub .pb-head > p,body.pub .pb-head > a,body.pub .pb-head > span{margin:0}
  body.pub .pb-shelf,body.pub .pb-mast-grid .pp-shelf{display:flex;gap:22px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:var(--gut);padding:24px var(--gut) 20px 30px;margin:0 calc(-1 * var(--gut));scrollbar-width:none}
  body.pub .pb-shelf > a,body.pub .pb-mast-grid .pp-shelf > a{flex:0 0 232px;scroll-snap-align:start}
  body.pub .pb-pages{gap:16px;padding:24px var(--gut) 14px;scrollbar-width:none}
  body.pub .pb-pages > figure{flex:0 0 200px}
  body.pub .pb-band{margin:40px 0 0}
  body.pub .pb-band > div{padding:26px 22px 28px;gap:18px}
  body.pub .pb-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  body.pub .pb-plates{grid-template-columns:1fr;gap:16px;padding-top:20px}
  body.pub .pb-plate{min-height:300px}
  body.pub .pb-row{flex-direction:column;align-items:flex-start;gap:10px;padding:18px 0}
  body.pub .pb-row h3{flex:none;font-size:22px}
  body.pub .pb-row p{font-size:15px}
  body.pub .pb-row .pb-btn{width:100%}
  body.paper.pub .pp-dispatch{grid-template-columns:1fr;padding-top:28px;margin-top:48px}
  body.paper.pub .pp-mast .pp-wrap{padding-top:40px;padding-bottom:12px}
  body.paper.pub .pp-vol{grid-template-columns:96px minmax(0,1fr);gap:8px 18px;padding:22px 0}
  body.paper.pub .pp-vol::before{display:none}
  body.paper.pub .pp-vol > a:first-of-type{display:block;grid-row:1/span 4;align-self:start;border:0;background:none;flex:none}
  body.paper.pub .pp-vol > a:first-of-type img{border:0;width:100%;height:auto;aspect-ratio:410/634;box-shadow:0 16px 28px -12px rgba(0,0,0,.8)}
  body.paper.pub .pp-vol h3{font-size:26px}
  body.paper.pub .pp-vol .pb-desc{font-size:14px}
  body.paper.pub .pp-vol .pp-buy{padding:8px 0 0}
  body.paper.pub .pp-vol .pp-buy > span{font-size:22px}
  body.paper.pub .pp-course{padding:26px 22px 28px}
  body.paper.pub .pp-vhero h1{font-size:84px}
  body.paper.pub .pp-vhero .pp-vgrid > .pb-book,body.paper.pub .pp-vhero .pp-vgrid > a{max-width:290px}
}

/* /reader/: the app page. A text hero (no photograph exists for the app), the four places to
   get it as rows, and a "soon" button that reads as a label, never as a dead control. */
body.pub .pb-rhero{min-height:0;padding:clamp(56px,8vw,112px) 0 clamp(32px,4vw,56px);align-items:start}
body.pub .pb-rhero h1{font-size:clamp(56px,7.8vw,112px)}
body.pub .pb-rhero .pb-hero-r{display:flex;flex-direction:column;gap:20px}
body.pub .pb-rhero .pb-text{margin:0;font-family:var(--f-serif);font-size:18px;line-height:1.5;color:var(--pb-dim)}
@media (min-width:761px){body.pub .pb-stores .pb-row h3{flex-basis:200px}body.pub .pb-stay .pb-row h3{flex-basis:320px}}
body.pub .pb-stay-label{margin:40px 0 0;color:var(--pb-paper)}
body.pub .pb-stay-label + .pb-rows{margin-top:14px}
body.pub .pb-btn.pb-soon,body.pub .pb-btn.pb-soon:hover{cursor:default;border-style:dashed;color:var(--pb-mute);background:transparent;transform:none}
body.pub .pb-sha{display:block;font-family:var(--f-mono);font-size:13px;line-height:1.6;color:var(--pb-paper);overflow-wrap:anywhere;margin-top:6px}
body.pub .pb-prose ul{padding-left:1.4em;margin:0 0 1.1em}
body.pub .pb-prose ul li{margin:0 0 .4em}
body.pub .pb-ways{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
body.pub .pb-ways a{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 18px;border:1px solid rgba(228,216,192,.22);color:var(--pb-paper);text-decoration:none;font-family:var(--f-mono);font-size:12px;letter-spacing:.09em;text-transform:uppercase;transition:border-color .2s,background .2s,transform .12s}
body.pub .pb-ways a b{font-family:var(--f-head);font-weight:400;font-size:18px;letter-spacing:0;text-transform:none}
@media (hover:hover){body.pub .pb-ways a:hover{border-color:var(--pb-paper);background:rgba(228,216,192,.06)}}
body.pub .pb-ways a:active{transform:translateY(1px) scale(.985)}
@media (max-width:760px){body.pub .pb-ways{flex-direction:column}body.pub .pb-ways a{justify-content:space-between}}
/* The course page's in-page nav: one mono line under the hero. On phones it scrolls sideways
   instead of wrapping, so it stays one line and the page starts right under it. */
body.pub .pb-jump{display:flex;gap:4px 26px;flex-wrap:wrap;margin:0;padding:16px 0;border-top:1px solid var(--pb-rule);border-bottom:1px solid var(--pb-rule);font-family:var(--f-mono);font-size:12px;letter-spacing:.09em;text-transform:uppercase}
body.pub .pb-jump a{color:var(--pb-dim);text-decoration:none;padding:6px 0;background:linear-gradient(currentColor,currentColor) no-repeat left 100%/0 1px;transition:background-size .25s ease,color .2s}
@media (hover:hover){body.pub .pb-jump a:hover{color:var(--pb-paper);background-size:100% 1px}}
@media (max-width:760px){body.pub .pb-jump{flex-wrap:nowrap;overflow-x:auto;gap:22px;margin:0 calc(-1 * var(--gut));padding:14px var(--gut);scrollbar-width:none}body.pub .pb-jump::-webkit-scrollbar{display:none}body.pub .pb-jump a{white-space:nowrap;flex:none}}
/* Inline code on ink: a card-dark chip, not the paper chip (the text edition's curl line read paper on paper). */
body.paper.pub .pp-inline-code,body.paper.pub .pp-prose code:not(.pb-sha){background:var(--pb-card);color:var(--pb-paper);border:1px solid var(--pb-rule);padding:3px 8px;overflow-wrap:anywhere}
/* A button in a section head sits on the baseline of the heading, with no link underline. */
body.paper.pub .pp-head > a.pb-btn{align-self:center;min-height:44px;padding:0 20px;background-size:0;text-decoration:none}
