/* ============================================================
   theaibill.xyz — the Library
   A dark documentation look for everything that reads like an article:
   the essay archive (/writing), the two handbooks, the reading stack and
   the resources hub. Modelled on the structure of a modern docs blog —
   filter tabs and a thumbnail grid on the index, a three-rail article
   (byline and share, prose, on-this-page) — in this site's own voice.

   Scoped to `.lib`, set by HandbookChrome. It loads AFTER styles.css and
   works by re-pointing that file's design tokens, so every existing
   component (rail, prose, search, chapter cards) follows the theme without
   being rewritten. Only what the tokens cannot reach is overridden below.
   ============================================================ */

.lib{
  --bg:#060709;
  --surface:#0c0e11;
  --surface-2:#12151a;
  --ink:#faf8f5;
  --ink-soft:rgba(250,248,245,.64);
  --ink-faint:rgba(250,248,245,.54);
  --line:rgba(250,248,245,.12);
  --line-strong:rgba(250,248,245,.24);

  /* styles.css tokens, re-pointed */
  --paper:var(--bg);
  --paper-2:var(--surface);
  --card:var(--surface);
  --accent:#7fd8b4;
  --accent-deep:#b3ecd3;
  --money:#7fd8b4;
  --gold:#d8b45c;
  --signal:#7fd8b4;
  --code-bg:var(--surface);
  --code-ink:#d7ece1;
  --serif:'Inter','Segoe UI',Helvetica,Arial,sans-serif;
  --sans:'Inter','Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'Geist Mono','JetBrains Mono','SF Mono',Consolas,monospace;
  --shadow:none;

  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.7;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
.lib ::selection{background:rgba(127,216,180,.28);color:#fff;}

/* ---------- base ---------- */
/* :where() keeps the base link style at the lowest specificity, so the
   component rules in styles.css (.brand, .crumbs a, .chapter-nav a, …) that set
   their own border still win instead of being re-underlined. */
:where(.lib) a{color:var(--ink);border-bottom:1px solid var(--line-strong);}
:where(.lib) a:hover{color:var(--accent);border-bottom-color:var(--accent);}
.lib h1,.lib h2,.lib h3,.lib h4{font-family:var(--sans);color:var(--ink);font-weight:600;letter-spacing:-.02em;}
/* styles.css turns on tabular figures for the whole page so columns of numbers
   align. Inter's tabular set also widens the hyphen, which spaces out
   "pay-from-savings" in a headline — keep tabular figures where numbers stack,
   proportional everywhere else. */
.lib{font-variant-numeric:lining-nums;}
.lib .prose td,.lib .prose th,.lib .mono,.lib .lib-tab-n,.lib .rail-ch-n,.lib .ch-num{font-variant-numeric:tabular-nums lining-nums;}
.lib .small{color:var(--ink-soft);}
.lib :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;}

/* ---------- nav ---------- */
.lib nav.site{
  position:sticky;top:0;z-index:100;
  border-top:0;border-bottom:1px solid var(--line);
  background:rgba(6,7,9,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
.lib .nav-in{max-width:1180px;padding:10px 24px;min-height:64px;}
.lib .brand{border:none;}
.lib .brand .name{font-family:var(--sans);font-size:17px;font-weight:600;letter-spacing:-.02em;color:var(--ink);}
.lib .brand .name em{font-style:normal;color:var(--accent);}
.lib .brand .mark rect:first-child{rx:8px;}
.lib .nav-links{gap:22px;}
.lib .nav-links a:not(.cta){
  font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;
  color:var(--ink-soft);border:none;
}
.lib .nav-links a:not(.cta)::after{display:none;}
.lib .nav-links a:not(.cta):hover{color:var(--ink);}
.lib .nav-links a.cta{
  background:var(--ink);color:#060709;border-radius:8px;padding:8px 14px;
  font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;
}
.lib .nav-links a.cta:hover{background:#fff;color:#060709;}
.lib .search-trigger{background:var(--surface);border-radius:8px;color:var(--ink-soft);}
.lib .search-trigger:hover{color:var(--ink);border-color:var(--line-strong);}
.lib .search-trigger kbd{background:var(--surface-2);}

/* styles.css stacks the nav into two rows below 1100px because the old nine-link
   nav could not fit one. This nav — two handbooks, resources, advisory, search
   and a button — fits on one row from 900px; below that the two-row layout
   stays, and below 720px it wraps and needs its padding back. */
@media (min-width:900px){
  .lib .nav-in{flex-wrap:nowrap;}
  .lib .nav-links{width:auto;margin:0;padding:0;flex-wrap:nowrap;overflow:visible;gap:22px;}
  .lib .nav-links a.cta{position:static;padding:8px 14px;}
}
@media (max-width:720px){
  .lib .nav-in{padding:10px 20px;min-height:0;}
  .lib .nav-links a.cta{top:10px;right:20px;padding:8px 12px;}
  .lib header.page-head{padding:44px 0 32px;}
  .lib-article-head{padding-bottom:24px;margin-bottom:28px;}
}

/* ---------- page headers ---------- */
.lib header.page-head{
  background:none;padding:64px 0 44px;border-bottom:1px solid var(--line);
}
.lib header.page-head::before,.lib header.page-head::after{display:none;}
.lib .page-head h1{
  font-size:clamp(32px,4.6vw,44px);line-height:1.08;letter-spacing:-.03em;max-width:24ch;margin-bottom:16px;
}
.lib .page-head .lead,.lib .lead{font-size:17px;line-height:1.6;color:var(--ink-soft);max-width:60ch;}
.lib .kicker{
  font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;color:var(--accent);margin-bottom:16px;
}
.lib .kicker::after{display:none;}
.lib section{padding:56px 0;}
/* The book rail's parts are <section>s too — keep them tight. */
.lib .rail-part{padding:0;}
.lib section.alt{background:transparent;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.lib .principle{
  background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px 24px;
}
.lib .principle .q{font-weight:600;color:var(--ink);margin:0 0 6px;}
.lib .principle .a{font-size:14.5px;line-height:1.65;color:var(--ink-soft);margin:0;}
.lib .btn{border-radius:8px;font-family:var(--sans);font-size:13px;letter-spacing:0;text-transform:none;}
.lib .btn:hover{transform:none;box-shadow:none;}

/* ---------- prose ---------- */
.lib .prose{font-family:var(--sans);font-size:16px;line-height:1.78;color:rgba(250,248,245,.78);}
.lib .prose strong{color:var(--ink);font-weight:600;}
.lib .prose h2{font-size:24px;font-weight:500;letter-spacing:-.015em;line-height:1.3;margin-top:2.5em;color:var(--ink);}
.lib .prose h3{font-size:17px;font-weight:600;letter-spacing:-.005em;color:var(--ink);}
.lib .prose a{color:var(--ink);border-bottom:1px solid var(--line-strong);}
.lib .prose a:hover{color:var(--accent);border-bottom-color:var(--accent);}
.lib .prose li::marker{color:var(--ink-faint);}
.lib .prose code{
  background:var(--surface-2);color:var(--code-ink);border:1px solid var(--line);border-radius:6px;
  font-size:.86em;padding:.12em .4em;
}
.lib .prose pre{background:var(--surface);border:1px solid var(--line);border-radius:12px;}
.lib .prose pre code{background:none;border:0;padding:0;}
.lib .prose blockquote{
  border-left:2px solid var(--accent);color:var(--ink);font-style:normal;font-size:1.06em;line-height:1.6;
  padding:2px 0 2px 20px;
}
.lib .prose hr{border-top-color:var(--line);}
.lib .prose table{border:1px solid var(--line);border-collapse:separate;border-spacing:0;border-radius:10px;overflow:hidden;}
.lib .prose th{
  background:var(--surface);color:var(--ink-faint);font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.06em;
}
.lib .prose td,.lib .prose th{border-bottom-color:var(--line);}
.lib .prose tr:last-child td{border-bottom:0;}
@media (max-width:900px){
  .lib .table-scroll{
    background:
      linear-gradient(90deg,var(--bg) 30%,rgba(6,7,9,0)) left/28px 100% no-repeat,
      linear-gradient(270deg,var(--bg) 30%,rgba(6,7,9,0)) right/28px 100% no-repeat,
      radial-gradient(farthest-side at 0 50%,rgba(250,248,245,.1),transparent) left/12px 100% no-repeat,
      radial-gradient(farthest-side at 100% 50%,rgba(250,248,245,.1),transparent) right/12px 100% no-repeat;
    background-attachment:local,local,scroll,scroll;
  }
}

/* ---------- portal: handbook chapter shell ---------- */
.lib .doc-head{padding:44px 0 30px;border-bottom:1px solid var(--line);margin-bottom:34px;}
.lib .crumbs{font-size:13px;color:var(--ink-soft);}
.lib .crumbs .sep{color:var(--ink-faint);}
.lib .crumbs .lvl{
  background:transparent;border:1px solid var(--line-strong);border-radius:6px;color:var(--accent);
  font-weight:500;padding:2px 7px;
}
.lib .doc-num .n{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;color:var(--accent);}
.lib .doc-num .of{color:var(--ink-faint);font-family:var(--mono);font-size:11px;letter-spacing:.04em;}
.lib .doc-head h1{font-size:clamp(30px,4.2vw,42px);line-height:1.08;letter-spacing:-.03em;font-weight:600;margin-bottom:16px;}
.lib .doc-head .lead{font-size:17px;color:var(--ink-soft);}
.lib .doc-meta{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);
}
.lib .doc-meta .dot{color:var(--ink-faint);}

.lib .rail-panel{border-right-color:var(--line);}
.lib .rail-book{font-family:var(--sans);font-size:15px;font-weight:600;}
.lib .rail-count{color:var(--ink-faint);}
.lib .rail-find{background:var(--surface);border-radius:10px;}
.lib .rail-find kbd{background:var(--surface-2);}
.lib .rail-find:hover{background:var(--surface-2);}
.lib .rail-part-head{border-radius:8px;}
.lib .rail-part-head:hover{background:var(--surface);}
.lib .rail-part-n{color:var(--ink-faint);}
.lib .rail-part-t{color:var(--ink);font-weight:500;}
.lib .rail-part-c{background:var(--surface-2);color:var(--ink-faint);}
.lib .rail-part li a,.lib .rail-part li.planned,.lib .rail-secs li a,.lib .toc a{border-radius:8px;}
.lib .rail-part li a:hover{background:var(--surface);}
.lib .rail-part li a[aria-current="page"]{background:rgba(127,216,180,.08);border-left-color:var(--accent);}
.lib .rail-part li.planned .rail-ch-t,.lib .rail-part li.planned .rail-ch-n{color:rgba(250,248,245,.26);}
.lib .rail-sec-n{color:var(--ink-faint);}
.lib .rail-secs{border-left-color:var(--line);}
.lib .rail-secs li a:hover{background:var(--surface);}
.lib .rail-bar{background:rgba(6,7,9,.9);}
.lib .rail-open,.lib .rail-search,.lib .rail-close{border-radius:8px;}
.lib .rail-scrim{background:rgba(0,0,0,.6);}
.lib .rail-drawer{background:var(--bg);}

/* The section list moves to a right-hand rail once there is room for it, the
   way a docs page lays it out — the book on the left, the chapter's own
   sections on the right, and the prose between at a fixed measure. Below that
   width the left rail still carries the sections, exactly as before. */
@media (min-width:1280px){
  .lib .doc-shell{
    grid-template-areas:"rail head toc" "rail body toc";
    grid-template-columns:264px minmax(0,720px) 232px;
    column-gap:56px;
    max-width:1520px;
  }
  .lib .doc-toc{
    display:block;position:sticky;top:92px;align-self:start;
    max-height:calc(100dvh - 116px);overflow-y:auto;padding-top:44px;scrollbar-width:thin;
  }
  .lib .rail-secs{display:none;}
}
.lib .chapter-nav{border-top:0;margin:0;padding:0;}
.lib .chapter-nav h2{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;color:var(--ink-faint);}
.lib .chapter-nav ol{gap:0;border-left:1px solid var(--line);}
.lib .chapter-nav a{padding:6px 0 6px 18px;font-size:13px;color:var(--ink-soft);border-left:1px solid transparent;margin-left:-1px;}
.lib .chapter-nav a::before{left:auto;position:static;margin-right:8px;color:var(--ink-faint);font-weight:500;}
.lib .chapter-nav a:hover{color:var(--ink);}
.lib .chapter-nav a[aria-current="true"]{color:var(--ink);font-weight:500;border-left-color:var(--accent);}
.lib .chapter-nav a[aria-current="true"]::before{color:var(--accent);}
.lib .rail-cta{
  display:none;margin-top:28px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;
}
@media (min-width:1280px){.lib .rail-cta{display:block;}}
.lib .rail-cta p{font-size:13px;line-height:1.55;color:var(--ink-soft);margin:0 0 12px;}
.lib .rail-cta .btn{display:block;text-align:center;width:100%;background:var(--ink);color:#060709;padding:9px 12px;border-radius:8px;}
.lib .rail-cta .btn:hover{background:#fff;color:#060709;}

.lib .chapter-ends a{background:var(--surface);border:1px solid var(--line);border-radius:12px;}
.lib .chapter-ends a:hover{border-color:var(--accent);transform:none;}
.lib .chapter-ends .dir{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-faint);}
.lib .resume{background:var(--surface);border-radius:12px;}
.lib .resume:hover{background:var(--surface-2);}
.lib .part-fill,.lib .part-fill i{border-radius:3px;}
.lib .sources{border-top-color:var(--line);}
.lib .read-progress i{background:var(--accent);}

/* ---------- search palette ---------- */
.lib .cmdk-backdrop{background:rgba(0,0,0,.62);}
.lib .cmdk{background:var(--surface);border-color:var(--line-strong);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.6);}
.lib .cmdk-results li[data-active="true"] a{background:var(--surface-2);}
.lib .cmdk-field input::placeholder,.lib .cmdk-tip{color:var(--ink-faint);}

/* ---------- footer ---------- */
.lib footer{
  background:transparent;border-top:1px solid var(--line);color:var(--ink-soft);margin-top:0;padding:44px 0 36px;
}
.lib footer a{color:var(--ink);border-bottom-color:var(--line-strong);}
.lib footer a:hover{color:var(--accent);border-bottom-color:var(--accent);}
.lib footer .fbrand{font-family:var(--sans);font-weight:600;color:var(--ink);}
.lib footer .fbrand em{font-style:normal;color:var(--accent);}
.lib .footnote{color:var(--ink-faint);}
.lib .fcol h4{color:var(--ink-faint);}
.lib .fcol a{border:0;color:var(--ink-soft);}
.lib .fcol a:hover{color:var(--ink);}

/* ============================================================
   Library index — filter tabs and the thumbnail grid
   ============================================================ */
.lib-wrap{max-width:1180px;margin:0 auto;padding:0 24px;}
.lib-index{padding:44px 0 88px;}

.lib-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 34px;}
.lib-tab{
  appearance:none;background:none;border:1px solid transparent;border-radius:8px;
  font:500 13px/1 var(--sans);color:var(--ink-soft);padding:9px 12px;cursor:pointer;
  transition:color .15s ease,background-color .15s ease,border-color .15s ease;
}
.lib-tab:hover{color:var(--ink);}
.lib-tab.is-on{color:var(--ink);background:var(--surface-2);border-color:var(--line);}
.lib-tab-n{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);margin-left:7px;}

.lib-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px 28px;}
@media (max-width:980px){.lib-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:620px){.lib-grid{grid-template-columns:minmax(0,1fr);gap:36px;}}

.lib-card{position:relative;display:flex;flex-direction:column;gap:14px;}
.lib-card .lib-cover{transition:border-color .18s ease,transform .18s ease;}
.lib-card:hover .lib-cover{border-color:var(--line-strong);transform:translateY(-2px);}
.lib-card-meta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--ink-faint);}
.lib-card-kind{
  font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);
}
.lib-card h3{font-size:16px;line-height:24px;font-weight:500;letter-spacing:-.005em;margin:0;}
.lib-card h3 a{color:var(--ink);border:0;}
.lib-card h3 a::after{content:"";position:absolute;inset:0;}
.lib-card:hover h3 a{color:var(--accent);}
.lib-card p{
  font-size:14px;line-height:1.55;color:var(--ink-soft);margin:0;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.lib-empty{color:var(--ink-soft);padding:40px 0;}

/* Generated cover — drawn from the entry's own metadata (chapter number and
   part), so a card never needs an image that does not exist. The glow position
   is a hash of the slug: stable across builds, different card to card. */
.lib-cover{
  position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;
  background-color:var(--surface);border:1px solid var(--line);
  background-image:
    radial-gradient(rgba(250,248,245,.09) 1px,transparent 1px),
    radial-gradient(60% 90% at var(--gx,50%) var(--gy,40%),rgba(127,216,180,.2),transparent 72%);
  background-size:16px 16px,auto;
}
.lib-cover-mark{
  position:absolute;left:20px;top:50%;transform:translateY(-58%);
  font-family:var(--sans);font-size:clamp(34px,4.4vw,52px);font-weight:600;letter-spacing:-.04em;color:var(--ink);line-height:1;
}
.lib-cover-label{
  position:absolute;left:20px;bottom:16px;right:20px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.lib-cover.is-large{border-radius:16px;}
.lib-cover.is-large .lib-cover-mark{font-size:clamp(48px,7vw,80px);left:32px;}
.lib-cover.is-large .lib-cover-label{left:32px;bottom:26px;font-size:11px;}

.lib-pipeline{margin-top:72px;padding-top:36px;border-top:1px solid var(--line);}
.lib-pipeline h2{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 6px;}
.lib-pipe-row{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);align-items:baseline;}
.lib-pipe-row:last-child{border-bottom:0;}
.lib-pipe-st{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);}
.lib-pipe-t{font-weight:500;color:var(--ink);}
.lib-pipe-d{color:var(--ink-soft);font-size:14px;}

/* ============================================================
   Library article — byline and share, prose, on-this-page
   ============================================================ */
.lib-article{max-width:1180px;margin:0 auto;padding:0 24px 96px;}
.lib-back{
  display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft);border:0;margin:36px 0 30px;
}
.lib-back:hover{color:var(--ink);border:0;}
.lib-back svg{width:14px;height:14px;}
.lib-article-head{padding-bottom:30px;margin-bottom:38px;border-bottom:1px solid var(--line);}
.lib-article-head h1{
  font-size:clamp(30px,4.4vw,42px);line-height:1.08;letter-spacing:-.03em;font-weight:600;max-width:24ch;margin:14px 0 20px;
}
.lib-dates{
  display:flex;flex-wrap:wrap;gap:6px 14px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);
}
.lib-dates .sep{color:var(--line-strong);}

.lib-article-grid{
  display:grid;grid-template-columns:200px minmax(0,680px) 224px;column-gap:56px;justify-content:center;align-items:start;
}
.lib-side{position:sticky;top:96px;}
.lib-body{min-width:0;}
@media (max-width:1180px){
  .lib-article-grid{grid-template-columns:minmax(0,680px);}
  .lib-side{position:static;}
  .lib-side.is-toc{display:none;}
  .lib-side.is-byline{margin-bottom:30px;}
}

.lib-author{display:flex;align-items:center;gap:12px;}
.lib-avatar{
  flex:none;width:44px;height:44px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line-strong);
  display:grid;place-items:center;font-size:14px;font-weight:600;color:var(--ink);letter-spacing:-.01em;
}
.lib-author-name{font-size:13px;font-weight:500;color:var(--ink);line-height:1.3;}
.lib-author-role{font-size:12px;color:var(--ink-soft);line-height:1.4;}
.lib-share-label{
  font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);
  margin:24px 0 10px;
}
@media (max-width:1180px){.lib-share-label{margin-top:18px;}}
.lib-share{display:flex;gap:8px;}
.lib-share a,.lib-share button{
  appearance:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--surface);
  display:grid;place-items:center;color:var(--ink-soft);cursor:pointer;padding:0;
  transition:color .15s ease,border-color .15s ease;
}
.lib-share a:hover,.lib-share button:hover{color:var(--ink);border-color:var(--line-strong);border-bottom-color:var(--line-strong);}
.lib-share svg{width:14px;height:14px;}
.lib-copied{font-size:12px;color:var(--accent);margin-top:8px;min-height:18px;}

.lib-summary{
  background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:30px 0 8px;
}
.lib-summary-label{
  display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);
}
.lib-summary p{font-size:15px;line-height:1.65;color:var(--ink-soft);margin:8px 0 0;}
.lib-body .prose{margin-top:34px;}

.lib-toc-cta{margin-top:28px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;}
.lib-toc-cta p{font-size:13px;line-height:1.55;color:var(--ink-soft);margin:0 0 12px;}
.lib-toc-cta a.btn{display:block;text-align:center;background:var(--ink);color:#060709;padding:9px 12px;border-radius:8px;border:0;}
.lib-toc-cta a.btn:hover{background:#fff;color:#060709;}

.lib-more{margin-top:72px;padding-top:40px;border-top:1px solid var(--line);}
.lib-more h2{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 26px;}

/* ============================================================
   Resources hub — one row per resource
   ============================================================ */
.lib-res{max-width:820px;margin:0 auto;padding:12px 24px 96px;}
.lib-res-group h2{
  font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);
  margin:0;padding:44px 0 6px;
}
.lib-res-row{
  display:grid;grid-template-columns:104px minmax(0,1fr) auto;gap:20px;align-items:baseline;
  padding:22px 0;border-bottom:1px solid var(--line);
}
.lib-res-group .lib-res-row:last-child{border-bottom:0;}
.lib-res-kind{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);padding-top:3px;}
.lib-res-row h3{font-size:18px;font-weight:500;letter-spacing:-.01em;margin:0 0 6px;}
.lib-res-row h3 a{color:var(--ink);border:0;}
.lib-res-row h3 a:hover{color:var(--accent);}
.lib-res-row p{font-size:14.5px;line-height:1.6;color:var(--ink-soft);margin:0;max-width:58ch;}
.lib-res-status{font-family:var(--mono);font-size:11.5px;color:var(--ink-faint);white-space:nowrap;text-align:right;padding-top:3px;}
.lib-res-status.is-live{color:var(--accent);}
@media (max-width:640px){
  .lib-res-row{grid-template-columns:minmax(0,1fr);gap:6px;padding:20px 0;}
  .lib-res-status{text-align:left;}
}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){
  .lib-tab,.lib-card .lib-cover,.lib-share a,.lib-share button{transition:none !important;}
  .lib-card:hover .lib-cover{transform:none;}
}

/* ---------- print: a dark page on paper is unreadable, and ink is not free ---------- */
@media print{
  .lib{
    --bg:#fff;--surface:#fff;--surface-2:#fff;--ink:#000;--ink-soft:#333;--ink-faint:#555;
    --line:#bbb;--line-strong:#999;--paper:#fff;--paper-2:#fff;--card:#fff;--accent:#000;--accent-deep:#000;
    --code-bg:#f4f4f4;--code-ink:#000;
    background:#fff;color:#000;
  }
  html,body{background:#fff !important;}
  .lib .prose,.lib .prose strong{color:#000;}
  .lib .prose code{background:#f4f4f4;color:#000;}
  .lib-side,.lib-tabs,.lib-more,.lib-back,.rail-cta,.lib-toc-cta{display:none !important;}
}

/* related chapters, in the Library theme */
.lib .related h2{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.1em;color:var(--ink-faint);}
.lib .related a{border-bottom-color:var(--line);}
