/* Library: reader, contents and print view. Uses the app's parchment tokens from styles.css. */
.lcrumbs { font-family: var(--sans); font-size: .8rem; color: var(--muted); margin: .2rem 0 1rem; }
.lcrumbs a { color: var(--muted); text-decoration: none; } .lcrumbs a:hover { color: var(--accent); }
.lhero h1 { font-family: var(--display); }
.lfind { margin-top: 1rem; max-width: 30rem; }
.lgroup { margin: 2.2rem 0 1rem; }
.lgroup h2 { font-family: var(--display); font-size: 1.7rem; margin: 0 0 .2rem; border-bottom: 1px solid var(--rule); padding-bottom: .3rem; }
.lcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .8rem; margin-top: .8rem; }
.lcard { display: flex; flex-direction: column; gap: .3rem; text-decoration: none; color: var(--ink); padding: 1rem 1.1rem; }
.lcard:hover { box-shadow: var(--shadow-lift); }
.lcard-t { font-family: var(--display); font-weight: 600; font-size: 1.25rem; line-height: 1.2; color: var(--accent); }
.lcard-s { font-size: .86rem; color: var(--ink-soft); line-height: 1.45; }
.lcard .pill { align-self: flex-start; }
.lheld { margin-top: 2.5rem; } .lheld li { margin: .45rem 0; font-size: .92rem; }
.lnote { border-left: 3px solid var(--gold); background: var(--gold-soft); color: var(--ink); padding: .7rem 1rem; border-radius: 0 10px 10px 0; font-size: .92rem; }
.ledition { font-size: .9rem; color: var(--ink-soft); }
.ljumpbox { margin: 1.2rem 0; } .ljumpbox .search { max-width: 30rem; }
.ljumpres { list-style: none; padding: 0; margin: .4rem 0; } .ljumpres li { padding: .2rem 0; }
.lsearchall form { display: flex; gap: .5rem; flex-wrap: wrap; margin: .6rem 0; } .lsearchall .search { flex: 1 1 14rem; }
.lhits { padding-left: 1.1rem; } .lhits li { margin: .5rem 0; }
.ltoc-h { font-family: var(--display); font-size: 1.6rem; margin-top: 2rem; }
.ltoc { list-style: none; padding: 0; margin: 0; columns: 2 22rem; column-gap: 2rem; }
.ltoc li { break-inside: avoid; padding: .32rem 0; border-bottom: 1px dotted var(--rule); }
.ltoc li a { font-weight: 500; }
.ltoc .ltoc-work { column-span: all; border: 0; margin-top: 1.2rem; font-family: var(--display); font-size: 1.3rem; font-weight: 600; color: var(--ink); }
.ltoc .ltoc-work a { font-family: var(--sans); font-weight: 400; }
.ltoc .ltoc-intro { column-span: all; border: 0; font-style: italic; }
.lgist { display: block; }

.lpaper { background: var(--paper); border: 1px solid var(--rule); border-radius: var(--radius); box-shadow: var(--shadow); padding: clamp(1.1rem, 4vw, 3rem) clamp(1rem, 5vw, 3.6rem); max-width: 46rem; margin: 0 auto;
  background-image: radial-gradient(ellipse at top left, rgba(180,138,70,.08), transparent 60%), radial-gradient(ellipse at bottom right, rgba(180,138,70,.07), transparent 55%); }
.lintro h1, .lreader h1 { font-family: var(--display); font-size: 2.2rem; line-height: 1.15; margin: .2rem 0 .6rem; }
.lintro .li-h { font-family: var(--display); font-size: 1.35rem; color: var(--accent); margin: 1.6rem 0 .3rem; }
.lintro p { margin: .4rem 0 .8rem; }
.lafter { justify-content: center; margin: 1.4rem auto; max-width: 46rem; }
.lbar { position: sticky; top: var(--topbar-h, 0); z-index: 5; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; background: var(--bg); padding: .5rem 0; margin-bottom: .6rem; border-bottom: 1px solid var(--rule); max-width: 46rem; margin-left: auto; margin-right: auto; }
.lbar .btn { padding: .35rem .7rem; font-size: .85rem; }
.lsel { flex: 1 1 10rem; min-width: 0; max-width: 22rem; font: inherit; font-family: var(--sans); font-size: .85rem; padding: .4rem .5rem; border-radius: 10px; border: 1px solid var(--rule); background: var(--paper); color: var(--ink); }
.lbar-sp { flex: 1 1 0; }
.lfindrow { display: flex; gap: .4rem; align-items: center; max-width: 46rem; margin: 0 auto .6rem; } .lfindrow .search { flex: 1; }
mark.lhit { background: var(--gold-soft); color: inherit; border-radius: 2px; } mark.lhit.cur { background: var(--gold); color: var(--accent-ink); }
.lreader { font-size: 1.06rem; line-height: 1.8; }
.lreader > .eyebrow { margin-bottom: .2rem; }
.lch-h, .lbook-h { font-family: var(--display); font-size: 2rem; line-height: 1.15; margin: .2rem 0 1rem; color: var(--ink); text-align: center; }
.lch-h::after { content: ""; display: block; width: 4rem; height: 1px; background: var(--gold); margin: .6rem auto 0; }
.lch-h3 { font-family: var(--display); font-size: 1.45rem; margin: 1.8rem 0 .4rem; color: var(--accent); }
.lsect { font-family: var(--display); font-size: 1.2rem; font-style: italic; margin: 1.4rem 0 .4rem; color: var(--ink-soft); }
.lsub { font-style: italic; color: var(--ink-soft); margin-top: -.2rem; }
.lpsd { font-style: italic; color: var(--ink-soft); }
.lsegnote { font-family: var(--sans); font-size: .8rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.lreader p { margin: 0 0 .85rem; }
b.vn { font-family: var(--sans); font-size: .68em; font-weight: 600; color: var(--gold); vertical-align: super; line-height: 0; margin-right: .15em; }
i.add { font-style: italic; color: var(--ink-soft); }
span.sc { font-variant: small-caps; }
.lpoem, .lpoem-p { margin-left: 1.5rem; } .ll { display: block; padding-left: 1.5em; text-indent: -1.5em; }
.ltable { overflow-x: auto; display: block; }
sup.fnref { line-height: 0; font-size: .7em; } sup.fnref a { text-decoration: none; font-family: var(--sans); font-weight: 600; padding: 0 .1em; }
details.lnotes { margin: 1rem 0 1.6rem; font-size: .86rem; line-height: 1.55; border-top: 1px solid var(--rule); padding-top: .4rem; color: var(--ink-soft); }
details.lnotes summary { cursor: pointer; font-family: var(--sans); font-size: .8rem; color: var(--muted); }
details.lnotes ol { padding-left: 1.4rem; } details.lnotes li { margin: .35rem 0; list-style: none; }
a.fnback { text-decoration: none; font-weight: 600; margin-right: .2rem; }
.lflash { animation: lflash 2s var(--ease); border-radius: 4px; }
@keyframes lflash { 0%, 40% { background: var(--gold-soft); box-shadow: 0 0 0 4px var(--gold-soft); } 100% { background: transparent; box-shadow: none; } }
.lcredit { max-width: 46rem; margin: 1rem auto; text-align: center; }
a.liblink { text-decoration-style: dotted; }
.lprint-tools { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-bottom: 1rem; }
.lprint { max-width: 46rem; margin: 0 auto; background: var(--paper); padding: 2rem clamp(1rem, 5vw, 3rem); border-radius: var(--radius); border: 1px solid var(--rule); }
.lp-title { text-align: center; padding: 2rem 0; }
.lp-title h1 { font-family: var(--display); font-size: 2.6rem; line-height: 1.1; margin: 1.5rem 0 .4rem; }
.lp-sub { font-family: var(--display); font-size: 1.3rem; font-style: italic; } .lp-short { color: var(--ink-soft); }
.lp-ed { text-align: left; font-size: .88rem; margin: 2rem auto 1rem; max-width: 34rem; border-top: 1px solid var(--rule); padding-top: 1rem; }
.lp-pd { font-size: .85rem; font-style: italic; }
.lp-h { font-family: var(--display); font-size: 1.8rem; text-align: center; }
@media (max-width: 640px) {
  .lbar .btn { padding: .3rem .5rem; } .lbar .lbar-sp { flex-basis: 100%; height: 0; } .lsel { flex-basis: 8rem; }
  .ltoc { columns: 1; } .lch-h, .lbook-h { font-size: 1.6rem; } .lintro h1, .lreader h1 { font-size: 1.8rem; }
  .lpaper { border-radius: 10px; }
}
@media print {
  .lcrumbs, .lbar, .lfindrow, .lafter, .lcredit, .lprint-tools, .noprint, .footer, .ask-fab, .ask-panel, .topbar { display: none !important; }
  body { background: #fff !important; color: #000; font-size: 11.5pt; }
  #app { padding: 0 !important; margin: 0 !important; max-width: none !important; }
  .lpaper, .lprint { border: 0; box-shadow: none; background: #fff !important; padding: 0; max-width: none; color: #000; }
  .lprint, .lprint * { font-family: "Literata", Georgia, "Times New Roman", serif; }
  .lprint h1, .lprint h2, .lprint h3, .lch-h, .lch-h3, .lp-h { font-family: "Cormorant Garamond", Garamond, Georgia, serif; color: #000; break-after: avoid; }
  .lp-title { break-after: page; padding-top: 25vh; }
  .lp-intro { break-after: page; }
  .lp-unit, .lprint section.lch { break-before: page; }
  .lp-unit section.lch:first-child { break-before: auto; }
  b.vn, sup.fnref a, a { color: #444 !important; text-decoration: none; }
  details.lnotes { color: #222; } details.lnotes summary { display: none; } details.lnotes li { list-style: none; }
  .lnote { background: #f4f0e6 !important; color: #000; }
  @page { margin: 18mm 16mm; }
}
.lfindrow[hidden] { display: none; }
.lreader [id], .lintro [id] { scroll-margin-top: calc(var(--topbar-h, 60px) + 4.5rem); }
.ljumpbox label { display: block; margin-bottom: .3rem; }
/* Parallel columns (1 Enoch: Ethiopic / Greek; doublets) */
.lpar { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin: 1rem 0; padding: .75rem 0; border-top: 1px solid var(--border, rgba(127,127,127,.3)); border-bottom: 1px solid var(--border, rgba(127,127,127,.3)); }
.lpcol { min-width: 0; }
.lpcol + .lpcol { border-left: 1px solid var(--border, rgba(127,127,127,.3)); padding-left: 1.25rem; }
.lpcol-h { font-size: .75rem; font-variant: small-caps; letter-spacing: .08em; text-transform: lowercase; opacity: .75; margin-bottom: .4rem; font-weight: 600; }
.lpar-d .lpcol:first-child, .lpcol-g { font-size: .97em; }
@media (max-width: 640px) {
  .lpar { grid-template-columns: 1fr; gap: .5rem; }
  .lpcol + .lpcol { border-left: 0; padding-left: 0; border-top: 1px dashed var(--border, rgba(127,127,127,.3)); padding-top: .6rem; }
}
@media print {
  .lpar { grid-template-columns: 1fr 1fr; break-inside: auto; }
  .lpcol + .lpcol { border-left: 1px solid #999; }
}

/* long URLs and titles in introductions and notes must wrap on phones */
.lpaper, .lnote, .ledition { overflow-wrap: anywhere; }
