
/* Atkinson Hyperlegible (c) Braille Institute of America, Inc. — SIL Open Font
   License 1.1, published beside these files as assets/atkinson-OFL.txt. It is
   the app's UI typeface; swap keeps text visible while it loads. */
@font-face{
  font-family:"Atkinson Hyperlegible"; font-style:normal; font-weight:400;
  font-display:swap; src:url(AtkinsonHyperlegible-Regular.2cf368a11c.woff2) format("woff2");
}
@font-face{
  font-family:"Atkinson Hyperlegible"; font-style:normal; font-weight:700;
  font-display:swap; src:url(AtkinsonHyperlegible-Bold.6b2614d107.woff2) format("woff2");
}
/* Junicode (c) Peter S. Baker — SIL Open Font License 1.1, published beside
   these files as assets/junicode-OFL.txt. Scripture is set in it here exactly
   as it is in the app, so a shared link shows a reader the page they know.
   Built from the same file the app embeds and subsetted more tightly: no small
   capitals, since the site publishes no edition that marks a divine name, and
   no Greek or Hebrew, since the note chrome below is set in the UI face. */
@font-face{
  font-family:"Junicode"; font-style:normal; font-weight:400;
  font-display:swap; src:url(Junicode-Regular.6f687473b4.woff2) format("woff2");
}
@font-face{
  font-family:"Junicode"; font-style:normal; font-weight:700;
  font-display:swap; src:url(Junicode-Bold.c8727419d3.woff2) format("woff2");
}
:root{
  --bg:#ede9e0; --surface:#fdfcf8; --text:#25221d; --muted:#6b6456;
  --accent:#2f4c86; --border:#bdb29f; --verse:#53688f; --red:#b23a2e;
  --verse-hl:#ffe08a; --control-hover:rgba(47,76,134,0.1098); --control-selected:rgba(47,76,134,0.1569);
  /* The app's two faces: chrome in Atkinson, scripture in Junicode. Each stack
     trails a system fallback so glyphs the face lacks — the ← → of the chapter
     nav, an unexpected accent — fall back per-glyph instead of tofu. */
  --ui:"Atkinson Hyperlegible",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --scripture:"Junicode",Georgia,"Iowan Old Style","Times New Roman",serif;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#191715; --surface:#221f1c; --text:#e9e3d9; --muted:#9d9487;
    --accent:#7ca0e4; --border:#39342e; --verse:#8ca8d8; --red:#e57373;
    --verse-hl:#3a326f; --control-hover:rgba(124,160,228,0.1098); --control-selected:rgba(124,160,228,0.1569);
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--text);
  /* Chrome, like the app. Scripture opts back into the serif on .text. */
  font-family:var(--ui); line-height:1.6;
  /* iOS Safari answers a double-tap with a small zoom instead of selecting the
     word under the finger — on a page of scripture, selecting is what a reader
     means. manipulation drops double-tap-to-zoom (and the old 300ms tap delay)
     while leaving pinch-zoom and scrolling untouched. */
  touch-action:manipulation;
}
.wrap{max-width:40rem; margin:0 auto; padding:1rem 1.6rem 2rem}
.top{
  display:flex; flex-wrap:wrap; align-items:center; gap:.5rem;
  font-size:.8rem; padding:.35rem 0 .55rem;
}
.top.plain{padding-bottom:.9rem; border-bottom:1px solid var(--border)}
/* "Go to" gets its own centred line under the nav row, so it never competes
   with the trail or the version pills for width — and the divider closes the
   whole header rather than sitting between its two halves. */
.gotorow{display:flex; justify-content:center; padding:0 0 .8rem;
  border-bottom:1px solid var(--border)}
.home{font-weight:700; color:var(--text); text-decoration:none; letter-spacing:.01em}
/* nowrap keeps the trail on one line — it was stacking into single words when
   "Go to" shared the row; now that Go to has its own line there is room. */
.crumbs{color:var(--muted); white-space:nowrap} .crumbs a{color:var(--muted); text-decoration:none}
.crumbs a:hover{text-decoration:underline} .sep{opacity:.5; padding:0 .15rem}
.vers{display:flex; gap:.3rem; margin-left:auto}
/* Deliberately NOT a version bubble: those are small, pill-shaped, muted and
   act like tabs. This is an action — accent-coloured, square-ish corners, a
   touch larger. It carries NO fill: a tinted chip on warm parchment reads as
   abrasive next to scripture, and the shape + weight + accent already say
   "button". The tint is kept for hover only, where it is transient. */
.goto{
  color:var(--accent); text-decoration:none; font-size:.85rem; font-weight:700;
  background:none; border:1px solid var(--border); border-radius:8px;
  padding:.3rem 1.1rem; white-space:nowrap; letter-spacing:.01em;
}
.goto:hover{border-color:var(--accent); background:var(--control-hover)}
/* Chapter heading row: title on the left, quiet prev/next arrows on the right.
   Arrows only up here — you land mid-text from a shared link, so this bar is
   for moving, not for labels; the labelled pager at the foot of the chapter is
   where a finished reader actually is. */
.chapbar{display:flex; align-items:center; gap:.75rem}
.chapnav{margin-left:auto; display:flex; gap:.4rem; white-space:nowrap}
/* Real arrows in real buttons. The first cut used thin ‹ › glyphs in a ~32px
   box: hard to see and under the 44px minimum a thumb needs. These match the
   page's other controls (Go to, version pills, the book grid all carry the
   same border and radius), which on the web reads as "clickable" better than
   a bare glyph does. Unfilled, like Go to — a pair of near-white tiles beside
   the chapter title fought with the text; the weight of the glyph is what
   makes them findable, not a bright ground. */
.arrow{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:2.75rem; min-height:2.75rem;
  border:1px solid var(--border); border-radius:10px; background:none;
  /* The chrome stack: Georgia draws arrows as hairlines that vanish on a phone
     screen. Atkinson has no arrow glyphs, so these fall through to the system
     sans behind it — which is exactly what draws them with weight. */
  font-family:var(--ui);
  font-size:1.45rem; font-weight:700; line-height:1;
  color:var(--accent); text-decoration:none;
}
.arrow:hover{border-color:var(--accent); background:var(--control-hover)}
.arrow.off{color:var(--muted); opacity:.3; pointer-events:none; background:none}
/* Go-to overlay — the APP'S picker, not a search box: a two-stage alphabet
   navigator on the left (letters → that letter's books → back), the selected
   book's chapter grid on the right, and a verse range + Go along the bottom.
   Tapping a book or a chapter only SELECTS; Go commits. Mirroring the app
   matters more than web convention here: the reader arriving from a shared link
   is usually an app user, and typing a reference on a phone is the thing the
   app's picker exists to avoid. */
.gotobg{position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex;
  align-items:flex-start; justify-content:center; padding:6vh 1rem 1rem; z-index:20}
.gotobox{background:var(--surface); border:1px solid var(--border); border-radius:12px;
  width:100%; max-width:30rem; padding:1rem; box-shadow:0 8px 30px rgba(0,0,0,.28)}
.gotohead{display:flex; align-items:center; margin:0 0 .7rem}
.gotohead h2{margin:0; font-size:1.15rem; letter-spacing:-.01em}
.gotox{margin-left:auto; background:none; border:0; padding:.1rem .3rem; cursor:pointer;
  color:var(--muted); font-size:1.4rem; line-height:1;
  font-family:var(--ui)}
.gotox:hover{color:var(--text)}
.gpanes{display:flex; gap:.7rem; align-items:stretch}
.gleft{flex:0 0 8.6rem; width:8.6rem; max-height:44vh; overflow-y:auto;
  border-right:1px solid var(--border); padding-right:.6rem}
.gright{flex:1 1 auto; max-height:44vh; overflow-y:auto; min-width:0}
/* The alphabet grid: only letters that actually have books in this canon, so
   there are no dead keys (the app's bookLetters rule). */
.galpha{display:grid; grid-template-columns:repeat(4,1fr); gap:.3rem}
.gchaps{display:grid; grid-template-columns:repeat(auto-fill,minmax(2.5rem,1fr)); gap:.3rem}
.galpha a,.gchaps a{
  display:flex; align-items:center; justify-content:center; min-height:2.2rem;
  border:1px solid var(--border); border-radius:8px; text-decoration:none;
  color:var(--text); font-size:.9rem; background:none;
}
.galpha a:hover,.gchaps a:hover{border-color:var(--accent); color:var(--accent)}
.gchaps a.on{border-color:var(--accent); color:var(--accent); font-weight:700; background:var(--control-selected)}
.gbooks{display:block}
.gbooks a{display:block; padding:.35rem .4rem; border-radius:6px; font-size:.92rem;
  color:var(--text); text-decoration:none}
.gbooks a:hover{background:var(--control-hover)}
.gbooks a.on{color:var(--accent); font-weight:700}
/* The way back to the alphabet, and the heading telling you which letter you
   are in. It was a muted ‹ and a small letter — easy to miss and easy to miss
   with a thumb. Accent-coloured, bold, with a rule under it so it reads as the
   pane's header rather than the first entry in the book list. */
.gback{display:flex; align-items:center; gap:.45rem;
  padding:.25rem .4rem .5rem; margin:0 0 .4rem;
  border-bottom:1px solid var(--border);
  color:var(--accent); text-decoration:none; font-weight:500;
  font-family:var(--ui)}
.gback:hover{border-bottom-color:var(--accent)}
/* Findable, not shouty: the accent colour and the rule do the work, so the
   glyph and letter stay close to the size of the book names under them. */
.bkarrow{font-size:1.1rem; line-height:1}
.bkletter{font-size:.95rem; letter-spacing:.02em}
/* Verse RANGE as two number fields — "verse [16] to [18]" — so there is no
   hyphen to type on a phone number pad. Exactly the app's row. */
.gverse{display:flex; align-items:center; gap:.5rem; margin:.9rem 0 0;
  padding:.8rem 0 0; border-top:1px solid var(--border)}
.gverse input{
  font-family:var(--ui); font-size:1rem; padding:.4rem .6rem;
  color:var(--text); background:var(--bg);
  border:1px solid var(--border); border-radius:8px; outline:none; min-width:0;
}
/* The app's proportions: the start field FLEXES to fill the row and the end
   field is a fixed narrow cell, with "to" and Go compact on the right. */
.gverse .gvstart{flex:1 1 auto; width:auto}
.gverse .gvend{flex:0 0 4rem; width:4rem}
.gverse input:focus{border-color:var(--accent)}
.gto{color:var(--muted); font-size:.85rem}
/* Filled, unlike the page's quiet controls: this is the one commit action, it
   lives on a dimmed sheet, and it is the app's HighImportance Go button. */
.ggo{margin-left:auto; background:var(--accent); color:var(--surface); border:0;
  border-radius:8px; padding:.45rem 1.4rem; font-size:.9rem; font-weight:700;
  cursor:pointer; font-family:inherit}
.ggo:hover{opacity:.9}
.vpick{
  color:var(--muted); text-decoration:none; font-size:.7rem; letter-spacing:.04em;
  border:1px solid var(--border); border-radius:999px; padding:.15rem .5rem;
}
.vpick.on{color:var(--accent); border-color:var(--accent)}
.ref{font-size:1.9rem; margin:1.1rem 0 .1rem; font-weight:700; letter-spacing:-.01em}
.ver{margin:0 0 1.3rem; color:var(--muted); font-size:.85rem}
/* THE SCRIPTURE FACE, matched to the iOS app. Every value here is the app's
   own reading CSS (buildChapterHTML, reading.go): the same stack led by
   Georgia, the same 21px base, the same 0.004em tracking and the same OpenType
   features — kerning, ligatures, contextual alternates and OLD-STYLE numerals,
   which is what gives the app's verse numbers their book-page look.
   21px is written as 1.3125rem rather than px so it still answers a reader who
   has set a larger default text size in their browser, while landing on exactly
   21px at the default. */
/* LEADING — MEASURED off the app, not copied from its stylesheet, because the
   app does not render what its stylesheet says. buildChapterHTML asks for
   line-height 2.0 on phones, but that CSS goes through the UIKit HTML importer
   into an attributed string, and what comes out is neither 2.0 nor the font's
   natural height:

     importer on macOS   drops line-height entirely (multiple 0, spacing 0)
     importer on iOS     turns it into minimumLineHeight 42 (= 2.0 x 21)
     what iOS RENDERS    a 27.67pt line pitch at 21px  ->  1.3175

   27.67pt was measured twice at 3x — on a real iPhone screenshot and on the
   simulator at default text size — as 83 device px, both to the pixel. So 1.3175
   is what a reader actually sees, and it is what the page sets.

   The paragraph gap is measured the same way: a boundary comes out at exactly
   166 device px, two line pitches, i.e. ONE BLANK LINE — not the 24px the
   stylesheet asks for. Hence 1.3175em below rather than 24px.

   Both numbers are unitless/em so they still scale with a reader's own font
   size. If the app's reading pane is ever re-typeset, re-measure — do not read
   these off buildChapterHTML.

   RE-MEASURED after the reading face was given its optical scale
   (reading_face_scale.go). The body size here moved with it; 1.3175 did NOT
   need to. The iOS pitch turns out to be 2.0 x 0.66 x body — TextKit takes a
   paragraph's line height from its FIRST run, which is always the 0.66em verse
   numeral — so it is linear in the body size and the ratio survives the change.
   Confirmed on the iPhone 17 Pro simulator: 83 device px at the old 21px body,
   95 at the corrected 24px, i.e. 1.3196 against the 1.3175 written here. */
.text{
  font-family:var(--scripture);
  font-size:1.5117rem; line-height:1.2222; letter-spacing:.004em;
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1,"onum" 1;
}
.text{--pgap:calc(1 * 1.5117rem); --htail:calc(0.35 * 1.5117rem); --tgap:calc(0.55 * 1.5117rem)}
.text p{margin:0 0 var(--pgap); text-align:justify; hyphens:auto; -webkit-hyphens:auto}
/* SECTION HEADINGS, as the app panes set them (reading.go, p.sec): the body's
   own size, bold, left, no indent — a heading is a label, and the reporter
   indent below would push it off its own left edge — with 1.1em above and
   .35em below, in ems of the body it is set in. The web once gave headings a
   size of their own, a step under the body, and margins figured from the
   paragraph gap, which is zero on the reporter page: a desktop reader saw a
   heading three-quarters the size of the text with 6px above and nothing
   below. One rule now, shared with the panes; no size is invented — and
   font-size:1em is stated rather than left out, because the heading is an
   <h2> for the document's outline where the panes use a <p>, and a browser's
   own h2 size is 1.5em. A heading that opens the chapter needs no space
   above it. */
.text .sec{
  font-size:1em; font-weight:700; text-align:left; text-indent:0; hyphens:none;
  margin:1.1em 0 0.35em;
}
.text .sec:first-child{margin-top:0}
/* Paragraph shape mirrors the app: on a phone, paragraphs are separated by
   space (the app's phone reading pane); from tablet width up the app switches
   to its iPad "reporter" setting — a first-line indent with no blank line
   between paragraphs, which is how a printed Bible sets prose. A paragraph
   that OPENS with poetry keeps its space and takes no indent, matching the
   app's rule that the reporter indent is skipped for poetic paragraphs. */
@media (min-width:46rem){
  /* The reporter set: no gap between paragraphs, a first-line indent instead
     (the app's em+en spaces). Leading stays natural — the importer drops the
     app's 1.3 exactly as it drops the phone's 2.0. */
  .text{--pgap:0rem}
  .text p{margin:0; text-indent:1.5em}
  /* The first paragraph takes no reporter indent — and a psalm's title is a
     <p> too, so once it stands first the verse paragraph after it must be
     named as well or every titled psalm gains an indent it never had. */
  .text p:first-child, .text p.pst + p{text-indent:0}
  /* A note's card, chip or notice is inserted BEFORE its paragraph, so the
     first paragraph of a chapter (or of a titled psalm) stops being the first
     child once it is noted; it keeps the no-indent it had without the note. */
  .text .note:first-child + p, .text .notechip:first-child + p, .text .notenotice:first-child + p,
  .text p.pst + .note + p, .text p.pst + .notechip + p, .text p.pst + .notenotice + p{text-indent:0}
  .text p.pm{margin:.55rem 0; text-indent:0}
  .text p.pm + p{text-indent:0}
}
.text p.pm{text-align:left; hyphens:none}
/* THE PSALM'S TITLE. Scripture's own title for the psalm — "A Psalm of David,
   when he fled from Absalom his son" — not a section heading, so it is set as
   an italic unnumbered line rather than as a heading, and it takes no reporter
   indent. Leading is inherited deliberately: on all four app panes the title
   sets at the body's own rhythm, so naming a line-height here would make the
   web the one surface that differs. The gap below is the same 0.45 of a line
   the panes measure. The face ships no italic cut, so this is a synthesised
   oblique — accepted, because the alternative is a fifth hashed font asset for
   one line per psalm. */
.text p.pst{font-style:italic; text-indent:0; margin:0 0 0.55em}
/* THE FOOTNOTE SECTION. The translators' apparatus, after the chapter and
   outside the article, because the article is the scripture and this is about
   it. Set smaller and muted so it reads as an appendix rather than as more
   verse: a reader scrolling for the next chapter passes it, and a reader who
   wants it has it without a control the site has no way to remember.
   The key column is the verse number the note belongs to, or "Title". */
.notes{margin:2.2rem 0 0; padding-top:1.1rem; border-top:1px solid var(--border);
  font-size:.86em; color:var(--muted)}
.notes h2{font-size:.86em; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--muted); margin:0 0 .7rem}
.notes dl{margin:0; display:grid; grid-template-columns:2.4em 1fr; gap:.34rem .7rem}
.notes dt{font-variant-numeric:tabular-nums; text-align:right; opacity:.75}
.notes dd{margin:0}
/* The app's verse number: sup.v — 0.66em, weight 600, no tracking, 2px of air
   after it. The raise is left to the browser's own <sup> handling, damped so a
   superscript cannot open up the line it sits on. */
.n{font-size:.66em; font-weight:600; letter-spacing:0; margin-right:2px;
  vertical-align:.45em; line-height:0}
.n a{color:var(--verse); text-decoration:none}
.n a:hover{text-decoration:underline}
.wj{color:var(--red)}
/* A single-verse link works with NO JavaScript: the fragment matches the
   verse's id and :target paints it. reader.js only adds ranges. */
/* Generous scroll-margin so a deep link lands the verse with the chapter
   heading still on screen, rather than pinning it to the very top edge. */
.v:target,.v.hl{background:var(--verse-hl); border-radius:3px;
  box-shadow:0 0 0 .18em var(--verse-hl); scroll-margin-top:6.5rem}
/* Browsers do NOT re-evaluate :target when history.replaceState drops the
   fragment — the URL loses #v16 but the verse stays lit, so tapping a
   single-verse highlight appeared to do nothing (a range cleared, because that
   is class-based). reader.js sets this flag when it clears, and the extra
   class beats the bare :target on specificity. Without JS the flag is never
   set, so the no-JS highlight is untouched. */
html.nohl .v:target{background:none; box-shadow:none; cursor:auto}
.empty{color:var(--muted); font-style:italic}
.grid{list-style:none; padding:0; margin:0;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr)); gap:.4rem}
.grid.nums{grid-template-columns:repeat(auto-fill,minmax(3.2rem,1fr))}
.grid a{
  display:block; padding:.55rem .6rem; text-decoration:none; color:var(--text);
  background:var(--surface); border:1px solid var(--border); border-radius:8px;
  font-size:.92rem;
}
.grid.nums a{text-align:center}
.grid a:hover{border-color:var(--accent); color:var(--accent)}
.pager{display:flex; justify-content:space-between; gap:1rem; margin-top:1.5rem;
  padding-top:1rem; border-top:1px solid var(--border); font-size:.9rem}
.pager a{color:var(--accent); text-decoration:none}
.pager a:hover{text-decoration:underline}
.guess{margin:0 0 1.2rem}
.guess a{color:var(--accent)}
/* Clearing a highlight: tap the highlighted text and a small "Clear highlight"
   bubble appears at the tap; tap the bubble to clear, tap anywhere else (or the
   verse again) and it goes away. cursor:pointer is not only a hint here — it is
   also what makes iOS Safari treat a bare <span> as tappable at all. */
.v:target,.v.hl{cursor:pointer; -webkit-tap-highlight-color:transparent}
/* Sits just under the highlighted text, centred on the column — so it points at
   what it offers without covering it. Absolute (document coordinates), so it
   travels with the passage as the reader scrolls; reader.js sets top/left from
   the last line of the highlight. It holds ONE button for a plain highlight and
   TWO when the highlight belongs to a note, because "hide" and "delete" are
   different enough that a reader should not have to guess. */
.clearbar{
  position:absolute; z-index:15; transform:translateX(-50%);
  display:flex; gap:.4rem;
}
.clearbub{
  background:var(--surface); color:var(--accent);
  border:1px solid var(--border); border-radius:999px;
  padding:.4rem .9rem; font-size:.8rem; font-weight:700; cursor:pointer;
  font-family:var(--ui);
  box-shadow:0 3px 12px rgba(0,0,0,.18); white-space:nowrap;
  -webkit-user-select:none; user-select:none; -webkit-tap-highlight-color:transparent;
}
.clearbub:hover{border-color:var(--accent)}
/* THE SENDER'S NOTE. It sits above the chapter, in the flow, so it never covers
   the words it is about and needs no JavaScript to follow the page.
   It must NOT look like BibleText chrome: the whole point of the attribution
   line and the quoted, off-palette card is that a reader can tell at a glance
   that a person wrote this, not the app. A note that could pass for our own
   voice would be a phishing surface on our own domain. */
/* Anchoring the note beside its passage puts it INSIDE .text, so it would
   otherwise inherit the scripture face, its justification, its 21px, and the
   reporter first-line indent — i.e. it would look like scripture. Everything
   here is an explicit reset: a reader must never have to work out whether the
   words in front of them are the Bible or a stranger's message. */
.note{
  /* An inline-level box so its margins NEVER collapse with the paragraph gap
     or a heading's tail above it: the band stacks on whatever air stands
     there, exactly as the natives reserve it, and the numbers are the spec's
     (noteMetrics GapAbove above; TailDepth + GapBelow below a card with a
     tail, GapBelow alone without one — the tail apex, not the card's edge,
     is what stands GapBelow above the passage). */
  display:inline-block; width:100%; vertical-align:top;
  position:relative; margin:10px 0 19px;
  padding:.85rem 2.2rem .9rem 1rem;
  /* The shared arrival lead (noteMetrics().Lead), not this file's own offset.
     The VERSE target keeps its larger 6.5rem margin — a bare #vN jump is the
     browser's own scroll, held well clear of the page top for legibility.
     That larger number is this surface's stated divergence from the single
     Lead, pinned by note_chrome_shared_test.go. */
  scroll-margin-top:16px;
  background:var(--surface); border:1px solid var(--border);
  border-left:3px solid var(--accent); border-radius:10px;
  font-family:var(--ui); font-size:1rem; line-height:1.5;
  letter-spacing:normal; text-align:left; text-indent:0;
  font-feature-settings:normal;
}
.note p{margin:0; text-align:left; text-indent:0; hyphens:none}
/* The tail, which is what makes it read as somebody speaking: a square of
   side TailWidth/√2 turned 45° with its centre on the card's OUTER bottom
   edge, so the apex hangs TailWidth/2 = TailDepth below the edge and the base
   is TailWidth across — the spec's 9 × 18. Two things the arithmetic must
   include: the universal box-sizing rule never reaches a pseudo-element, so
   the square's own 1px borders are put inside its side here, and its bottom
   is measured from the card's padding edge, one border above the outer one. */
.note::after{
  content:""; position:absolute; left:1.6rem; box-sizing:border-box;
  bottom:calc(-6.36px - 1px);
  width:12.73px; height:12.73px; background:var(--surface);
  border-right:1px solid var(--border); border-bottom:1px solid var(--border);
  transform:rotate(45deg);
}
/* No passage to point at, no tail — the shared rule (noteChrome.hasTail);
   anchorToPassage sets the class on the chapter-top parking. */
.note.notail::after{display:none}
.note.notail{margin-bottom:10px}
.notewho{
  margin:0 0 .3rem; color:var(--muted); font-size:.78rem;
  letter-spacing:.01em;
}
/* The note itself is set in the CHROME face, not the scripture serif: it is
   somebody's message, and it must never be mistaken for the text. */
.notetext{margin:0; font-size:.95rem; line-height:1.5; white-space:pre-wrap; overflow-wrap:anywhere}
/* Minimize and delete, in that order: the reversible one first, so the
   destructive one is never the one a thumb reaches by accident. */
.notetools{position:absolute; top:.3rem; right:.35rem; display:flex; gap:.1rem}
.notebtn{
  background:none; border:0; padding:.3rem; cursor:pointer; color:var(--muted);
  line-height:0; border-radius:6px;
}
.notebtn svg{width:15px; height:15px; fill:currentColor; display:block}
.notebtn:hover{color:var(--accent); background:var(--control-hover)}
/* The minimized marker. Small and quiet, but unmistakably a thing to press:
   the note is still there and the reader has to be able to find it again.
   Its vertical margins carry the centering rule (notePillSeparatorLift in
   the app): the paragraph separator above it (--pgap, the preceding p's
   bottom margin) splits evenly around the chip, so the air reads the same on
   both sides — margin-top gives up pgap/2, margin-bottom takes it. On the
   reporter page --pgap is 0 and both margins are the spec's GapAbove and
   GapBelow again. The chip stays inline-flex (an atomic inline box: no
   margin collapsing with the neighbouring paragraphs) and vertical-align:top
   keeps the anonymous line box's strut from eating the shrunken top margin.
   The chapter-top parking (.notail, after the header instead of a
   paragraph) has no separator above it and keeps the plain margins. Under
   a section heading or a psalm title the separator is the heading's tail
   or the title's gap (--htail, --tgap), and the chip centres in THAT air —
   the app's rule reads whatever the page put above the paragraph, never
   only its rhythm. The height, side padding and width floor are the spec's
   too; the height is a floor, so a label the browser sets larger than the
   app's grows the chip rather than escaping it. */
.notechip{
  display:inline-flex; align-items:center; justify-content:center; gap:.35rem;
  min-height:28px; min-width:86px;
  margin:calc(10px - var(--pgap, 0rem)/2) 0 calc(10px + var(--pgap, 0rem)/2);
  vertical-align:top;
  scroll-margin-top:16px;
  letter-spacing:normal; text-indent:0;
  background:none; border:1px solid var(--border); border-radius:999px;
  padding:.3rem 14px; font-size:.78rem; font-family:var(--ui);
  color:var(--muted); cursor:pointer; line-height:1.2;
}
/* No separator above, no split: a chip before the FIRST paragraph (it becomes
   .text's first child) and the chapter-top parking (outside .text, where
   --pgap never reaches it anyway) keep the plain margins — the app's rule
   that the bare chapter top never lifts. A psalm's title takes .text's
   first-child slot, so a chip on verse 1 of a titled psalm is NOT the first
   child: it follows the title and centres in the title's gap, below. */
.text .notechip:first-child, .notechip.notail{margin:10px 0 10px}
.text .sec + .notechip{margin:calc(10px - var(--htail)/2) 0 calc(10px + var(--htail)/2)}
.text p.pst + .notechip{margin:calc(10px - var(--tgap)/2) 0 calc(10px + var(--tgap)/2)}
.notechip svg{width:13px; height:13px; fill:currentColor; display:block}
.notechip:hover{border-color:var(--accent); color:var(--accent)}
/* THE COULD-NOT-READ NOTICE: what stands in the note's place when a link's
   payload cannot be rendered (a newer note format, or damage). Quiet and
   attributed to nobody — no tail (nobody is speaking), no accent edge, no
   button, no link. Same explicit resets as .note: it sits inside .text and
   must read as neither scripture nor a person's message. */
.notenotice{
  margin:1.1rem 0; padding:.8rem 1rem; scroll-margin-top:1.2rem;
  background:var(--surface); border:1px solid var(--border); border-radius:10px;
  color:var(--muted); font-family:var(--ui); font-size:.9rem; line-height:1.5;
  letter-spacing:normal; text-align:left; text-indent:0;
  font-feature-settings:normal;
}
.foot{max-width:40rem; margin:0 auto; padding:0 1.6rem 2.5rem; text-align:center}
.foot a{color:var(--muted); font-size:.8rem; text-decoration:none}
.foot a:hover{color:var(--accent); text-decoration:underline}
/* Platform row under the app link. Monochrome and quiet on purpose — this is a
   footnote, not a call to action; the icons say "it runs on your thing" at a
   glance without shouting. They inherit currentColor, so they follow the muted
   colour and the light/dark flip with no second asset. */
.plats{display:flex; justify-content:center; align-items:center; gap:.6rem;
  margin:.2rem 0 0; color:var(--muted)}
.plats a{display:inline-flex; align-items:center; color:inherit; opacity:.75}
.plats a:hover{opacity:1; color:var(--accent)}
/* px, not rem: on a phone with a large text-size setting these were rendering
   enormous. They are decoration and should stay the same modest size. */
.plats svg{width:15px; height:15px; fill:currentColor; display:block}
@media print{.top,.pager,.foot{display:none}}
