@charset "UTF-8";
/* Latin Prayer — unified design overlay.
   Compiled into dwlatinprayerdesign.css.

   Layer order (bottom → top):
     1. fonts        self-hosted @font-face declarations
     2. tokens       CSS custom properties + 3 reading modes + legacy aliases
     3. base         base typography on body.dwlatinprayerdesign
     4. chrome       site header / nav / footer overrides
     5. utilities    atomic .lp-* classes (display, card, btn, tag, ornament, …)
     6. legacy page partials (dwlatinprayer, tracklist, saints-search, thebible)
        — kept in place until each page is redesigned in Step 6+
*/
/* ============================================================
   Fonts — DW Design System (system fonts only).
   No web fonts, no @import, no FOUT. The three canonical stacks
   live in _tokens.scss as --font-sans / --font-serif / --font-mono.
   Identity comes from weight + tracking + size, not from a bespoke
   typeface. Doc: https://2d.wgnr.es/odk/docs/dw-design-system/
   ============================================================ */
/* ============================================================
   LP design tokens — now fully unified onto the base kernel.
   ------------------------------------------------------------
   The single DESIGN TOKEN KERNEL lives in dwtheme:
     wp-content/themes/dwtheme/assets/css/tokens.css
   (base palette: bg / ink / rubric / rule / gilt, plus the font
    kernel, --read, --rubric-tint, --shadow-md, the data-theme
    flips and the --bs-* Bootstrap bridge). It is enqueued
    globally by dwtheme, so every LP partial resolves its tokens
    against it directly.

   The former lp- alias namespace has been retired: every
   consumer now speaks the base tokens. This file is intentionally
   empty (kept in the @use chain as the documented pointer to the
   kernel) — add nothing here; extend the kernel instead.
   ============================================================ */
/* ============================================================
   Language switcher — the ONE visual primitive.

   WHAT:  A single SCSS mixin that styles every language-switcher
          on the site as the same bordered-chip bar (the confession /
          mass chip bar). One look, one active state.
   WHY:   The site had five different switcher looks (underline-pill,
          mint-green pill, solid-black segmented, etc.). Kant rule:
          a switcher is ONE component, defined once, composed everywhere.
   INPUT: $link  — selector for the chip element (link/button)
          $active — selector for the active chip (defaults to '.active')
   OUTPUT:flex bar + bordered chip + hover + accent active state.
          Active = var(--rubric) bg + #fff text + var(--rubric) border;
          --rubric is theme-aware (sanguine in light, orange in dark),
          so the active chip flips colour with the theme automatically.
   DEPENDS ON: tokens (--rubric, --rule, --bg-2, --ink, --ink-soft).
   USED BY: confession, mass, prayers, dwlatinprayer, bible, books.
   ============================================================ */
/* ============================================================
   Base — body, links, selection, typography defaults.
   Scoped to body.dwlatinprayerdesign so the overlay only takes
   effect when the WP option is enabled.
   ============================================================ */
body.dwlatinprayerdesign {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  /* Body/UI base raised to 18px — one shared standard with dushanwegner.com,
     erring larger for readability (many readers have ageing eyes). */
  font-size: var(--fs-body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern", "liga";
  /* Canonical page-head top spacing — the ONE rule every page head composes from
     (prayers/confession/mass, bible index, saints). Page heads add no extra top
     padding beyond this; divergent per-surface values were the old margin drift. */
  --lp-pagehead-pad-top: clamp(16px, 2.5vw, 24px);
  /* ── Reading measures (the TWO canonical content widths) ──────────────
     --read  : the single-column reading measure (kernel default 720px) — the
               workhorse for prose and one-column interlinear reading.
     --wide  : the WIDE-DESKTOP measure — the ONE rule any surface composes from
               when a single reading column is not enough: a two-column reading-
               plus-gloss, parallel texts, or data-dense layouts. Apply via the
               `.lp-wide` utility (or `max-width: var(--wide)`); a component
               collapses it back to --read on narrow viewports. Daring on purpose
               — wider than the old per-page one-offs — yet still a bounded measure
               so the gloss column never loses its line length. */
  --wide: 1280px;
  /* General rule: links never underline — colour change only on hover. */
}
body.dwlatinprayerdesign a {
  color: var(--ink);
  text-decoration: none;
  transition: color 0.15s, background-color 0.15s;
}
body.dwlatinprayerdesign a:hover, body.dwlatinprayerdesign a:focus {
  color: var(--rubric);
  text-decoration: none;
  border-bottom: 0;
}
body.dwlatinprayerdesign ::selection {
  background: rgba(113, 5, 0, 0.15);
  color: var(--ink);
}
body.dwlatinprayerdesign {
  /* DW Design System: full sans, neutral, dense. Default heading scale
     matches the Claude-Design kernel (h1 28 / h2 18 / h3 15); per-surface
     heroes opt into larger sizes explicitly. */
}
body.dwlatinprayerdesign h1, body.dwlatinprayerdesign h2, body.dwlatinprayerdesign h3, body.dwlatinprayerdesign h4, body.dwlatinprayerdesign h5, body.dwlatinprayerdesign h6 {
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  color: var(--ink);
  letter-spacing: -0.02em;
  text-decoration: none;
  text-wrap: balance;
}
body.dwlatinprayerdesign h1 {
  font-size: var(--fs-heading);
  line-height: 1.12;
  font-weight: var(--fw-bold);
}
body.dwlatinprayerdesign h2 {
  font-size: var(--fs-body);
  line-height: 1.25;
  letter-spacing: -0.015em;
}
body.dwlatinprayerdesign h3 {
  font-size: var(--fs-small);
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: -0.01em;
}
body.dwlatinprayerdesign {
  /* Bootstrap's <small>/.small are 0.875em (relative → compound off-scale,
     e.g. ~15.75px inside the 18px body — seen on saint prayer sources/titles).
     Snap to the small token so they stay on the 5-step scale everywhere. */
}
body.dwlatinprayerdesign small, body.dwlatinprayerdesign .small {
  font-size: var(--fs-small);
}

/* Shared section primitives — reusable across pages.
   NOTE: .lp-eyebrow / .lp-eyebrow-it / .lp-eyebrow--accent are now the
   canonical UNSCOPED primitives in dwtheme (assets/css/primitives.css);
   the overlay relies on those. Only the legacy `.eyebrow` alias and the
   LP-specific section ornaments remain scoped here. */
body.dwlatinprayerdesign {
  /* Legacy `.eyebrow` alias (non-lp markup) maps onto the eyebrow kernel. */
}
body.dwlatinprayerdesign .eyebrow {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
}
body.dwlatinprayerdesign {
  /* Section divider — ornament retired (tool direction). The fleuron glyph
     is hidden and the two flex halves join into one plain neutral hairline. */
}
body.dwlatinprayerdesign .lp-rule,
body.dwlatinprayerdesign .rule-glyph {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin: 36px 0;
}
body.dwlatinprayerdesign .lp-rule::before, body.dwlatinprayerdesign .lp-rule::after,
body.dwlatinprayerdesign .rule-glyph::before,
body.dwlatinprayerdesign .rule-glyph::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--rule);
}
body.dwlatinprayerdesign .lp-rule .g,
body.dwlatinprayerdesign .rule-glyph .g {
  display: none;
}
body.dwlatinprayerdesign {
  /* L1 section header — bold heading set above ONE hairline (design .section-head). */
}
body.dwlatinprayerdesign .lp-section-head,
body.dwlatinprayerdesign .section-head {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding-bottom: 10px;
  margin: 0 0 18px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-section-head h2,
body.dwlatinprayerdesign .section-head h2 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold);
  font-size: var(--fs-heading);
  letter-spacing: -0.02em;
  margin: 0;
}
body.dwlatinprayerdesign .lp-section-head,
body.dwlatinprayerdesign .section-head {
  /* the right-aligned meta aside (design .note / production .num) */
}
body.dwlatinprayerdesign .lp-section-head .num,
body.dwlatinprayerdesign .lp-section-head .note,
body.dwlatinprayerdesign .section-head .num,
body.dwlatinprayerdesign .section-head .note {
  margin-left: auto;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  white-space: nowrap;
}
body.dwlatinprayerdesign {
  /* L2 group header — uppercase micro label above ONE hairline (design .group-head). */
}
body.dwlatinprayerdesign .group {
  margin-bottom: 34px;
}
body.dwlatinprayerdesign .group-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding-bottom: 9px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .group-head h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0;
}
body.dwlatinprayerdesign .group-head .lat {
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .group-head .count {
  margin-left: auto;
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  letter-spacing: 0.04em;
}
body.dwlatinprayerdesign {
  /* ============================================================
     MASTHEAD — the ONE page-title treatment (design .phead).
     Structure: .phead > [.eyebrow] + h1[ .lp-accent ] + [.sub]
     above a single hairline. The bespoke production page heads
     (.bible-head/.saints-head/.chhead/.book-head/…) compose this
     same look via grouped selectors in their own partials; here
     the canonical rule is named once.
     ============================================================ */
}
body.dwlatinprayerdesign .phead {
  padding-bottom: 16px;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 26px;
}
body.dwlatinprayerdesign .phead h1 {
  font-size: var(--fs-display);
  margin-bottom: 0;
}
body.dwlatinprayerdesign .phead .sub {
  font-size: var(--fs-small);
  color: var(--ink-mute);
  margin: 7px 0 0;
  line-height: 1.5;
}
body.dwlatinprayerdesign .phead .lat-label {
  margin-top: 7px;
}
body.dwlatinprayerdesign .phead.row-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
body.dwlatinprayerdesign {
  /* the ONE title accent — oxblood, sans, italic. Never serif. */
}
body.dwlatinprayerdesign .lp-accent {
  color: var(--rubric);
  font-style: italic;
  font-weight: inherit;
}
body.dwlatinprayerdesign {
  /* ============================================================
     LIST ROW — the ONE navigable row (design .row).
     ordinal(mono) + name + [gloss] + chevron, one hairline each.
     ============================================================ */
}
body.dwlatinprayerdesign .rows {
  display: flex;
  flex-direction: column;
}
body.dwlatinprayerdesign .row {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 10px 6px;
  border-bottom: 1px solid var(--rule-soft);
  color: var(--ink);
}
body.dwlatinprayerdesign .row:hover {
  background: var(--bg-2);
  text-decoration: none;
}
body.dwlatinprayerdesign .row:hover .row-name {
  color: var(--rubric);
}
body.dwlatinprayerdesign .row .ord {
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  width: 22px;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}
body.dwlatinprayerdesign .row .row-name {
  font-size: var(--fs-small);
  font-weight: 500;
  flex: 1;
  min-width: 0;
}
body.dwlatinprayerdesign .row .row-en {
  font-size: var(--fs-small);
  color: var(--ink-mute);
  flex-shrink: 0;
}
body.dwlatinprayerdesign .row .chev {
  color: var(--ink-mute);
  font-size: var(--fs-small);
  margin-left: auto;
}
body.dwlatinprayerdesign .row:hover .chev {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* FEATURE ROW — one highlighted nav row between two hairlines
     (design .feature-row). Static chev = navigate, rotated = expand. */
}
body.dwlatinprayerdesign .feature-row {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 4px;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
  margin: 18px 0 8px;
  width: 100%;
  text-align: left;
  background: none;
}
body.dwlatinprayerdesign .feature-row:hover {
  text-decoration: none;
}
body.dwlatinprayerdesign .feature-row .e {
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-mute);
  white-space: nowrap;
}
body.dwlatinprayerdesign .feature-row .nm {
  font-size: var(--fs-subhead);
  font-weight: 600;
}
body.dwlatinprayerdesign .feature-row:hover .nm {
  color: var(--rubric);
}
body.dwlatinprayerdesign .feature-row .chev {
  margin-left: auto;
  color: var(--ink-mute);
  transition: transform 0.18s ease;
}
body.dwlatinprayerdesign .feature-row:hover .chev {
  color: var(--rubric);
}
body.dwlatinprayerdesign .feature-row[aria-expanded=true] .chev {
  transform: rotate(90deg);
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* BADGE — static classifier pill, OUTLINED (design .badge).
     Same geometry as a chip; outline is the only difference. */
}
body.dwlatinprayerdesign .badge {
  display: inline-flex;
  align-items: center;
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute);
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  padding: 3px 10px;
  line-height: 1.3;
}
body.dwlatinprayerdesign .badge.key {
  color: var(--rubric);
  border-color: color-mix(in oklab, var(--rubric) 35%, var(--rule));
}
body.dwlatinprayerdesign {
  /* ============================================================
     PANEL — the ONE bordered content box (design .panel).
     One border, one radius.
     ============================================================ */
}
body.dwlatinprayerdesign .panel {
  border: 1px solid var(--rule);
  border-radius: var(--r-card);
  padding: 22px 24px;
  background: var(--bg);
  color: var(--ink);
  display: flex;
  flex-direction: column;
}
body.dwlatinprayerdesign .panel .lab {
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rubric);
  margin: 0 0 12px;
}
body.dwlatinprayerdesign .panel h3 {
  font-size: var(--fs-subhead);
  font-weight: 700;
  letter-spacing: -0.015em;
  margin: 0 0 8px;
}
body.dwlatinprayerdesign .panel > p {
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.56;
  margin: 0;
}
body.dwlatinprayerdesign .panel .xh {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
body.dwlatinprayerdesign .panel .xh .chev {
  color: var(--ink-mute);
  transition: transform 0.16s ease;
}
body.dwlatinprayerdesign a.panel:hover, body.dwlatinprayerdesign .panel.link:hover {
  border-color: var(--ink-mute);
  background: var(--bg-2);
  text-decoration: none;
}
body.dwlatinprayerdesign a.panel:hover .xh h3 {
  color: var(--rubric);
}
body.dwlatinprayerdesign a.panel:hover .xh .chev {
  color: var(--rubric);
  transform: translateX(2px);
}
body.dwlatinprayerdesign {
  /* NOTE / CALLOUT — the ONE filled aside box (design .note). */
}
body.dwlatinprayerdesign .note {
  background: var(--bg-2);
  border-radius: var(--r-card);
  padding: 12px 16px;
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.55;
}
body.dwlatinprayerdesign .note .star, body.dwlatinprayerdesign .note b {
  color: var(--rubric);
  font-weight: 700;
}
body.dwlatinprayerdesign {
  /* CTA — the ONE arrow link (design .cta; retires .go + .more-link). */
}
body.dwlatinprayerdesign .cta {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--rubric);
}
body.dwlatinprayerdesign .cta svg {
  width: 14px;
  height: 14px;
  transition: transform 0.16s ease;
}
body.dwlatinprayerdesign .cta:hover {
  text-decoration: none;
}
body.dwlatinprayerdesign .cta:hover svg {
  transform: translateX(3px);
}
body.dwlatinprayerdesign {
  /* ============================================================
     PAGER — the ONE end-of-document prev/next (design .pager).
     ============================================================ */
}
body.dwlatinprayerdesign .pager {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  margin-top: 36px;
}
body.dwlatinprayerdesign .pager a {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 18px;
  color: var(--ink);
}
body.dwlatinprayerdesign .pager a:hover {
  background: var(--bg-2);
  text-decoration: none;
}
body.dwlatinprayerdesign .pager a.next {
  text-align: right;
  align-items: flex-end;
  border-left: 1px solid var(--rule);
}
body.dwlatinprayerdesign .pager a:hover .dir {
  color: var(--rubric);
}
body.dwlatinprayerdesign .pager a.is-empty {
  pointer-events: none;
}
body.dwlatinprayerdesign .pager a.is-empty .tgt {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .pager .dir {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .pager .tgt {
  font-size: var(--fs-subhead);
  font-weight: 700;
  letter-spacing: -0.01em;
}
body.dwlatinprayerdesign {
  /* JUMP — the ONE numeric jump grid (design .jump; chapters AND verses). */
}
body.dwlatinprayerdesign .jump {
  display: flex;
  flex-wrap: wrap;
  gap: 3px;
  padding: 14px 0;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 8px;
}
body.dwlatinprayerdesign .jump a {
  font-size: var(--fs-small);
  color: var(--rubric);
  min-width: 26px;
  text-align: center;
  padding: 4px 6px;
  border-radius: var(--r-control);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
body.dwlatinprayerdesign .jump a:hover, body.dwlatinprayerdesign .jump a.is-active {
  background: var(--rubric);
  color: var(--on-key);
  text-decoration: none;
}
body.dwlatinprayerdesign {
  /* ── Store badge buttons  (.stores / .store) ────────────────────────────
     The App Store / Google Play CTA pair. ONE primitive, shared by the
     homepage hero AND the /app/ page — markup comes from a single renderer,
     dwappsplash_store_buttons(). Two-line badge: a quiet "Download on the"
     over the bold store name. Icon sized here so the renderer's SVGs stay
     attribute-free. */
}
body.dwlatinprayerdesign .stores {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
body.dwlatinprayerdesign .store {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  background: var(--ink);
  color: var(--bg);
  padding: 12px 19px;
  border-radius: var(--r-control);
  text-decoration: none;
  transition: opacity 0.15s;
  /* Re-pin the badge's own cream text/icon: the global `a:hover, a:focus`
     rule (_base.scss:30) recolours every link to --rubric, which on this
     dark --ink badge would turn the text + currentColor Apple/Play SVG
     oxblood-on-charcoal (unreadable). .store:hover/:focus (3 classes)
     outranks a:hover (2), so colour stays put; affordance is the opacity dip. */
}
body.dwlatinprayerdesign .store:hover, body.dwlatinprayerdesign .store:focus {
  text-decoration: none;
  opacity: 0.9;
  color: var(--bg);
}
body.dwlatinprayerdesign .store svg {
  width: 22px;
  height: 22px;
  flex: none;
}
body.dwlatinprayerdesign .store .t {
  display: flex;
  flex-direction: column;
  line-height: 1.05;
  text-align: left;
}
body.dwlatinprayerdesign .store .t small {
  font-size: 9px;
  letter-spacing: 0.04em;
  opacity: 0.78;
}
body.dwlatinprayerdesign .store .t b {
  font-size: 16px;
  font-weight: 600;
}

@media (max-width: 760px) {
  body.dwlatinprayerdesign {
    font-size: var(--fs-small);
    line-height: 1.5;
  }
  body.dwlatinprayerdesign .lp-rule, body.dwlatinprayerdesign .rule-glyph {
    margin: 28px 0;
  }
  body.dwlatinprayerdesign .lp-section-head h2, body.dwlatinprayerdesign .section-head h2 {
    font-size: var(--fs-body);
  }
}
/* ============================================================
   Chrome — site header, navigation, footer, theme toggle.
   Targets dwtheme's existing markup (header.site-header, .navbar*)
   so the overlay applies without theme PHP changes.
   ============================================================ */
body.dwlatinprayerdesign {
  /* LP medium content width. The home + index/card pages read clearer at a
     tighter measure than dwtheme's 1080 default — open, borderless cards spread
     too far otherwise. Overlay-scoped (remaps --max only under the LP body), so
     the shared theme's --max and the other sites are untouched; reading (--read)
     and the Mass two-column (--wide) keep their own measures. */
  --max: 960px;
  /* Heading sizes match the design — the migration scaled the ladder "one notch
     larger for ageing eyes"; DW: smaller headings, keep body comfortable. So only
     the two heading tiers drop to the design's sizes; --fs-body (18, reading) /
     --fs-subhead (17, card titles) / --fs-small / --fs-micro stay readable. */
  --fs-display: 1.875rem; /* 30 — design --fs-title (was 36) — page mastheads */
  --fs-heading: 1.375rem; /* 22 — design --fs-section (was 26) — section heads */
  /* —— Colophon / Sources page (/colophon) — plain prose list —— */
}
body.dwlatinprayerdesign .lp-colophon {
  max-width: var(--read);
  margin: 0 auto;
}
body.dwlatinprayerdesign .lp-colophon h2 {
  font-size: var(--fs-body);
  font-weight: var(--fw-semibold);
  margin: 28px 0 6px;
}
body.dwlatinprayerdesign .lp-colophon p {
  margin: 0 0 10px;
  line-height: 1.55;
}
body.dwlatinprayerdesign .lp-colophon ul {
  margin: 0 0 12px;
  padding-left: 1.2em;
}
body.dwlatinprayerdesign .lp-colophon li {
  margin: 0 0 5px;
}
body.dwlatinprayerdesign .lp-colophon a {
  color: var(--rubric);
}
body.dwlatinprayerdesign .lp-colophon a:hover {
  color: var(--rubric-2);
}
body.dwlatinprayerdesign .lp-colophon__lede {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign {
  /* —————————————————— Header —————————————————— */
}
body.dwlatinprayerdesign header.site-header {
  border-bottom: 1px solid var(--rule);
  background: var(--bg);
  padding: 0;
}
body.dwlatinprayerdesign header.site-header .container,
body.dwlatinprayerdesign header.site-header .container-fluid {
  max-width: var(--max);
  padding-left: 22px;
  padding-right: 22px;
}
body.dwlatinprayerdesign header.site-header .navbar {
  max-width: var(--max);
  margin: 0 auto;
  padding: 28px 0 22px;
  background: var(--bg) !important;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 32px;
}
body.dwlatinprayerdesign header.site-header {
  /* Brand: logo mark + Jost wordmark "LATIN PRAYER" + small mono tag. */
}
body.dwlatinprayerdesign header.site-header .navbar-brand {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
  padding: 0;
  margin: 0;
  border: none;
  white-space: nowrap;
}
body.dwlatinprayerdesign header.site-header .navbar-brand img.custom-logo {
  width: 38px;
  height: 38px;
  min-width: 38px; /* override the theme's wp-custom-css 220px floor */
  min-height: 38px;
  max-width: 38px;
  max-height: 38px;
  flex-shrink: 0;
  display: block;
  object-fit: contain;
}
body.dwlatinprayerdesign header.site-header .navbar-brand .lp-wordmark,
body.dwlatinprayerdesign header.site-header .navbar-brand .site-title {
  font-family: var(--brand);
  font-weight: 500;
  font-size: var(--fs-heading);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink);
  display: inline-flex;
  flex-direction: column;
  line-height: 1.05;
}
body.dwlatinprayerdesign header.site-header .navbar-brand .lp-wordmark small,
body.dwlatinprayerdesign header.site-header .navbar-brand .lp-wordmark .lp-wordmark__tag,
body.dwlatinprayerdesign header.site-header .navbar-brand .site-title small,
body.dwlatinprayerdesign header.site-header .navbar-brand .site-title .lp-wordmark__tag {
  display: block;
  font-family: var(--brand);
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  color: var(--ink-mute);
  margin-top: 3px;
  font-weight: 400;
  text-transform: uppercase;
}
body.dwlatinprayerdesign header.site-header {
  /* Nav items: small caps Garamond, sanguine underline on active. */
}
body.dwlatinprayerdesign header.site-header .navbar-nav {
  display: flex;
  gap: 28px;
  align-items: center;
}
body.dwlatinprayerdesign header.site-header .navbar-nav > li > a,
body.dwlatinprayerdesign header.site-header .navbar-nav a.nav-link,
body.dwlatinprayerdesign header.site-header .navbar-nav a {
  /* Cool/modern nav: sans, uppercase, kernel tracking.
     Replaces the legacy serif + font-variant: small-caps. */
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft) !important;
  border: none;
  padding: 0 0 4px !important;
  background: transparent !important;
}
body.dwlatinprayerdesign header.site-header .navbar-nav > li > a:hover,
body.dwlatinprayerdesign header.site-header .navbar-nav a.nav-link:hover,
body.dwlatinprayerdesign header.site-header .navbar-nav a:hover {
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign header.site-header .navbar-nav > li.current-menu-item > a,
body.dwlatinprayerdesign header.site-header .navbar-nav > li.current_page_item > a,
body.dwlatinprayerdesign header.site-header .navbar-nav > li.current-menu-parent > a,
body.dwlatinprayerdesign header.site-header .navbar-nav a.is-active,
body.dwlatinprayerdesign header.site-header .navbar-nav a.active {
  color: var(--ink) !important;
  border-bottom: 1px solid var(--rubric) !important;
}
body.dwlatinprayerdesign header.site-header {
  /* Bootstrap toggler → simple hamburger. */
}
body.dwlatinprayerdesign header.site-header .navbar-toggler {
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  width: 38px;
  height: 38px;
  cursor: pointer;
  padding: 0;
  display: none;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  position: relative;
}
body.dwlatinprayerdesign header.site-header .navbar-toggler .navbar-toggler-icon {
  background-image: none;
  width: 16px;
  height: 1.5px;
  background: var(--ink);
  position: relative;
}
body.dwlatinprayerdesign header.site-header .navbar-toggler .navbar-toggler-icon::before,
body.dwlatinprayerdesign header.site-header .navbar-toggler .navbar-toggler-icon::after {
  content: "";
  position: absolute;
  left: 0;
  width: 16px;
  height: 1.5px;
  background: var(--ink);
}
body.dwlatinprayerdesign header.site-header .navbar-toggler .navbar-toggler-icon::before {
  top: -5px;
}
body.dwlatinprayerdesign header.site-header .navbar-toggler .navbar-toggler-icon::after {
  top: 5px;
}
body.dwlatinprayerdesign {
  /* —————————————————— Body content —————————————————— */
  /* Lock the page content area to the same max-width as the header
     and footer (var(--max) = 1080px) so logo + nav + body content +
     footer columns share a single vertical edge. !important is needed
     because dwtheme ships per-CPT width caps via wp-custom-css
     (single-dw_saint → 550px, single-dw_prayer → 650px, is-dwbible →
     700px, …) that would otherwise narrow the body to ~half the
     header width and visually un-align the page. The reading column
     inside .lp-prose (var(--read) = 720px) handles the narrower-text
     case where prose actually wants to be tighter than 1080px.       */
}
body.dwlatinprayerdesign main.container,
body.dwlatinprayerdesign main.site-main,
body.dwlatinprayerdesign main.container.site-main {
  max-width: var(--read) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: 22px !important;
  padding-right: 22px !important;
}
body.dwlatinprayerdesign {
  /* —— KANT · page width ——
     Two width modes, one wrapper (main.container), keyed only by body class:

       • INDEX / archive pages → full width var(--max), the "directory column"
         style shared by the Bible index, Prayers, and Saints indexes
         (h3 category heading + hairline + multi-column grid of rows).
         The HOME landing is also --max (its own hero layout, not a directory).

       • EVERY single / reading page → a centered reading column at var(--read)
         (720). This is the DEFAULT (the main.container rule above), so single
         prayers, saints, Bible chapters, catechism lessons, posts and pages
         all share the same centred 720 measure. None are listed here.

     So: the indexes + home OPT IN to --max; single pages never do. To add a
     new index, give it a body class and add it to this list — never widen a
     single page. Catechism archive is NOT here — it uses --read (reading column),
     same as confession / mass. */
}
body.dwlatinprayerdesign.lp-path-home main.container,
body.dwlatinprayerdesign.lp-path-home main.site-main,
body.dwlatinprayerdesign.lp-path-home main.container.site-main,
body.dwlatinprayerdesign.lp-path-home main,
body.dwlatinprayerdesign.lp-path-home .main, body.dwlatinprayerdesign.is-dwbible-index main.container,
body.dwlatinprayerdesign.is-dwbible-index main.site-main,
body.dwlatinprayerdesign.is-dwbible-index main.container.site-main,
body.dwlatinprayerdesign.is-dwbible-index main,
body.dwlatinprayerdesign.is-dwbible-index .main, body.dwlatinprayerdesign.lp-path-prayers main.container,
body.dwlatinprayerdesign.lp-path-prayers main.site-main,
body.dwlatinprayerdesign.lp-path-prayers main.container.site-main,
body.dwlatinprayerdesign.lp-path-prayers main,
body.dwlatinprayerdesign.lp-path-prayers .main, body.dwlatinprayerdesign.post-type-archive-dw_saint main.container,
body.dwlatinprayerdesign.post-type-archive-dw_saint main.site-main,
body.dwlatinprayerdesign.post-type-archive-dw_saint main.container.site-main,
body.dwlatinprayerdesign.post-type-archive-dw_saint main,
body.dwlatinprayerdesign.post-type-archive-dw_saint .main, body.dwlatinprayerdesign.lp-path-app main.container,
body.dwlatinprayerdesign.lp-path-app main.site-main,
body.dwlatinprayerdesign.lp-path-app main.container.site-main,
body.dwlatinprayerdesign.lp-path-app main,
body.dwlatinprayerdesign.lp-path-app .main {
  max-width: var(--max) !important;
}
body.dwlatinprayerdesign {
  /* dwtheme's home + per-CPT widget-area templates wrap the widget
     <aside> in <div class="container">, which Bootstrap pads at the
     default 18px gutter. The header uses our 22px gutter, so the
     home's <aside> content lands 4px further left than the header
     logo — the persistent "body wider than header" misalignment.
     Match the gutter so logo / nav / hero copy / features / mass /
     verse-pull / footer all share the same vertical edge.

     Selector list covers every widget-wrap dwtheme ships:
       #widgets-home-wide-wrap     home page
       #widgets-page-top-wide-wrap, #widgets-page-bottom-wide-wrap   pages
       #widgets-single-top-wide-wrap, #widgets-single-bottom-wide-wrap  posts/CPTs
       #widgets-archive-wide-wrap                                   archives
     The header's own .container is not affected here — that lives
     inside header.site-header above and already has 22px padding. */
}
body.dwlatinprayerdesign #widgets-home-wide-wrap > .container,
body.dwlatinprayerdesign [id^=widgets-page-] > .container,
body.dwlatinprayerdesign [id^=widgets-single-] > .container,
body.dwlatinprayerdesign [id^=widgets-archive-] > .container,
body.dwlatinprayerdesign .home-widgets-wide-wrap > .container,
body.dwlatinprayerdesign .page-widgets-wide-wrap > .container,
body.dwlatinprayerdesign .single-widgets-wide-wrap > .container,
body.dwlatinprayerdesign .archive-widgets-wide-wrap > .container {
  padding-left: 22px !important;
  padding-right: 22px !important;
}
body.dwlatinprayerdesign {
  /* —————————————————— Footer —————————————————— */
}
body.dwlatinprayerdesign footer.site-footer,
body.dwlatinprayerdesign footer.footer,
body.dwlatinprayerdesign .site-footer,
body.dwlatinprayerdesign body > footer {
  /* No hairline rule above the footer — the footer chrome already
     carries its own border-top inside .inner above the meta strip,
     and the closing ✠ rule plus generous margin-top below the
     page content already separates the two. */
  border-top: 0;
  margin-top: 96px;
  padding: 56px 22px 40px;
  background: var(--bg);
  /* Lock the inner footer wrap to var(--max) but DON'T force a CSS
     grid here — dwtheme's footer is Bootstrap's
     <div class="container"> > <div class="row"> > <div class="col-md-4">,
     and forcing a 4-column grid on .container puts the entire row
     into 1 of 4 cells (~40% width) which crushes the columns and
     leaves giant whitespace on the right. Let Bootstrap's row/col
     handle the column layout; we only constrain max-width. */
}
body.dwlatinprayerdesign footer.site-footer .inner,
body.dwlatinprayerdesign footer.site-footer > .container,
body.dwlatinprayerdesign footer.site-footer > .container-fluid,
body.dwlatinprayerdesign footer.footer .inner,
body.dwlatinprayerdesign footer.footer > .container,
body.dwlatinprayerdesign footer.footer > .container-fluid,
body.dwlatinprayerdesign .site-footer .inner,
body.dwlatinprayerdesign .site-footer > .container,
body.dwlatinprayerdesign .site-footer > .container-fluid,
body.dwlatinprayerdesign body > footer .inner,
body.dwlatinprayerdesign body > footer > .container,
body.dwlatinprayerdesign body > footer > .container-fluid {
  max-width: var(--max);
  margin: 0 auto;
}
body.dwlatinprayerdesign footer.site-footer,
body.dwlatinprayerdesign footer.footer,
body.dwlatinprayerdesign .site-footer,
body.dwlatinprayerdesign body > footer {
  /* Custom .inner (no Bootstrap row inside) → use the design's grid */
}
body.dwlatinprayerdesign footer.site-footer .inner:not(:has(> .row)),
body.dwlatinprayerdesign footer.footer .inner:not(:has(> .row)),
body.dwlatinprayerdesign .site-footer .inner:not(:has(> .row)),
body.dwlatinprayerdesign body > footer .inner:not(:has(> .row)) {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 40px;
}
body.dwlatinprayerdesign footer.site-footer h2, body.dwlatinprayerdesign footer.site-footer h3, body.dwlatinprayerdesign footer.site-footer h4, body.dwlatinprayerdesign footer.site-footer h5,
body.dwlatinprayerdesign footer.site-footer .widget-title,
body.dwlatinprayerdesign footer.site-footer .foot-h,
body.dwlatinprayerdesign footer.footer h2,
body.dwlatinprayerdesign footer.footer h3,
body.dwlatinprayerdesign footer.footer h4,
body.dwlatinprayerdesign footer.footer h5,
body.dwlatinprayerdesign footer.footer .widget-title,
body.dwlatinprayerdesign footer.footer .foot-h,
body.dwlatinprayerdesign .site-footer h2,
body.dwlatinprayerdesign .site-footer h3,
body.dwlatinprayerdesign .site-footer h4,
body.dwlatinprayerdesign .site-footer h5,
body.dwlatinprayerdesign .site-footer .widget-title,
body.dwlatinprayerdesign .site-footer .foot-h,
body.dwlatinprayerdesign body > footer h2,
body.dwlatinprayerdesign body > footer h3,
body.dwlatinprayerdesign body > footer h4,
body.dwlatinprayerdesign body > footer h5,
body.dwlatinprayerdesign body > footer .widget-title,
body.dwlatinprayerdesign body > footer .foot-h {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 14px;
  font-weight: 500;
}
body.dwlatinprayerdesign footer.site-footer ul,
body.dwlatinprayerdesign footer.footer ul,
body.dwlatinprayerdesign .site-footer ul,
body.dwlatinprayerdesign body > footer ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
body.dwlatinprayerdesign footer.site-footer ul li,
body.dwlatinprayerdesign footer.footer ul li,
body.dwlatinprayerdesign .site-footer ul li,
body.dwlatinprayerdesign body > footer ul li {
  margin-bottom: 6px;
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign footer.site-footer ul li a,
body.dwlatinprayerdesign footer.footer ul li a,
body.dwlatinprayerdesign .site-footer ul li a,
body.dwlatinprayerdesign body > footer ul li a {
  color: var(--ink-soft);
  border-bottom: none;
}
body.dwlatinprayerdesign footer.site-footer ul li a:hover,
body.dwlatinprayerdesign footer.footer ul li a:hover,
body.dwlatinprayerdesign .site-footer ul li a:hover,
body.dwlatinprayerdesign body > footer ul li a:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign footer.site-footer p,
body.dwlatinprayerdesign footer.footer p,
body.dwlatinprayerdesign .site-footer p,
body.dwlatinprayerdesign body > footer p {
  margin: 0 0 10px;
  color: var(--ink-soft);
  font-size: var(--fs-body);
  max-width: 36ch;
}
body.dwlatinprayerdesign {
  /* Bottom strip with theme toggle + meta — injected by the plugin via
     dwlatinprayerdesign_inject_footer_meta() because dwtheme's footer
     doesn't have a meta row out of the box. */
}
body.dwlatinprayerdesign .lp-foot-meta {
  max-width: var(--max);
  margin: 32px auto 0;
  padding: 20px 22px 0;
  border-top: 1px solid var(--rule-soft);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-foot-meta a {
  color: var(--ink-mute);
  border: none;
}
body.dwlatinprayerdesign .lp-foot-meta a:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* —————————————————— Theme toggle ——————————————————
     Two button groups share the same wiring (dwlp_mode localStorage,
     lp-mode-toggle click handler in dwlatinprayerdesign.php):
       .lp-mode-toggle    legacy 3-button toggle in the nav (parchment/sepia/night)
       .lp-theme-toggle   new 2-button toggle in the footer (parchment/night)
     Both use [data-mode] on the buttons. */
  /* The rail foot's appearance control also carries `.lp-mode-rail`, which gives
     it the segmented-control look shared with the language picker — so this
     legacy/compact toggle styling must NOT apply there (it would leak the 2px
     inset + mono caps and break the match). The mobile-menu instance keeps it. */
}
body.dwlatinprayerdesign .lp-theme-toggle,
body.dwlatinprayerdesign .lp-mode-toggle:not(.lp-mode-rail) {
  display: inline-flex;
  border: 1px solid var(--rule);
  background: var(--bg);
  padding: 2px;
  gap: 0;
}
body.dwlatinprayerdesign .lp-theme-toggle button,
body.dwlatinprayerdesign .lp-mode-toggle:not(.lp-mode-rail) button {
  appearance: none;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 6px 12px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background 0.15s, color 0.15s;
}
body.dwlatinprayerdesign .lp-theme-toggle button:hover,
body.dwlatinprayerdesign .lp-mode-toggle:not(.lp-mode-rail) button:hover {
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-theme-toggle button[aria-pressed=true],
body.dwlatinprayerdesign .lp-theme-toggle button.is-active,
body.dwlatinprayerdesign .lp-mode-toggle:not(.lp-mode-rail) button.is-active {
  background: var(--ink);
  color: var(--bg);
}
body.dwlatinprayerdesign {
  /* Default reading width is the tighter --read measure; the wide exceptions
     above opt specific pages back up to --max. */
}
body.dwlatinprayerdesign main,
body.dwlatinprayerdesign .main {
  max-width: var(--read);
  margin-left: auto;
  margin-right: auto;
}
body.dwlatinprayerdesign {
  /* Track / prayer reader: the tighter --read measure so the whole column
     (title · progress · interlinear · next · share) sits at the design width,
     not just the inner prayer card. The id is shared by both the track and the
     standalone-prayer readers. */
}
body.dwlatinprayerdesign #single-prayer-track-content {
  max-width: var(--read);
  margin-left: auto;
  margin-right: auto;
}

/* —————————————————— Mobile —————————————————— */
@media (max-width: 760px) {
  body.dwlatinprayerdesign {
    /* Site header on mobile: brand flush-left, hamburger flush-right.
       Drop the 22px container gutter and the 18px navbar padding from
       desktop — together they pushed the brand ~50px from the screen
       edge, leaving a centred-looking cluster. The 12px gutter here
       matches the lesson body's mobile padding so the header lines up
       optically with the content below. */
  }
  body.dwlatinprayerdesign header.site-header .container,
  body.dwlatinprayerdesign header.site-header .container-fluid {
    padding-left: 12px;
    padding-right: 12px;
  }
  body.dwlatinprayerdesign header.site-header .navbar {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 0;
    flex-wrap: nowrap;
  }
  body.dwlatinprayerdesign header.site-header .navbar-brand {
    gap: 10px;
  }
  body.dwlatinprayerdesign header.site-header .navbar-brand .lp-wordmark,
  body.dwlatinprayerdesign header.site-header .navbar-brand .site-title {
    font-size: var(--fs-body);
    letter-spacing: 0.12em;
  }
  body.dwlatinprayerdesign header.site-header .navbar-brand img.custom-logo {
    width: 28px;
    height: 28px;
  }
  body.dwlatinprayerdesign header.site-header .navbar-brand small,
  body.dwlatinprayerdesign header.site-header .navbar-brand .lp-wordmark__tag {
    display: none;
  }
  body.dwlatinprayerdesign header.site-header .navbar-toggler {
    display: inline-flex;
  }
  body.dwlatinprayerdesign header.site-header .navbar-collapse {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    background: var(--bg);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    padding: 4px 18px 12px;
    z-index: 50;
  }
  body.dwlatinprayerdesign header.site-header .navbar-nav {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
  }
  body.dwlatinprayerdesign header.site-header .navbar-nav > li > a,
  body.dwlatinprayerdesign header.site-header .navbar-nav a {
    font-size: var(--fs-body);
    padding: 14px 0 !important;
    border-bottom: 1px solid var(--rule-soft);
  }
  body.dwlatinprayerdesign header.site-header .navbar-nav > li:last-child > a {
    border-bottom: none;
  }
  body.dwlatinprayerdesign footer.site-footer,
  body.dwlatinprayerdesign footer.footer,
  body.dwlatinprayerdesign .site-footer,
  body.dwlatinprayerdesign body > footer {
    padding: 40px 18px 24px;
    margin-top: 64px;
  }
  body.dwlatinprayerdesign footer.site-footer .inner,
  body.dwlatinprayerdesign footer.footer .inner,
  body.dwlatinprayerdesign .site-footer .inner,
  body.dwlatinprayerdesign body > footer .inner,
  body.dwlatinprayerdesign footer.site-footer > .container,
  body.dwlatinprayerdesign footer.site-footer > .container-fluid {
    grid-template-columns: 1fr 1fr;
    gap: 28px 24px;
  }
  body.dwlatinprayerdesign .lp-foot-meta {
    flex-direction: column;
    gap: 14px;
    align-items: flex-start;
    padding: 18px 18px 0;
  }
  body.dwlatinprayerdesign .lp-theme-toggle {
    width: 100%;
  }
  body.dwlatinprayerdesign .lp-theme-toggle button {
    flex: 1;
    justify-content: center;
    padding: 8px 10px;
  }
}
@media (max-width: 420px) {
  body.dwlatinprayerdesign footer.site-footer .inner,
  body.dwlatinprayerdesign footer.footer .inner,
  body.dwlatinprayerdesign .site-footer .inner,
  body.dwlatinprayerdesign body > footer .inner,
  body.dwlatinprayerdesign footer.site-footer > .container {
    grid-template-columns: 1fr;
  }
}
/* ============================================================
   Mobile menu (dwtheme `.dw-menu`) — Latin Prayer overlay.

   dwtheme's generic sheet/drawer menu reads the base tokens directly
   (--ink / --ink-mute / --rule / --bg-2 / --rubric / --rubric-tint), which
   are theme-aware (parchment · night). No contract remapping is needed —
   this overlay only adds LP-specific brand + appearance-row chrome.
   ============================================================ */
/* —— Minimal active marking (DW menu doctrine) ——
   The current section is marked by WEIGHT + oxblood only — no soft-fill box, no
   accent bar. Same rule as the shell rail: a menu answers "where am I" by bolding
   the current row, not by drawing a box around it. (Mouseover is antiquated, so
   the row also carries no hover box — dwtheme's navrow hover is colour-only.) */
.dw-navrow.is-active {
  background: none;
}
.dw-navrow.is-active::before {
  display: none;
}
.dw-navrow.is-active { /* drop the accent bar */ }
.dw-navrow.is-active .dw-navrow__title {
  color: var(--rubric);
  font-weight: var(--fw-bold);
}
.dw-navrow.is-active .dw-navrow__ico {
  color: var(--rubric);
}

/* Brand: the diamond logo (filtered in via the custom-logo pipeline) sits in
   the bar; brand.js appends the wordmark beside it, mirroring the header. */
.dw-menu__brand .lp-wordmark {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-body);
  letter-spacing: 0.02em;
  color: var(--ink);
}
.dw-menu__brand .lp-wordmark .lp-wordmark__tag {
  display: none;
}
.dw-menu__brand .lp-wordmark { /* tagline is header-only */ }

.dw-menu__brand img.custom-logo {
  width: 28px;
  height: 28px;
}

/* Footer appearance row: "Appearance" label + the shared mode toggle
   (parchment · night · auto), reusing .lp-mode-toggle's wiring + styling. */
.dw-menu__appearance {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.dw-menu__appearance-label {
  font-size: var(--fs-small);
  color: var(--ink-mute);
}

/* Keep this instance compact (the page-footer instance is full-width). */
.dw-menu__foot .lp-mode-toggle {
  width: auto;
  flex-shrink: 0;
}

/* ============================================================
   Tool-shell rail — LP additions over the shared dwtheme rail.
   The rail chrome (width, position, nav, drawer) lives in dwtheme;
   this adds only the LP-specific pieces the Claude-Design rail
   carries: the stacked "LATIN / PRAYER" wordmark beside the mark,
   and the global LANGUAGE + APPEARANCE foot controls. All values
   compose from the shared token kernel.
   ============================================================ */
body.dwlatinprayerdesign {
  /* —— Minimal rail (DW doctrine) ——
     1. Square corners — round only buttons/pills, never nav rows.
     2. The Mass/catechism subnav current is marked by WEIGHT only — no moving
        tinted box; the menu reads the same as every other menu ("just make the
        current bold and that's it").
     3. Mouseover is antiquated (mobile-first) — no hover background box. */
}
body.dwlatinprayerdesign .dw-shell-nav__list a,
body.dwlatinprayerdesign .dw-shell-subnav a {
  border-radius: 0;
}
body.dwlatinprayerdesign .dw-shell-nav__list a:hover,
body.dwlatinprayerdesign .dw-shell-subnav a:hover {
  background: none;
}
body.dwlatinprayerdesign {
  /* The whole active tree-path is marked by WEIGHT + oxblood only — no tinted
     box, no accent bar. Covers the active top-level item, its ancestors, AND the
     current subnav part, so the path reads uniformly. (DW: "just bold for whole
     tree-path".) */
}
body.dwlatinprayerdesign .dw-shell-nav__list .current-menu-item > a,
body.dwlatinprayerdesign .dw-shell-nav__list .current_page_item > a,
body.dwlatinprayerdesign .dw-shell-nav__list .current-menu-parent > a,
body.dwlatinprayerdesign .dw-shell-nav__list .current-menu-ancestor > a,
body.dwlatinprayerdesign .dw-shell-subnav a.is-current,
body.dwlatinprayerdesign .dw-shell-subnav a.is-ancestor {
  background: none;
  box-shadow: none;
  color: var(--rubric);
  font-weight: var(--fw-bold);
}
body.dwlatinprayerdesign {
  /* —— Brand: diamond mark + stacked caps wordmark —— */
}
body.dwlatinprayerdesign .dw-shell-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 0;
}
body.dwlatinprayerdesign .dw-shell-logo:hover {
  border-bottom: 0;
}
body.dwlatinprayerdesign .lp-shell-wordmark {
  display: flex;
  flex-direction: column;
  line-height: 1.04;
}
body.dwlatinprayerdesign .lp-shell-wordmark b {
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-small);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--ink);
}
body.dwlatinprayerdesign {
  /* —— Foot controls: one Language + one Appearance segmented control ——
     Foot DOM order is already source → language → appearance → copyright, so no
     flex `order` is needed. (The secondary Support/Privacy links are NOT in the
     foot — they render right under the primary nav via `dwtheme_shell_after_nav`,
     above this bottom-pinned foot.) */
}
body.dwlatinprayerdesign .dw-shell-foot {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
body.dwlatinprayerdesign .lp-rail-ctl__lab {
  display: block;
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 2px 5px;
}
body.dwlatinprayerdesign {
  /* Provenance line — quiet grey "SOURCE · <edition>" above the controls,
     linking to /colophon. Shown only on pages with a cited source. */
}
body.dwlatinprayerdesign .lp-rail-source {
  margin: 0 2px;
  line-height: 1.4;
}
body.dwlatinprayerdesign .lp-rail-source__lab {
  display: block;
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 3px;
}
body.dwlatinprayerdesign .lp-rail-source__val {
  font-size: var(--fs-micro);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-rail-source__val:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Shared segmented-control look for both rail toggles. */
}
body.dwlatinprayerdesign .lp-lang-rail,
body.dwlatinprayerdesign .lp-mode-rail {
  display: flex;
  width: 100%;
  border: 1px solid var(--rule);
  border-radius: 8px;
  overflow: hidden;
  background: var(--bg);
}
body.dwlatinprayerdesign .lp-lang-rail button,
body.dwlatinprayerdesign .lp-mode-rail button {
  appearance: none;
  background: transparent;
  border: 0;
  border-left: 1px solid var(--rule);
  cursor: pointer;
  flex: 1;
  min-width: 0;
  padding: 5px 0;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--ink-mute);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  line-height: 1.4;
}
body.dwlatinprayerdesign .lp-lang-rail button:first-child,
body.dwlatinprayerdesign .lp-mode-rail button:first-child {
  border-left: 0;
}
body.dwlatinprayerdesign .lp-lang-rail button:hover,
body.dwlatinprayerdesign .lp-mode-rail button:hover {
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-lang-rail,
body.dwlatinprayerdesign .lp-mode-rail {
  /* Active: oxblood fill. Language uses aria-pressed (our handler);
     Appearance uses .is-active (the shared mode-toggle handler). */
}
body.dwlatinprayerdesign .lp-lang-rail button[aria-pressed=true],
body.dwlatinprayerdesign .lp-lang-rail button.is-active,
body.dwlatinprayerdesign .lp-mode-rail button[aria-pressed=true],
body.dwlatinprayerdesign .lp-mode-rail button.is-active {
  background: var(--rubric);
  color: var(--on-key);
}
body.dwlatinprayerdesign {
  /* Secondary nav links — render directly below the primary menu (via
     `dwtheme_shell_after_nav`), reading as quiet members of it: the SAME size +
     left alignment (12px) as the .dw-shell-nav__list rows, but in the secondary
     muted colour. "Support" on one row, "Privacy: web · app" on the next; links
     warm to oxblood on hover. */
}
body.dwlatinprayerdesign .lp-rail-legal {
  display: flex;
  flex-direction: column;
}
body.dwlatinprayerdesign {
  /* Pixel-identical to a .dw-shell-nav__list row (same 9px/12px padding, font,
     line-height) so the vertical rhythm is continuous with the primary nav —
     only the colour differs. No margin on the block: the first row sits exactly
     one nav-row-height below "About". */
}
body.dwlatinprayerdesign .lp-rail-legal__row {
  margin: 0;
  padding: 9px 12px;
  font-size: var(--fs-small);
  line-height: 1.3;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-rail-legal__row a {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-rail-legal__row a:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign .lp-rail-legal__sep {
  color: var(--ink-mute);
  opacity: 0.55;
}
body.dwlatinprayerdesign .dw-shell-foot__copy {
  margin-top: 2px;
  font-size: var(--fs-micro);
  color: var(--ink-mute);
}

/* ============================================================
   Atomic utility classes — lp-* vocabulary from the design bundle.
   Use from widgets (HTML widget, Blurb, etc.) to get coherent look.
   ============================================================ */
body.dwlatinprayerdesign {
  /* ── Measure ──────────────────────────────────────────────
     The wide-desktop measure as a reusable rule. Any surface that needs more
     than the single 720px reading column — a two-column reading-plus-gloss,
     parallel texts, a data-dense table — opts in with `.lp-wide` instead of
     inventing a per-page max-width. Centres itself; composes the --wide token
     (see _base.scss). Narrow the measure back to --read at the component level
     when a layout should reflow to one column. */
}
body.dwlatinprayerdesign .lp-wide {
  max-width: var(--wide);
  margin-inline: auto;
}
body.dwlatinprayerdesign {
  /* ── Type primitives ──────────────────────────────────── */
}
body.dwlatinprayerdesign .lp-display {
  font-family: var(--font-sans);
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.08;
}
body.dwlatinprayerdesign .lp-serif {
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .lp-sans {
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .lp-mono {
  font-family: var(--font-mono);
}
body.dwlatinprayerdesign .lp-brand {
  font-family: var(--font-sans);
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
body.dwlatinprayerdesign {
  /* Eyebrow + the .lp-btn base/hover/active are now canonical UNSCOPED
     primitives in dwtheme (assets/css/primitives.css). The overlay relies
     on those; only the LP-specific .lp-btn variants (--primary/--ghost/
     --accent) remain here, composed from the base tokens. */
}
body.dwlatinprayerdesign .lp-btn--primary {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}
body.dwlatinprayerdesign .lp-btn--primary:hover {
  background: var(--rubric);
  border-color: var(--rubric);
  color: var(--on-key);
}
body.dwlatinprayerdesign .lp-btn--ghost {
  background: transparent;
  color: var(--ink);
  border-color: var(--rule);
}
body.dwlatinprayerdesign .lp-btn--ghost:hover {
  color: var(--rubric);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .lp-btn--accent {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .lp-btn--accent:hover {
  background: var(--rubric-2);
  border-color: var(--rubric-2);
  color: var(--on-key);
}
body.dwlatinprayerdesign {
  /* ── Tag / chip ───────────────────────────────────────── */
}
body.dwlatinprayerdesign .lp-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 8px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--rubric);
  background: var(--rubric-tint);
  border-radius: 0;
}
body.dwlatinprayerdesign {
  /* ── Explainer note — the ONE format for study-edition rubric/explanation
     asides (Mass parts, Confession rite steps, …). A quiet --bg-2 box, no
     border, ink-mute body-small: clearly set off from the sacred text it
     explains (so the editorial note is never mistaken for the liturgy). ── */
}
body.dwlatinprayerdesign .lp-explainer {
  margin: 14px 0 2px;
  padding: 12px 14px;
  background: var(--bg-2);
  color: var(--ink-mute);
  font-size: var(--fs-small);
  line-height: 1.55;
}
body.dwlatinprayerdesign .lp-explainer p {
  margin: 0;
}
body.dwlatinprayerdesign .lp-explainer {
  /* a referenced text (e.g. "Psalm 42") reads as a quiet rubric link */
}
body.dwlatinprayerdesign .lp-explainer a {
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .lp-explainer a:hover {
  text-decoration: underline;
}
body.dwlatinprayerdesign {
  /* .lp-card / .lp-card--hover are now canonical UNSCOPED primitives in
     dwtheme (assets/css/primitives.css); the overlay relies on those. */
  /* ── Ornament — horizontal rule with central mark ─────── */
}
body.dwlatinprayerdesign .lp-ornament {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: var(--rubric);
  font-size: var(--fs-body);
  line-height: 1;
  margin: 2em 0;
}
body.dwlatinprayerdesign .lp-ornament::before,
body.dwlatinprayerdesign .lp-ornament::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--rule);
  max-width: 120px;
}
body.dwlatinprayerdesign {
  /* ── Brand chip — oxblood background + cream mark ─────── */
}
body.dwlatinprayerdesign .lp-brand-chip {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 10px 20px 10px 14px;
  background: var(--rubric-2);
  color: var(--cream);
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-small);
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
body.dwlatinprayerdesign .lp-brand-chip img {
  width: 26px;
  height: 26px;
  filter: brightness(0) invert(1) sepia(0.1);
}
body.dwlatinprayerdesign {
  /* ── Scroll helper ────────────────────────────────────── */
}
body.dwlatinprayerdesign .lp-hide-scroll::-webkit-scrollbar {
  display: none;
}
body.dwlatinprayerdesign .lp-hide-scroll {
  scrollbar-width: none;
}
body.dwlatinprayerdesign {
  /* ── Rule dividers ────────────────────────────────────── */
}
body.dwlatinprayerdesign .lp-rule {
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-rule-top {
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-rule-soft {
  border-bottom: 1px solid var(--rule-soft);
}
body.dwlatinprayerdesign {
  /* ── Widget-title kernel sweep ─────────────────────────── *
     WordPress widget headings (`h2.widget-title` etc.) are used here
     as eyebrows, not as real headings — small label above the widget
     body. Per the DW Design System, an eyebrow's rule is invariant
     across surfaces: sans, 0.7rem, 600, 0.16em up-tracking, muted.
     This single override defeats the ~5 legacy per-widget rules
     scattered through _prayers / _home / _bible that all redeclared
     the same mono-red-uppercase pattern. Until those legacy rules
     are removed, !important is the only way to win the cascade. */
}
body.dwlatinprayerdesign .widget-title:not(.lp-display-title) {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-micro) !important;
  font-weight: 600 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: var(--ink-mute) !important;
}

/* ============================================================
   Home page — Phase 2
   Ports Home.html (claude.ai/design 2026-04-28) into the WP overlay:
     - 3-device hero  (.lp-hero / .lp-devices / .lp-device)
     - Glyph rules    (.lp-rule-glyph)
     - Section heads  (.lp-section-head)
     - Features grid  (.lp-features / .lp-feat)
     - Mass overlay   on .dwlectionary-today-both (existing dwlectionary widget)
     - Verse pull     (.lp-verse-pull)
   All scoped under body.dwlatinprayerdesign so the overlay only paints when
   the design plugin is enabled.
   ============================================================ */
body.dwlatinprayerdesign {
  /* Home landing: more generous side breathing room than the default 22px
     gutter. Targets the same home wrap rule that sets 22px !important (in
     _chrome.scss) but with the extra lp-path-home class so it wins. */
}
body.dwlatinprayerdesign.lp-path-home #widgets-home-wide-wrap > .container, body.dwlatinprayerdesign.lp-path-home .home-widgets-wide-wrap > .container {
  padding-left: clamp(22px, 5vw, 64px) !important;
  padding-right: clamp(22px, 5vw, 64px) !important;
}
body.dwlatinprayerdesign {
  /* ── Section head ─────────────────────────────────────── */
}
body.dwlatinprayerdesign .lp-section-head {
  /* Canonical .section-head treatment: ruled hairline under the head. */
  display: flex;
  align-items: baseline;
  gap: 18px;
  margin: 0 0 18px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-section-head h2 {
  /* Sans section head, on the --fs-heading (--fs-section role) step. */
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-heading);
  letter-spacing: -0.01em;
  margin: 0;
}
body.dwlatinprayerdesign .lp-section-head .lp-num {
  /* Kernel eyebrow — sans, 0.16em up, 600, muted. */
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-section-head .lp-aside {
  margin-left: auto;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign {
  /* ── Section divider — ornament retired (tool direction): plain hairline ── */
}
body.dwlatinprayerdesign .lp-rule-glyph {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin: 22px 0;
}
body.dwlatinprayerdesign .lp-rule-glyph::before,
body.dwlatinprayerdesign .lp-rule-glyph::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--rule);
}
body.dwlatinprayerdesign .lp-rule-glyph .g {
  display: none;
}
body.dwlatinprayerdesign {
  /* ── Hero ─────────────────────────────────────────────── */
  /* Bottom padding kept tight: on the homepage the "What it offers"
     explanations sit directly below as ONE section (the rule-glyph
     divider is suppressed there), so the hero hands off to the features
     with a small gap rather than a section-sized break. */
}
body.dwlatinprayerdesign .lp-hero {
  padding: 8px 0 0;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 64px;
  /* The phone is "cut off" flat where it meets the hero's bottom rule — the
     device bottom-aligns to this hairline, which does the cutting (no shadow,
     no rounded base). Copy stays centred against it (see .lp-hero__copy). */
  align-items: end;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 44px;
}
body.dwlatinprayerdesign {
  /* Copy column stays vertically centred against the bottom-aligned phone,
     with breathing room above the hero rule. */
}
body.dwlatinprayerdesign .lp-hero__copy {
  align-self: center;
  padding-bottom: 28px;
}
body.dwlatinprayerdesign .lp-hero__copy .lp-eyebrow,
body.dwlatinprayerdesign .lp-hero__copy > .eyebrow {
  display: block;
  margin-bottom: 22px;
  /* DW Design System eyebrow kernel — same as everywhere else. */
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
}
body.dwlatinprayerdesign .lp-hero h1 {
  font-family: var(--display);
  /* The LANDING hero opts louder than the on-scale display titles (Claude-Design
     lp/Home.html): the one sanctioned --fs-hero (≤44px) + --fw-black (800), so the
     brand statement carries the page. Every IN-PAGE title stays --fs-display/700. */
  font-weight: var(--fw-black);
  font-size: var(--fs-hero);
  line-height: 0.98;
  letter-spacing: -0.028em;
  margin: 0 0 28px;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-hero h1 em {
  /* The brand word stays bold (italic + oxblood carry the accent, not lightness) —
     one step under the hero, per the design. */
  font-style: italic;
  color: var(--rubric);
  font-weight: var(--fw-bold);
}
body.dwlatinprayerdesign .lp-hero__lede {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.55;
  color: var(--ink-soft);
  max-width: 44ch;
  margin: 0 0 36px;
  text-wrap: pretty;
}
body.dwlatinprayerdesign .lp-hero__ctas {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
}
body.dwlatinprayerdesign {
  /* "What it offers" rail — condensed homepage replacement for the full
     8-tile features grid. An eyebrow-style label over a single ·-separated
     line of the eight category nouns, sharing the hero copy column so the
     storefront answer ("what you get") lands beside the phones in the first
     screenful. The full grid (with descriptions) still renders on About;
     it is hidden on the homepage below. */
}
body.dwlatinprayerdesign .lp-hero__rail {
  margin-top: 38px;
  padding-top: 26px;
  border-top: 1px solid var(--rule);
  max-width: 44ch;
}
body.dwlatinprayerdesign .lp-hero__rail-label {
  display: block;
  margin-bottom: 10px;
  /* Same eyebrow kernel as .lp-eyebrow — one global rule, reused. */
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-hero__rail-list {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--ink-soft);
}
body.dwlatinprayerdesign {
  /* App Store button — two shapes:
     - Custom-built: ⌘ icon + "Download on the / App Store" text (legacy
       LP_Hero_Widget; same look as Apple's dark badge, our own type)
     - Real Apple SVG badge: <a class="lp-appstore"><img></a> wrapping
       Apple's official "Download on the App Store" SVG. The image
       carries its own padding/rounding; the wrapping <a> is just a
       link with no chrome of its own.
     dw_app_splash's lp_hero_3device template emits the SVG-image form.
  */
}
body.dwlatinprayerdesign .lp-appstore {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 12px 22px 12px 18px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--bg);
  border-radius: 0;
  text-decoration: none;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .lp-appstore:hover {
  background: var(--rubric);
  border-color: var(--rubric);
  color: var(--bg);
}
body.dwlatinprayerdesign {
  /* SVG-image form: drop the dark fill + border so Apple's badge isn't
     boxed inside another box. */
}
body.dwlatinprayerdesign .lp-appstore:has(> img),
body.dwlatinprayerdesign .lp-appstore--badge {
  background: transparent;
  border: 0;
  padding: 0;
  border-radius: 0;
}
body.dwlatinprayerdesign .lp-appstore:has(> img):hover,
body.dwlatinprayerdesign .lp-appstore--badge:hover {
  background: transparent;
  border: 0;
  opacity: 0.85;
}
body.dwlatinprayerdesign .lp-appstore img {
  display: block;
  height: 44px; /* Apple's recommended badge height */
  width: auto;
}
body.dwlatinprayerdesign .lp-appstore .as-icon {
  font-size: var(--fs-heading);
  line-height: 1;
}
body.dwlatinprayerdesign .lp-appstore .as-text {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
}
body.dwlatinprayerdesign .lp-appstore .as-text small {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: 0.7;
  margin-bottom: 2px;
}
body.dwlatinprayerdesign .lp-appstore .as-text span {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  letter-spacing: 0.01em;
}
body.dwlatinprayerdesign {
  /* ── Hero device stack ────────────────────────────────── */
  /* Single upright phone. Deliberately the simplest possible construction:
     normal flow, no rotation, no position:absolute, no fixed height — so the
     frame can never report a wrong bounding box, poke outside its grid cell,
     or be clipped by an ancestor's overflow (the failure modes the old
     three-rotated-phones stack kept hitting). The frame is a fluid box capped
     at a sane max; the screenshots inside fade through it via
     lp-hero-rotator.js, so one phone still teases every screen. */
}
body.dwlatinprayerdesign .lp-devices {
  display: flex;
  justify-content: center;
  align-self: end; /* phone sits on the hero's bottom rule */
}
body.dwlatinprayerdesign .lp-device {
  position: relative; /* containing block for the stacked shots */
  width: 100%;
  max-width: 248px;
  /* Cut-off framing: a fixed height shorter than a full phone. The shots are
     object-position:top, so the top of the screen shows and the hero's bottom
     rule crops the base flat — the phone reads as rising from the line. */
  height: 432px;
  /* The screenshots are transparent-margin iPhone PNGs — let the PAGE bg show
     through their transparent corners/edges in every mode (was hardcoded #fff,
     which bled a white box into night/sepia layouts). */
  background: transparent;
  overflow: hidden; /* clips the screenshot to the frame, not the page */
  font-family: var(--serif);
}
body.dwlatinprayerdesign {
  /* Real-screenshot variant: dw_app_splash with template=lp_hero_3device
     stacks ALL uploaded screenshots inside each .lp-device frame as
     <img class="lp-device__shot"> siblings. One has --active at a time,
     others fade to opacity 0. lp-hero-rotator.js advances the active
     one on a timer (desktop only). On mobile or with reduced-motion
     preference, only the initial active image is visible — others
     stay at opacity 0 and never animate. */
}
body.dwlatinprayerdesign .lp-device__shot {
  display: block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  border-radius: 0;
  opacity: 0;
  transition: opacity 0.6s ease;
  pointer-events: none;
  /* Use the browser's high-quality bilinear/bicubic scaling rather
     than nearest-neighbour. Default in most browsers but stating it
     explicitly insulates against any inherited
     image-rendering: pixelated / crisp-edges from a parent stylesheet.
     Skip -webkit-optimize-contrast — in rotated contexts it produces
     sharper-but-jagged edges. */
  image-rendering: auto;
  image-rendering: high-quality;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
body.dwlatinprayerdesign .lp-device__shot--active {
  opacity: 1;
  z-index: 1;
}
body.dwlatinprayerdesign {
  /* Reduced-motion: hold the initial active image, no fade, no rotation. */
}
@media (prefers-reduced-motion: reduce) {
  body.dwlatinprayerdesign .lp-device__shot {
    transition: none;
  }
}
body.dwlatinprayerdesign .lp-device .status {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 22px 6px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  letter-spacing: 0.06em;
}
body.dwlatinprayerdesign .lp-device .status .dots {
  letter-spacing: 0.1em;
}
body.dwlatinprayerdesign .lp-device .scr {
  padding: 18px 22px 24px;
  height: 100%;
  display: flex;
  flex-direction: column;
}
body.dwlatinprayerdesign .lp-device .scr .crumb {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rubric);
  margin-bottom: 10px;
}
body.dwlatinprayerdesign .lp-device .scr h3 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-heading);
  margin: 0 0 6px;
  line-height: 1.05;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-device .scr .sub {
  font-family: var(--serif);
  font-style: italic;
  color: var(--ink-mute);
  font-size: var(--fs-small);
  margin-bottom: 16px;
}
body.dwlatinprayerdesign .lp-device .verse {
  font-size: var(--fs-small);
  line-height: 1.45;
  margin-bottom: 14px;
}
body.dwlatinprayerdesign .lp-device .verse .lt {
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-device .verse .en {
  color: var(--ink-mute);
  font-style: italic;
  display: block;
  margin-top: 2px;
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign {
  /* Dark device */
}
body.dwlatinprayerdesign .lp-device--dark {
  background: #15110d;
  border-color: oklch(25% 0.01 60deg);
}
body.dwlatinprayerdesign .lp-device--dark .status {
  color: oklch(60% 0.01 60deg);
}
body.dwlatinprayerdesign .lp-device--dark .scr h3 {
  color: oklch(95% 0.012 80deg);
}
body.dwlatinprayerdesign .lp-device--dark .scr .crumb {
  color: oklch(66% 0.11 28deg);
}
body.dwlatinprayerdesign .lp-device--dark .scr .sub {
  color: oklch(55% 0.01 60deg);
}
body.dwlatinprayerdesign .lp-device--dark .verse .lt {
  color: oklch(92% 0.012 80deg);
}
body.dwlatinprayerdesign .lp-device--dark .verse .en {
  color: oklch(55% 0.01 60deg);
}
body.dwlatinprayerdesign {
  /* Rosary bead row */
}
body.dwlatinprayerdesign .lp-device .rosary-row {
  margin-top: auto;
  padding-top: 14px;
  display: flex;
  gap: 5px;
  justify-content: center;
}
body.dwlatinprayerdesign .lp-device .rosary-row span {
  width: 7px;
  height: 7px;
  border-radius: 0;
  background: var(--rubric);
}
body.dwlatinprayerdesign .lp-device .rosary-row span.now {
  width: 8px;
  height: 8px;
  background: transparent;
  border: 1.5px solid var(--rubric);
}
body.dwlatinprayerdesign .lp-device .rosary-row span.empty {
  background: var(--rule);
}
body.dwlatinprayerdesign {
  /* ── Features grid ────────────────────────────────────── */
  /* The grid no longer renders on the homepage — the hero rail
     (.lp-hero__rail) replaces it; the LP Features Grid widget returns
     early on the front page. These rules remain for any off-home use. */
}
body.dwlatinprayerdesign .lp-features {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  margin-top: 40px;
}
body.dwlatinprayerdesign .lp-feat {
  background: var(--bg);
  padding: 28px 22px 30px;
}
body.dwlatinprayerdesign .lp-feat .fn {
  /* Kernel eyebrow — sans, 0.7rem, 600, 0.16em up, muted. */
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  display: block;
  margin-bottom: 14px;
}
body.dwlatinprayerdesign .lp-feat h4 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-body);
  margin: 0 0 8px;
  line-height: 1.15;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-feat p {
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.5;
  margin: 0;
}
body.dwlatinprayerdesign {
  /* ── Mass — overlay onto existing dwlectionary_today_both ─ */
  /* The dwlectionary widget emits its own h2.widget-title with today's
     date ("Tuesday 28.4.2026") at the section level. The design treats
     the date as a small mono aside ("Tuesday · 28 · IV · MMXXVI"),
     not a giant display heading — and the LP_Section_Head_Widget
     above already shows "II. Today's Mass". Pull the date down to a
     small mono kicker that sits inline. */
}
body.dwlatinprayerdesign .widget_dwlectionary_today_both > .widget-title,
body.dwlatinprayerdesign section.widget_dwlectionary_today_both > .widget-title {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-micro) !important;
  font-weight: 600 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: var(--ink-mute) !important;
  margin: 0 0 18px !important;
  padding: 0 !important;
  border: 0 !important;
  line-height: 1.4 !important;
}
body.dwlatinprayerdesign {
  /* Container becomes the .mass grid */
}
body.dwlatinprayerdesign .dwlectionary-today-both {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  margin-top: 12px;
}
body.dwlatinprayerdesign .dwlectionary-today-col {
  padding-top: 4px;
}
body.dwlatinprayerdesign {
  /* Rite label (the dwlectionary-rite paragraph contains the rite-label
     span + feast-name span). Treat the whole paragraph as the "rite +
     feast" stack and re-layer them. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-rite {
  margin: 0;
  line-height: 1.2;
}
body.dwlatinprayerdesign {
  /* Rite label = a quiet column kicker, NOT a second eyebrow: the date above
     (the widget title) is the one uppercase/tracked eyebrow for this section.
     So this drops the uppercase + tracking and reads as a plain small label
     sitting just above the feast title. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-rite-label {
  display: block;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink-soft);
  margin-bottom: 4px;
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-feast-name {
  display: block;
  font-family: var(--font-sans);
  font-size: var(--fs-heading);
  font-weight: 600;
  color: var(--ink);
  margin: 0 0 10px;
  line-height: 1.2;
  letter-spacing: -0.01em;
}
body.dwlatinprayerdesign {
  /* Optional season/rank line if dwlectionary emits one — kept italic
     as a subtle textual aside, but tighter to the readings now. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-feast-meta,
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-season {
  font-family: var(--font-sans);
  font-style: italic;
  color: var(--ink-soft);
  font-size: var(--fs-small);
  margin: 0 0 10px;
}
body.dwlatinprayerdesign {
  /* Readings list — compact dl-style two-column. Tightened so the
     label + reference read as one connected line, not two stacked
     bands. Kernel-aligned label (sans/0.7rem/600/muted) + sans ref. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: max-content 1fr;
  column-gap: 14px;
  row-gap: 4px;
  align-items: baseline;
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings li {
  display: contents;
}
body.dwlatinprayerdesign {
  /* Reading labels read as plain "Epistle:" / "Gospel:" — NOT eyebrows.
     One eyebrow per column (the rite label above) is enough; stacking
     four more eyebrow-style bands here over-shouts the section. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings .dwlectionary-reading-label {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign {
  /* `<li>` uses display:contents, so the reference wrapper is the direct grid
     item for the value column. It groups the link(s) + their ", " separators
     into ONE cell — without it, a multi-part reference ("2 Kgs 11:1-4,9-18,20")
     would spill each link onto its own row with the comma in the label column.
     justify-self:start keeps the cell hugging its content so a single anchor's
     hover underline can't stretch the full 1fr column. */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings .dwlectionary-reading-refs,
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings .dwlectionary-reading-ref,
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings .dwlectionary-reading-text,
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings .dwlectionary-reading-content {
  font-family: var(--font-sans);
  /* The reference sits on the SMALL step + plain (not italic), matching the
     label — so each line reads as one tidy "label · reference" pair under the
     feast title, not big slanted body text. (Base dwlectionary italicises the
     ref; override it here.) */
  font-size: var(--fs-small);
  font-style: normal;
  color: var(--ink);
  justify-self: start;
}
body.dwlatinprayerdesign {
  /* Default link styling inside readings.
     We use border-bottom (not text-decoration) for the underline so we
     can animate color/transparency on hover. dwtheme's
     bootstrap-overrides re-applies `text-decoration: underline` on
     :hover with high specificity
     (`a:not(.btn):not(.navbar-brand):not(.nav-link):not(.dropdown-item):hover`,
     0,5,1), so we !important-suppress it on both base and hover —
     otherwise two underlines stack on hover. (dwbible's lang-switch
     uses the same pattern for the same reason.) */
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings a {
  color: var(--ink);
  text-decoration: none !important;
  border-bottom: 1px solid transparent;
}
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings a:hover,
body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-readings a:focus {
  color: var(--rubric);
  text-decoration: none !important;
  border-bottom-color: currentColor;
}
body.dwlatinprayerdesign {
  /* ── Verse pull (closing) ─────────────────────────────── */
}
body.dwlatinprayerdesign .lp-verse-pull {
  margin: 0 auto;
  max-width: var(--read);
  text-align: center;
  padding: 32px 0 8px;
}
body.dwlatinprayerdesign .lp-verse-pull blockquote {
  margin: 0;
  /* Web pull-quote is SANS (serif is app-mockup-only). Italic + ink carry it. */
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-heading);
  line-height: 1.35;
  color: var(--ink);
  text-wrap: balance;
}
body.dwlatinprayerdesign .lp-verse-pull cite {
  display: block;
  margin-top: 18px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-style: normal;
}
body.dwlatinprayerdesign {
  /* ── Mobile pass ──────────────────────────────────────── */
}
@media (max-width: 900px) {
  body.dwlatinprayerdesign .lp-hero {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 4px 0 24px;
  }
  body.dwlatinprayerdesign {
    /* On mobile, lead with the iPhone visual — it's the strongest
       brand asset on a small screen. Order: devices → copy. */
  }
  body.dwlatinprayerdesign .lp-hero .lp-devices {
    order: -1;
  }
  body.dwlatinprayerdesign .lp-hero .lp-hero__copy {
    order: 0;
  }
  body.dwlatinprayerdesign .lp-hero h1 {
    font-size: var(--fs-hero);
  }
  body.dwlatinprayerdesign { /* clamp already floors at 36px on phones */ }
  body.dwlatinprayerdesign .lp-hero__lede {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign {
    /* Single fluid phone — just nudge the cap down a touch on small screens. */
  }
  body.dwlatinprayerdesign .lp-device {
    max-width: 220px;
  }
  body.dwlatinprayerdesign .lp-features {
    grid-template-columns: 1fr 1fr;
  }
  body.dwlatinprayerdesign .lp-feat {
    padding: 22px 18px 24px;
  }
  body.dwlatinprayerdesign .lp-feat h4 {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign .dwlectionary-today-both {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  body.dwlatinprayerdesign .dwlectionary-today-col .dwlectionary-feast-name {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign .lp-verse-pull blockquote {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign .lp-section-head h2 {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign .lp-rule-glyph {
    margin: 40px 0;
  }
}
@media (max-width: 520px) {
  body.dwlatinprayerdesign .lp-features {
    grid-template-columns: 1fr;
  }
}
body.dwlatinprayerdesign {
  /* ══════════════════════════════════════════════════════════════════════
     HOME PAGE — Phase 3  (lp/Home.html, Claude Design 2026-06-25)
     Applied under body.dwlatinprayerdesign (no lp-path-home gate — the
     home.php template emits unique classes so there is no collision risk,
     and lp-path-home is unreliable when dwi18n is not active on local).
     ══════════════════════════════════════════════════════════════════════ */
  /* — Hero Phase 3 —
     The hero REUSES the existing Phase 2 .lp-hero layout + the .lp-device
     phone frame (real iOS screenshots, cross-faded by lp-hero-rotator.js).
     home.php emits .lp-devices/.lp-device exactly like the dw_app_splash
     widget, so all the Phase 2 hero/device CSS above applies unchanged.
     Phase 3 only ADDS the new copy elements below (stores + more-link) and
     the sections that follow the hero. */
  /* Store buttons: the .store/.stores primitive lives in _base.scss (shared
     with the /app/ page). Only the hero's positional spacing is set here. */
}
body.dwlatinprayerdesign .lp-hero__copy .stores {
  margin-bottom: 20px;
}
body.dwlatinprayerdesign {
  /* Arrow links — both .more-link ("See everything the app does →") and
     .go (inside daycards) carry the ONE .cta treatment: sans, --fs-small,
     600, oxblood, icon nudges right on hover (retires .go + .more-link as
     separate looks). CSS-only merge — markup keeps its class names. */
}
body.dwlatinprayerdesign .more-link,
body.dwlatinprayerdesign .go {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .more-link svg,
body.dwlatinprayerdesign .go svg {
  width: 14px;
  height: 14px;
  transition: transform 0.16s ease;
}
body.dwlatinprayerdesign .more-link:hover,
body.dwlatinprayerdesign .go:hover {
  text-decoration: none;
}
body.dwlatinprayerdesign .more-link:hover svg,
body.dwlatinprayerdesign .go:hover svg {
  transform: translateX(3px);
}
body.dwlatinprayerdesign {
  /* Section divider */
}
body.dwlatinprayerdesign .hr {
  border: 0;
  height: 1px;
  background: var(--rule);
  margin: 44px 0;
}
body.dwlatinprayerdesign {
  /* Section head (Today · Explore) */
}
body.dwlatinprayerdesign .section-head {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin: 0 0 22px;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 10px;
}
body.dwlatinprayerdesign .section-head h2 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold); /* 700 — design section-head weight */
  font-size: var(--fs-heading); /* 22 on LP — the section-head tier (remapped to the design in _chrome.scss) */
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--ink);
}
body.dwlatinprayerdesign .section-head .note {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign {
  /* Today top row: Rosary card + Saint card */
}
body.dwlatinprayerdesign .today-top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-bottom: 0;
}
body.dwlatinprayerdesign {
  /* Edge case: if the saint card is ever absent (no published saints at all),
     the lone rosary card spans full width instead of leaving a dead column. */
}
body.dwlatinprayerdesign .today-top:has(> .daycard:only-child) {
  grid-template-columns: 1fr;
}
body.dwlatinprayerdesign {
  /* Open front-door cards: grouped by whitespace + the section rule, never
     boxed — matches the design Home prototype (.daycard / .col / .xcard sit at
     padding:0). The wide grid gap does the separating, not a border. */
}
body.dwlatinprayerdesign .daycard {
  padding: 0;
  display: flex;
  flex-direction: column;
}
body.dwlatinprayerdesign {
  /* The whole card is the link now (no separate CTA): inherit the children's
     colours, no underline, and warm the title on hover (the Explore-card rule). */
}
body.dwlatinprayerdesign a.daycard {
  color: inherit;
  text-decoration: none;
}
body.dwlatinprayerdesign a.daycard:hover {
  text-decoration: none;
}
body.dwlatinprayerdesign a.daycard:hover h3 {
  color: var(--rubric);
}
body.dwlatinprayerdesign .daycard .lab {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: var(--fw-bold); /* 700 — design eyebrow weight (was 600) */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rubric); /* oxblood eyebrow (design), not grey */
  margin: 0 0 10px;
}
body.dwlatinprayerdesign .daycard h3 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold); /* 700 — design card-title weight (was 500) */
  font-size: var(--fs-subhead); /* 17 — design card-title size (was --fs-heading 26) */
  letter-spacing: -0.015em;
  margin: 0 0 10px;
  line-height: 1.2;
  color: var(--ink);
}
body.dwlatinprayerdesign .daycard > p {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.55;
  margin: 0 0 auto;
  padding-bottom: 14px;
}
body.dwlatinprayerdesign {
  /* .go shares the .cta treatment above; only its in-card spacing is set here. */
}
body.dwlatinprayerdesign .go {
  margin-top: 14px;
}
body.dwlatinprayerdesign {
  /* Saint card inner layout */
}
body.dwlatinprayerdesign .saintcard {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 14px;
  align-items: start;
}
body.dwlatinprayerdesign .por {
  width: 72px;
  height: 72px;
  display: block;
  overflow: hidden;
  flex-shrink: 0;
}
body.dwlatinprayerdesign .por img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
body.dwlatinprayerdesign .por--empty {
  background: var(--bg-3);
}
body.dwlatinprayerdesign .saint-info h3 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-body);
  margin: 0 0 4px;
  color: var(--ink);
}
body.dwlatinprayerdesign .feast {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  margin: 0 0 6px;
}
body.dwlatinprayerdesign .saint-info > p:not(.feast) {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.5;
  margin: 0 0 6px;
}
body.dwlatinprayerdesign {
  /* Today's Mass wrapper — separated from the Today-top row by whitespace, not
     a hairline (the design uses no rule here; less chrome reads clearer). */
}
body.dwlatinprayerdesign .masswrap {
  margin-top: 30px;
}
body.dwlatinprayerdesign .blocklab {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: var(--fw-bold); /* 700 — same eyebrow shape as .lab, grey */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 14px;
  padding: 0;
}
body.dwlatinprayerdesign {
  /* Today's Mass — two rite cards (design .today/.col/.lab/.rdg). Same card
     chrome + eyebrow + heading as the .daycard row above, plus the readings
     definition list. */
}
body.dwlatinprayerdesign .today {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  margin-top: 14px;
}
body.dwlatinprayerdesign .today .col {
  padding: 0;
}
body.dwlatinprayerdesign .today .col .lab {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: var(--fw-bold); /* 700 — design eyebrow weight */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rubric); /* oxblood eyebrow (design), not grey */
  margin: 0 0 10px;
}
body.dwlatinprayerdesign .today .col h3 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold); /* 700 — design card-title weight */
  font-size: var(--fs-subhead); /* 17 — design card-title size */
  letter-spacing: -0.015em;
  line-height: 1.2;
  margin: 0 0 16px;
  color: var(--ink);
}
body.dwlatinprayerdesign .today .col .rdg {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 18px;
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .today .col .rdg dt {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .today .col .rdg dd {
  margin: 0;
  color: var(--ink);
  font-weight: 500;
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign .today {
    grid-template-columns: 1fr;
  }
}
body.dwlatinprayerdesign {
  /* (.mass-date retired — the homepage Today's Mass no longer renders a date
     line; the design's mass section is just the two rite cards.) */
  /* Explore grid */
}
body.dwlatinprayerdesign .explore {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px 32px;
}
body.dwlatinprayerdesign .xcard {
  padding: 0;
  color: var(--ink);
  display: flex;
  flex-direction: column;
  gap: 7px;
  text-decoration: none;
}
body.dwlatinprayerdesign .xh {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
body.dwlatinprayerdesign .xcard h3 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold); /* 700 — same card-title rule as .daycard/.col h3 (design) */
  font-size: var(--fs-subhead); /* 17 — match the Mass feast/card titles, not --fs-body 18 */
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--ink);
}
body.dwlatinprayerdesign {
  /* Cards aren't boxes + mouseover is antiquated: hover warms the title and
     nudges the chevron (design), never a border/fill box. */
}
body.dwlatinprayerdesign .xcard:hover {
  text-decoration: none;
}
body.dwlatinprayerdesign .xcard:hover h3 {
  color: var(--rubric);
}
body.dwlatinprayerdesign .xcard:hover .xch {
  color: var(--rubric);
  transform: translateX(2px);
}
body.dwlatinprayerdesign .xch {
  width: 16px;
  height: 16px;
  color: var(--ink-mute);
  flex-shrink: 0;
  transition: transform 0.16s ease, color 0.16s ease;
}
body.dwlatinprayerdesign .xcard p {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.5;
  margin: 0;
}
body.dwlatinprayerdesign {
  /* Closing scripture verse — scoped to the .lp-home-verse wrapper class
     to avoid colliding with Phase 2's .lp-device .verse rules. */
}
body.dwlatinprayerdesign .lp-home-verse {
  text-align: center;
  padding: 24px 0 8px;
  margin: 0 auto;
  max-width: var(--read);
}
body.dwlatinprayerdesign .lp-home-verse p {
  /* Web pull-quote is SANS (serif is app-mockup-only). Italic + ink carry it. */
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-heading);
  line-height: 1.45;
  color: var(--ink);
  text-wrap: balance;
  margin: 0 0 16px;
}
body.dwlatinprayerdesign .lp-home-verse cite {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-style: normal;
  display: block;
}
body.dwlatinprayerdesign {
  /* Phase 3 mobile — the hero itself restacks via Phase 2's .lp-hero rule. */
}
@media (max-width: 900px) {
  body.dwlatinprayerdesign .today-top {
    grid-template-columns: 1fr;
  }
  body.dwlatinprayerdesign .explore {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 520px) {
  body.dwlatinprayerdesign .explore {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   Prayers — index (/prayers/) + reader (/prayers/<slug>/)
   Overlays existing dwlatinprayer markup emitted by:
     - [prayer_list] shortcode / dw_prayer_list_widget
     - dw_prayer_track_widget + dwinterlinear_render_prayer_by_slug()
   ============================================================ */
body.dwlatinprayerdesign {
  /* ─── Page: /prayers/  (content-area-page) ─────────────
     Top widget is dw_video_or_featured which emits h1.entry-title.
     Second widget is dw_content which outputs the [prayer_list] shortcode.
     Style the "Prayers" H1 as the Collection title, and transform the
     prayer-list widget into the design's two-column category grid. */
}
body.dwlatinprayerdesign.post-type-archive-dw_prayer, body.dwlatinprayerdesign.page-template-default .widget_dw_prayer_list_widget,
body.dwlatinprayerdesign .dw-vof-header h1.entry-title {
  /* no-op scope guards (kept for clarity) */
}
body.dwlatinprayerdesign {
  /* Title on top of the prayer index (rendered via video-or-featured) */
}
body.dwlatinprayerdesign .dw-vof .dw-vof-header h1.entry-title {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 14px;
  line-height: 1.05;
}
body.dwlatinprayerdesign .dw-vof .dw-vof-header {
  /* No hero top-pad — the title sits at the content-top (42px) per the
     wgnr-style design; keep the underline + breathing room below. */
  padding: 0 0 clamp(20px, 3vw, 32px);
  border-bottom: 1px solid var(--rule);
  margin-bottom: clamp(32px, 4vw, 48px);
}
body.dwlatinprayerdesign {
  /* Generic WP Pages (/about/, /colophon/, …) render their title via the vof
     widget, whose own custom_css adds `.dw-vof { margin: 4rem 0 1rem }` — the
     DW-essay head spacing. That 4rem top is too tall for an LP page head and,
     being a margin, collapses up through main/article/entry-content, dropping
     the title ~30px BELOW the index-page heads (/bible/, /saints/). Kill the
     top margin and use the canonical page-head padding (--lp-pagehead-pad-top,
     padding → no collapse) so every page title sits at the same height. */
}
body.dwlatinprayerdesign.page .dw-vof {
  margin-top: 0;
  padding-top: var(--lp-pagehead-pad-top);
}
body.dwlatinprayerdesign {
  /* The standard WP page/post header (header.entry-header) is vestigial on LP —
     the title is rendered by a custom head (vof / dwbible-index-head /
     lp-saints-head / dwlp-prayers-head), so entry-header is left EMPTY. An empty
     block with mb-3 self-collapses its margins (16px), and that collapses up
     through main, pushing the page content ~8px BELOW the heads that have no
     entry-header (e.g. /bible/). Zero it so every page title sits at the same
     token-derived height (shell-pad 60 + main-mt 8 + --lp-pagehead-pad-top). */
}
body.dwlatinprayerdesign main#primary .entry-header {
  margin: 0 !important;
}
body.dwlatinprayerdesign {
  /* ── Prayer-list widget ─── */
}
body.dwlatinprayerdesign .widget_dw_prayer_list_widget {
  /* Hide the widget's own "Prayers" H2 title — the page already has
     an H1 above from the featured/video widget. */
}
body.dwlatinprayerdesign .widget_dw_prayer_list_widget > .widget-title,
body.dwlatinprayerdesign .widget_dw_prayer_list_widget .dw-widget > .widget-title {
  display: none;
}
body.dwlatinprayerdesign {
  /* The category-heading + multi-column row grid is the shared "indexed
     link directory" primitive — see _index.scss (same object as the Bible
     index). Only prayer-page-specific chrome stays here. */
  /* ─── Single prayer: /prayers/<slug>/ ─────────────────── */
  /* Header: center the title; give room to breathe */
}
body.single-dw_prayer body.dwlatinprayerdesign .dw-vof-header, body.dwlatinprayerdesign.single-dw_prayer .dw-vof-header {
  padding: 0 0 clamp(24px, 3vw, 32px);
  text-align: center;
}
body.single-dw_prayer body.dwlatinprayerdesign .dw-vof-header h1.entry-title, body.dwlatinprayerdesign.single-dw_prayer .dw-vof-header h1.entry-title {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: var(--fw-bold);
  color: var(--ink);
  letter-spacing: -0.01em;
  margin: 0;
  line-height: 1.05;
}
body.dwlatinprayerdesign {
  /* Ornament above + below the prayer card */
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer {
  background: var(--bg);
  border: 0;
  box-shadow: none;
  max-width: 640px;
  margin: 0 auto;
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer.card {
  background: var(--bg);
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer .card-body {
  padding: 0;
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track {
  /* Ornament rules retired (tool direction) — the head hairline + the
     vocab border-top carry the separation; no ✠ glyph dividers. */
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer .card-body::before,
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer .card-body::after {
  content: none;
  display: none;
}
body.dwlatinprayerdesign {
  /* Print / Save-as-PDF action — small ghost button, right-aligned, screen-only */
}
body.dwlatinprayerdesign .dw-prayer-actions {
  display: flex;
  justify-content: flex-end;
  margin: 0 0 12px;
}
body.dwlatinprayerdesign .dw-prayer-print {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: 0;
  padding: 5px 12px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.04em;
  color: var(--ink-mute);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .dw-prayer-print:hover, body.dwlatinprayerdesign .dw-prayer-print:focus {
  color: var(--rubric);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dw-prayer-print .dw-prayer-print-ico {
  width: 14px;
  height: 14px;
}
body.dwlatinprayerdesign {
  /* Prayer text — Latin primary, translations muted italic */
}
body.dwlatinprayerdesign .prayer-text {
  padding: 0;
}
body.dwlatinprayerdesign .prayer-text .prayer-block {
  margin: 0 0 22px;
  padding: 0;
}
body.dwlatinprayerdesign .prayer-text .prayer-line {
  margin: 0;
  line-height: 1.4;
}
body.dwlatinprayerdesign .prayer-text .prayer-line.prayer-line-lat {
  font-family: var(--font-sans);
  font-size: var(--fs-heading);
  font-weight: var(--fw-medium);
  color: var(--ink);
  letter-spacing: 0.005em;
}
body.dwlatinprayerdesign .prayer-text .prayer-line {
  /* Any translation (non-Latin line) — upright muted gloss (tool direction).
     Muting is COLOR-driven (--ink-mute, theme-aware), so override the
     plugin's universal opacity:0.7 — alpha-muting stacks on the dark bg and
     dims the text toward illegible (the same reason the single-prayer
     reader restores opacity:1). */
}
body.dwlatinprayerdesign .prayer-text .prayer-line:not(.prayer-line-lat) {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: 1.5;
  color: var(--ink-mute);
  opacity: 1;
  font-style: normal;
  margin-top: 4px;
}
body.dwlatinprayerdesign {
  /* "More info" link → small ghost button feel */
}
body.dwlatinprayerdesign .dw-prayer-info {
  margin-top: 32px;
  padding: 20px 24px;
  background: var(--bg-2);
  border-left: 2px solid var(--rubric);
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  border-top: 0;
}
body.dwlatinprayerdesign .dw-prayer-info .dw-prayer-info-link {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--rubric);
  text-decoration: none;
  letter-spacing: 0.02em;
}
body.dwlatinprayerdesign .dw-prayer-info .dw-prayer-info-link:hover, body.dwlatinprayerdesign .dw-prayer-info .dw-prayer-info-link:focus {
  color: var(--rubric-2);
  text-decoration: underline;
}
body.dwlatinprayerdesign {
  /* Words-in-this-prayer vocab table — keep existing markup, restyle */
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab {
  margin: 48px auto 0;
  max-width: 640px;
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-title {
  font-family: var(--font-sans);
  font-size: var(--fs-heading);
  font-weight: 500;
  color: var(--ink);
  letter-spacing: 0;
  margin: 0 0 20px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-table td {
  padding: 10px 0;
  border-bottom: 1px solid var(--rule-soft);
  font-size: var(--fs-body);
  line-height: 1.4;
  color: var(--ink);
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-table .dw-vocab-latin {
  font-weight: 500;
  width: 40%;
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-table .dw-vocab-translation {
  color: var(--ink-mute);
  font-style: italic;
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-cta {
  margin-top: 16px;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-cta a {
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .widget_dw_prayer_vocab .dw-prayer-vocab-cta a:hover {
  text-decoration: underline;
}
body.dwlatinprayerdesign {
  /* Share bar — quieter, parchment */
}
body.dwlatinprayerdesign .widget_dw_socialsharing {
  margin-top: 48px;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}
body.dwlatinprayerdesign .widget_dw_socialsharing .widget-title {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
  text-align: center;
  margin-bottom: 14px;
}

/* ============================================================
   Phase 3 — Prayers index page (LP_Prayers_Index_Widget output)
   Ported from Prayers.html (claude.ai/design 2026-04-28).
   Selectors are .lp-prayers-* and .lp-rosary-card / .lp-mystery,
   distinct from the legacy .lp-prayer-list / .lp-prayer-* used by
   single-prayer pages above.
   ============================================================ */
body.dwlatinprayerdesign {
  /* Hide the legacy dw_prayer_list_widget output; the new
     LP_Prayers_Index_Widget replaces it on the dw_prayers_page_widgets
     sidebar, but the duplicate widget instance dw_prayer_list_widget-3
     is also on `home-widgets-wide` in some configs. Kill the legacy
     output anywhere it lands inside the prayers archive. */
}
body.dwlatinprayerdesign .post-type-archive-dw_prayer .widget_dw_prayer_list_widget,
body.dwlatinprayerdesign body.post-type-archive-dw_prayer .widget_dw_prayer_list_widget,
body.dwlatinprayerdesign body[class*=archive-dw_prayer] .widget_dw_prayer_list_widget {
  display: none;
}
body.dwlatinprayerdesign {
  /* —— Page head —— */
}
body.dwlatinprayerdesign .lp-prayers-head {
  padding: 64px 0 40px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 40px;
  align-items: end;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-prayers-head h1 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-display);
  line-height: 0.95;
  letter-spacing: -0.012em;
  margin: 16px 0 0;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-prayers-head h1 em {
  font-style: italic;
  color: var(--rubric);
  font-weight: 400;
}
body.dwlatinprayerdesign .lp-prayers-head .lp-eyebrow {
  display: block;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rubric);
  font-weight: 500;
}
body.dwlatinprayerdesign .lp-prayers-head__lede {
  max-width: 38ch;
  color: var(--ink-soft);
  font-size: var(--fs-body);
  line-height: 1.55;
  text-align: right;
  margin: 0;
  font-style: italic;
  font-family: var(--display);
}
body.dwlatinprayerdesign {
  /* —— Page head (tool-first) — the /prayers landing title, mirroring the
     dwbible index head: sans title + italic Latin sub, modest scale (NOT the
     poster .lp-prayers-head above). Rendered by dwlatinprayer's
     [dw_prayers_landing] shortcode from the page title. —— */
}
body.dwlatinprayerdesign .dwlp-prayers-head {
  padding-top: var(--lp-pagehead-pad-top);
  padding-bottom: 18px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .dwlp-prayers-head .dwlp-prayers-head__title {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold);
  font-size: var(--fs-display);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin: 0 0 4px;
}
body.dwlatinprayerdesign .dwlp-prayers-head .dwlp-prayers-head__latin {
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-small);
  color: var(--ink-mute);
  margin: 0;
}
body.dwlatinprayerdesign {
  /* --flush: the head sits directly above a block that carries its OWN bottom
     rule (e.g. the confession toolbar .dwlp-confession__bar), so the head's own
     rule would double up. Drop it + tighten the bottom gap so the title and that
     toolbar read as one header block closed by a single hairline. */
}
body.dwlatinprayerdesign .dwlp-prayers-head--flush {
  padding-bottom: 6px;
  margin-bottom: 0;
  border-bottom: 0;
}
body.dwlatinprayerdesign {
  /* —— Featured Rosary card with double border (sanguine outer, gilt inner) —— */
}
body.dwlatinprayerdesign .lp-rosary-card {
  margin-top: 64px;
  padding: 40px 40px 44px;
  background: var(--bg-2);
  border: 1px solid var(--rule);
  position: relative;
}
body.dwlatinprayerdesign .lp-rosary-card::before {
  content: "";
  position: absolute;
  inset: 0;
  border: 1px solid var(--gilt);
  margin: 6px;
  pointer-events: none;
  opacity: 0.35;
}
body.dwlatinprayerdesign .lp-rosary-card__head {
  display: flex;
  align-items: baseline;
  gap: 18px;
  margin-bottom: 28px;
  flex-wrap: wrap;
}
body.dwlatinprayerdesign .lp-rosary-card__head h2 {
  /* Sans head (Kant: section heads are sans). */
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-display);
  margin: 0;
  letter-spacing: -0.01em;
  white-space: nowrap;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-rosary-card__lat {
  font-family: var(--display);
  font-style: italic;
  color: var(--rubric);
  font-size: var(--fs-heading);
}
body.dwlatinprayerdesign .lp-rosary-card__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
}
body.dwlatinprayerdesign {
  /* Each mystery cell — a fully-clickable card */
}
body.dwlatinprayerdesign .lp-mystery {
  background: var(--bg);
  padding: 24px 22px 26px;
  display: flex;
  flex-direction: column;
  text-decoration: none;
  border: none !important; /* beat dwtheme `a { border-bottom }` */
  transition: background 0.15s;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-mystery:hover {
  /* No background-fill on hover — explicit user preference: no cream
     anywhere on the site. Hover cue comes from the title and arrow
     shifting to rubric — see .lp-mystery:hover h4 / __arrow. */
  border-bottom: none !important;
}
body.dwlatinprayerdesign .lp-mystery__day {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 14px;
}
body.dwlatinprayerdesign .lp-mystery h4 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-heading);
  margin: 0 0 4px;
  line-height: 1.1;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-mystery__lat {
  font-family: var(--display);
  font-style: italic;
  color: var(--rubric);
  font-size: var(--fs-body);
  margin-bottom: 12px;
}
body.dwlatinprayerdesign .lp-mystery__arrow {
  margin-top: auto;
  padding-top: 18px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-mystery:hover .lp-mystery__arrow {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* —— Indexed groups (two-column list inside, label gutter at left) —— */
}
body.dwlatinprayerdesign .lp-prayers-group {
  margin-top: 72px;
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 56px;
  padding-top: 36px;
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-prayers-group__label .lp-num {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rubric);
  display: block;
  margin-bottom: 10px;
}
body.dwlatinprayerdesign .lp-prayers-group__label h3 {
  font-family: var(--display);
  font-weight: 500;
  font-size: var(--fs-heading);
  margin: 0 0 8px;
  line-height: 1.05;
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-prayers-group__label p {
  font-family: var(--display);
  font-style: italic;
  color: var(--ink-soft);
  font-size: var(--fs-body);
  margin: 0;
  line-height: 1.45;
}
body.dwlatinprayerdesign .lp-prayers-group__list {
  list-style: none;
  margin: 0;
  padding: 0;
  columns: 2;
  column-gap: 48px;
  column-rule: 1px solid var(--rule-soft);
}
body.dwlatinprayerdesign .lp-prayers-group__list li {
  break-inside: avoid;
  padding: 11px 0;
  border-bottom: 1px dotted var(--rule);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
body.dwlatinprayerdesign .lp-prayers-group__list a {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  border: none;
  flex: 1;
  display: flex;
  align-items: baseline;
  gap: 10px;
  color: var(--ink);
  text-decoration: none;
}
body.dwlatinprayerdesign .lp-prayers-group__list a:hover {
  border: none;
}
body.dwlatinprayerdesign .lp-prayers-group__list a:hover .lp-prayers-group__name {
  color: var(--rubric);
}
body.dwlatinprayerdesign .lp-prayers-group__ord {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.12em;
  color: var(--ink-mute);
  width: 28px;
  flex-shrink: 0;
}
body.dwlatinprayerdesign .lp-prayers-group__name {
  color: var(--ink);
}
body.dwlatinprayerdesign .lp-prayers-group__en {
  font-family: var(--display);
  font-style: italic;
  color: var(--ink-mute);
  font-size: var(--fs-small);
  flex-shrink: 0;
  text-align: right;
}
body.dwlatinprayerdesign {
  /* —— Mobile —— */
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign .lp-prayers-head {
    padding: 36px 0 28px;
    grid-template-columns: 1fr;
    gap: 14px;
  }
  body.dwlatinprayerdesign .lp-prayers-head__lede {
    text-align: left;
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign .lp-rosary-card {
    margin-top: 36px;
    padding: 22px 18px 24px;
  }
  body.dwlatinprayerdesign .lp-rosary-card::before {
    margin: 4px;
  }
  body.dwlatinprayerdesign .lp-rosary-card__head h2 {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign .lp-rosary-card__lat {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign .lp-rosary-card__grid {
    grid-template-columns: 1fr 1fr;
  }
  body.dwlatinprayerdesign .lp-mystery {
    padding: 18px 16px 20px;
  }
  body.dwlatinprayerdesign .lp-mystery h4 {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign .lp-prayers-group {
    margin-top: 48px;
    grid-template-columns: 1fr;
    gap: 18px;
    padding-top: 28px;
  }
  body.dwlatinprayerdesign .lp-prayers-group__label h3 {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign .lp-prayers-group__list {
    columns: 1;
  }
  body.dwlatinprayerdesign .lp-prayers-group__list li {
    padding: 9px 0;
  }
  body.dwlatinprayerdesign .lp-prayers-group__list a {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign .lp-prayers-group__en {
    font-size: var(--fs-small);
  }
}
@media (max-width: 480px) {
  body.dwlatinprayerdesign .lp-rosary-card__grid {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   Phase 4 — Single prayer page polish (claude.ai/design 2026-04-28
   Pater-Noster.html). Enhances the existing dwinterlinear / vocab
   markup to match the design's typographic system. No markup changes
   — purely CSS overlay on top of dw_prayer_track_widget output.
   ============================================================ */
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Title chrome on top of dw_video_or_featured_widget ——— */
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .widget_dw_video_or_featured_widget,
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof,
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof-header {
  max-width: var(--read);
  margin: 0 auto;
  background: transparent;
  padding: 0;
  border: 0;
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof-header {
  padding: 36px 0 28px;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 28px;
  /* Prayer reader title ("Signum Crucis") — sans head, ink, not italic
     (Kant Phase 3: titles are sans; this is the page TITLE, distinct from
     the prominent .prayer-line-lat prayer BODY, which is left untouched). */
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof-header h1.entry-title {
  font-family: var(--font-sans) !important;
  font-style: normal !important;
  font-weight: var(--fw-semibold) !important;
  font-size: var(--fs-display) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.025em !important;
  color: var(--ink) !important;
  margin: 0 !important;
  text-align: left;
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Constrain the prayer card to var(--read) so verses breathe — */
}
body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dwinterlinear-prayer {
  max-width: var(--read) !important;
  margin: 0 auto;
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* The card-body centres the print action + copyright notices; the interlinear
     forces its own left alignment below. */
}
body.dwlatinprayerdesign.single-dw_prayer .dwinterlinear-prayer .card-body {
  text-align: center;
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Verses: upright sans Latin (medium), upright muted gloss (tool direction) — */
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text {
  text-align: left;
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block {
  margin: 0 0 22px;
  padding: 0;
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-line.prayer-line-lat {
  font-family: var(--font-sans) !important;
  font-style: normal !important;
  font-size: var(--fs-body) !important;
  line-height: 1.45 !important;
  color: var(--ink) !important;
  font-weight: var(--fw-medium) !important;
  letter-spacing: 0 !important;
  text-wrap: pretty;
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-line:not(.prayer-line-lat) {
  font-family: var(--font-sans) !important;
  font-style: normal !important;
  font-size: var(--fs-small) !important;
  line-height: 1.5 !important;
  color: var(--ink-soft) !important;
  margin-top: 4px !important;
  /* dwlatinprayer's _prayer.scss applies opacity: 0.7 to every
     non-Latin .prayer-line[data-lang]. That stacks on top of our
     already-soft --ink-soft color and makes the translation
     basically illegible in dark mode (oklch(0.78) × 0.7 alpha
     on top of oklch(0.155) bg). The design uses color, not alpha,
     to convey "secondary text" — restore full opacity. Our selector
     (.single-dw_prayer .prayer-text .prayer-line:not(.prayer-line-lat),
     0,3,1) out-specifies the plugin's .prayer-line[data-lang]:not(…)
     (0,2,1), so no !important needed (Kant Phase 3 !important drain). */
  opacity: 1;
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— "Amen." gets the centered display-italic sanguine treatment ——
     Heuristic: the last prayer-block usually contains just "Amen." in
     all 5 langs. Catch it via :last-child. */
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block:last-child {
  text-align: center;
  margin-top: 16px;
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block:last-child .prayer-line.prayer-line-lat {
  font-style: normal !important;
  color: var(--rubric) !important;
  font-size: var(--fs-body) !important;
  font-weight: var(--fw-medium) !important;
  letter-spacing: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block:last-child {
  /* Ornament retired (tool direction) — no ✠ flanking "Amen". */
}
body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block:last-child .prayer-line:not(.prayer-line-lat) {
  display: none; /* don't echo "Amen." in 4 other langs */
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Vocab table → .lex three-column display —— */
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab {
  max-width: var(--read);
  margin: 64px auto 0;
  border-top: 1px solid var(--rule);
  padding-top: 28px;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-title {
  font-family: var(--mono) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase;
  color: var(--rubric) !important;
  margin: 0 0 24px !important;
  font-weight: 500 !important;
  text-align: left;
  border: 0;
  padding: 0;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-table {
  width: 100%;
  border-collapse: collapse;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-table td {
  padding: 12px 0 !important;
  border-bottom: 1px dotted var(--rule);
  vertical-align: baseline;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-table td.dw-vocab-latin {
  font-family: var(--display) !important;
  font-style: italic !important;
  font-size: var(--fs-heading) !important;
  color: var(--ink);
  width: 35%;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-table td.dw-vocab-translation {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-body) !important;
  color: var(--ink-soft);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-cta {
  font-family: var(--display);
  font-style: italic;
  color: var(--ink-mute);
  font-size: var(--fs-body);
  text-align: center;
  margin-top: 24px;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-cta a {
  color: var(--ink-soft);
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab .dw-prayer-vocab-cta a:hover {
  color: var(--rubric);
  border-bottom-color: var(--rubric);
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Hide the legacy info link below the prayer (we'll re-render via
     the design's prayer-head .ref column in a future iteration) —— */
  /* .dw-prayer-info { display: none; } — keep visible for now, just style */
}
body.dwlatinprayerdesign.single-dw_prayer .dw-prayer-info {
  margin-top: 32px;
  text-align: center;
}
body.dwlatinprayerdesign.single-dw_prayer .dw-prayer-info .dw-prayer-info-link {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  border: 0;
  text-decoration: none;
}
body.dwlatinprayerdesign.single-dw_prayer .dw-prayer-info .dw-prayer-info-link:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-dw_prayer {
  /* —— Mobile —— */
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof-header {
    padding: 24px 0 20px;
  }
  body.dwlatinprayerdesign.single-dw_prayer article.single-prayer-track .dw-vof-header h1.entry-title {
    font-size: var(--fs-display) !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-line.prayer-line-lat {
    font-size: var(--fs-heading) !important;
    line-height: 1.3 !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-line:not(.prayer-line-lat) {
    font-size: var(--fs-body) !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .prayer-text .prayer-block:last-child .prayer-line.prayer-line-lat {
    font-size: var(--fs-heading) !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab td.dw-vocab-latin {
    font-size: var(--fs-body) !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .widget_dw_prayer_vocab td.dw-vocab-translation {
    font-size: var(--fs-small) !important;
  }
}

/* ============================================================
   Polish — Share + Get-the-App on single-prayer + tracks pages.
   The legacy Share-this-Prayer h2 and dw-app-mini block don't have
   any design treatment and stand out as un-styled chunks. Bring
   them into the design system with mono uppercase eyebrows and
   muted body copy.
   ============================================================ */
body.dwlatinprayerdesign.single-dw_prayer,
body.dwlatinprayerdesign.single-dw_track {
  /* —— Share this prayer (dw_socialsharing widget) —— */
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_socialsharing,
body.dwlatinprayerdesign.single-dw_track .widget_dw_socialsharing {
  max-width: var(--read);
  margin: 64px auto 0;
  padding-top: 28px;
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_socialsharing .widget-title,
body.dwlatinprayerdesign.single-dw_track .widget_dw_socialsharing .widget-title {
  font-family: var(--mono) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: var(--rubric) !important;
  font-weight: var(--fw-medium) !important;
  margin: 0 0 18px !important;
  padding: 0 !important;
  text-align: left !important;
  border: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_socialsharing .dwss-grid,
body.dwlatinprayerdesign.single-dw_track .widget_dw_socialsharing .dwss-grid {
  gap: 1px !important;
  background: var(--rule);
  border: 1px solid var(--rule);
  padding: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_socialsharing .dwss-btn,
body.dwlatinprayerdesign.single-dw_track .widget_dw_socialsharing .dwss-btn {
  background: var(--bg) !important;
  border: 0 !important;
  padding: 14px 16px !important;
  font-family: var(--display) !important;
  font-style: italic !important;
  font-size: var(--fs-body) !important;
  color: var(--ink) !important;
  text-align: center;
  transition: background 0.15s, color 0.15s;
  text-decoration: none !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_socialsharing .dwss-btn:hover,
body.dwlatinprayerdesign.single-dw_track .widget_dw_socialsharing .dwss-btn:hover {
  background: var(--bg-2) !important;
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign.single-dw_prayer,
body.dwlatinprayerdesign.single-dw_track {
  /* —— Get the App (dw_app_splash_mini) —— */
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini {
  max-width: var(--read);
  margin: 48px auto 0;
  padding-top: 28px;
  border-top: 1px solid var(--rule-soft);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .widget-title,
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__title,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .widget-title,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__title {
  font-family: var(--mono) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: var(--rubric) !important;
  font-weight: var(--fw-medium) !important;
  margin: 0 0 18px !important;
  padding: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini {
  padding: 0 !important;
  margin: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__columns,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__columns {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 22px;
  align-items: center;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__content,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__content {
  font-family: var(--display) !important;
  font-style: italic !important;
  font-size: var(--fs-body) !important;
  color: var(--ink-soft) !important;
  line-height: 1.55 !important;
  padding: 0 !important;
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__content a,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__content a {
  color: var(--ink) !important;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__content a:hover,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__content a:hover {
  color: var(--rubric) !important;
  border-bottom-color: var(--rubric);
}
body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__badge img,
body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__badge img {
  max-width: 140px;
  height: auto;
}
@media (max-width: 600px) {
  body.dwlatinprayerdesign.single-dw_prayer .widget_dw_app_splash_mini .dw-app-mini__columns,
  body.dwlatinprayerdesign.single-dw_track .widget_dw_app_splash_mini .dw-app-mini__columns {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}
body.dwlatinprayerdesign.single-dw_prayer,
body.dwlatinprayerdesign.single-dw_track {
  /* The "more info" link box from dw-prayer-info — keep it discreet
     (currently shows a slight bg-2 fill from Phase 4). Make it text-
     only without the box. */
}
body.dwlatinprayerdesign.single-dw_prayer .dw-prayer-info,
body.dwlatinprayerdesign.single-dw_track .dw-prayer-info {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  margin-top: 24px !important;
}

/* ── Paper / print: an interlinear prayer as a clean Latin + active-translation
   sheet via the browser's "Save as PDF" (no server-side PDF — prod hosting
   disables exec()). WYSIWYG: the translation on screen is what prints. The
   theme's print.scss already forces black ink + strips site chrome; this adds
   the prayer-specific rules. ─────────────────────────────────────────────── */
@media print {
  /* ── Bare-essentials prayer sheet ──────────────────────────────────────
     Goal: something printed on a whim (e.g. an Act of Contrition to pray
     from). Keep ONLY the site logo (dwtheme print.css keeps it + hides
     nav/footer), the prayer title, the interlinear prayer text, and a short
     app ad-copy line + URL. Everything else is hidden. Path is the browser's
     "Save as PDF" — no server-side PDF (prod hosting disables exec()).

     Selectors are scoped under body.dwlatinprayerdesign so they match the
     specificity of the overlay's on-screen rules (some carry !important, e.g.
     the single-prayer language switch) and win on source order — this block
     is the last thing in the stylesheet. */
  /* Inside the prayer card: drop the on-screen chrome, de-mute for paper */
  body.dwlatinprayerdesign .dwinterlinear-prayer .dw-prayer-actions,
  body.dwlatinprayerdesign .dwinterlinear-prayer .dw-prayer-info {
    display: none !important;
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer {
    /* The theme print stylesheet "explodes" links into " (url)"; suppress that
       inside the prayer so the verse text isn't littered with URLs. */
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer a[href]::after {
    content: "" !important;
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer {
    /* Never split a Latin↔translation verse pair across a page boundary */
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-block {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer {
    /* On-screen translations are muted via opacity; on paper that prints faint
       grey — restore full ink so the translation reads cleanly. */
  }
  body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-line {
    opacity: 1 !important;
  }
  /* Whitelist the content area: hide every widget + the top widget strip,
     then re-show only the title, the prayer, and the short app ad-copy. Any
     other (or future) widget — share buttons, vocab table, etc. — stays
     hidden by default. */
  body.dwlatinprayerdesign.single-dw_prayer .entry-content > .widget,
  body.dwlatinprayerdesign.single-dw_prayer aside#widgets-single-prayer-top-wide {
    display: none !important;
  }
  body.dwlatinprayerdesign.single-dw_prayer .entry-content > .widget_dw_video_or_featured_widget,
  body.dwlatinprayerdesign.single-dw_prayer .entry-content > .widget_dw_prayer_track_widget,
  body.dwlatinprayerdesign.single-dw_prayer .entry-content > .widget_dw_app_splash_mini {
    display: block !important;
  }
  /* Hide the overlay's footer meta bar (daily-verse line + theme switcher +
     year) — it sits outside footer#site-footer, which the theme already hides. */
  body.dwlatinprayerdesign.single-dw_prayer .lp-foot-meta {
    display: none !important;
  }
  /* Keep the logo wordmark, but drop the exploded site URL after it. The
     anchor itself carries .navbar-brand, so the theme's ".navbar-brand a"
     suppressor doesn't match it. */
  body.dwlatinprayerdesign a.navbar-brand[href]::after {
    content: "" !important;
  }
  /* App ad-copy keeps exactly ONE URL — in the sentence. Suppress the App
     Store badge link's duplicate exploded URL. */
  body.dwlatinprayerdesign .dw-app-mini__link[href]::after {
    content: "" !important;
  }
}
/* ============================================================
   Catechism index — /catechism/ page output by
   LP_Catechism_Index_Widget. Ported from claude.ai/design
   2026-04-29 (Catechism.html). Selectors are .lp-cat-* to
   stay distinct from prayer / bible / saints surfaces.

   Sections (top → bottom):
     1. .lp-cat-head            page-head: eyebrow + headline + counts/Preface meta
     2. .lp-cat-prayers         basic prayers — single-column list
     3. .lp-cat-lessons         37 lessons in 4 thematic divisions
     4. .lp-cat-pull            closing pull quote + Vulgate cite
   ============================================================ */
body.dwlatinprayerdesign {
  /* Replace the auto-archive H1 + child_pages list rendered by the
     existing dw_html_widget on archive-widgets-wide-catechism. The
     LP_Catechism_Index_Widget supplies the new page in full; the legacy
     widget output should not show alongside. */
}
body.dwlatinprayerdesign.post-type-archive-catechism .widget_dw_html_widget {
  display: none;
}
body.dwlatinprayerdesign {
  /* On a catechism sub-page the section nav moved INTO the rail (the rail
     "Catechism" item expands to the section's items). So drop the in-page
     aside and let the reading column take the full reading width. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-body {
  display: block;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside {
  display: none;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading {
  max-width: 100%;
}
body.dwlatinprayerdesign.single-catechism {
  /* Rail: the 37 lessons render as COLLAPSIBLE Pars (Part) groups (design
     lp/shell.js — Lessons → Pars I–IV → "N · title"). Each Pars is a native
     <details>; only the Pars holding the current lesson is open. */
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars-li {
  list-style: none;
  margin: 0;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars {
  margin: 0;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__sum {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  cursor: pointer;
  padding: 7px 12px;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 500;
  line-height: 1.3;
  color: var(--ink-soft);
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__sum::-webkit-details-marker {
  display: none;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__sum::marker {
  content: "";
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__sum:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars[open] > .dw-shell-pars__sum {
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__lbl {
  min-width: 0;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars__chev {
  flex: 0 0 auto;
  font-size: var(--fs-body);
  line-height: 1;
  color: var(--ink-mute);
  transition: transform 0.15s ease, color 0.15s ease;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars[open] > .dw-shell-pars__sum .dw-shell-pars__chev {
  transform: rotate(90deg);
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism {
  /* lessons inside an open Pars — indent under the group + a touch smaller */
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars > .dw-shell-subnav {
  margin: 0 0 4px;
}
body.dwlatinprayerdesign.single-catechism .dw-shell-pars > .dw-shell-subnav a {
  padding-left: 22px;
  font-size: var(--fs-micro);
}
body.dwlatinprayerdesign {
  /* —— 1. Page head —— */
}
body.dwlatinprayerdesign .lp-cat-head {
  padding: var(--lp-pagehead-pad-top) 0 8px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-cat-head h1 {
  font-family: var(--font-sans);
  /* Page title — bold, like every other LP index title (was a stray 600). */
  font-weight: var(--fw-bold);
  font-size: var(--fs-display);
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--ink);
}
body.dwlatinprayerdesign {
  /* "Baltimore" — oxblood accent word, upright (tool, not italic); same weight
     as the title (the colour carries the accent, not a weight drop). */
}
body.dwlatinprayerdesign .lp-cat-head h1 em {
  font-style: normal;
  color: var(--rubric);
  font-weight: var(--fw-bold);
}
body.dwlatinprayerdesign {
  /* —— Plain, tooly table-of-contents (no eyebrow, no Latin, no counts) —— */
  /* Section heading: "Basic Prayers" / "The Lessons". */
}
body.dwlatinprayerdesign .lp-cat-toc-head {
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-heading);
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 40px 0 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign {
  /* Division sub-heading inside "The Lessons" — the .group-head label tier
     (sans, uppercase, tracked, grey). */
}
body.dwlatinprayerdesign .lp-cat-toc-sub {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: var(--fs-micro);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  margin: 24px 0 0;
}
body.dwlatinprayerdesign .lp-cat-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
body.dwlatinprayerdesign {
  /* One TOC row: mono ordinal + title; quiet hairline between rows. */
}
body.dwlatinprayerdesign .lp-cat-row {
  display: flex;
  gap: 14px;
  align-items: baseline;
  padding: 10px 0;
  border-top: 1px solid var(--rule-soft);
  color: var(--ink);
  text-decoration: none;
}
body.dwlatinprayerdesign .lp-cat-list li:first-child .lp-cat-row {
  border-top: 0;
}
body.dwlatinprayerdesign .lp-cat-row:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Mono ordinal — the .row .ord treatment (mono, micro, grey, tabular). */
}
body.dwlatinprayerdesign .lp-cat-row__ord {
  flex: none;
  min-width: 2.4em;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  font-variant-numeric: tabular-nums;
}
body.dwlatinprayerdesign .lp-cat-row__title {
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign .lp-cat-row__title::after {
  content: " ›";
  margin-left: 4px;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .lp-cat-row:hover .lp-cat-row__title::after {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Preface — sits immediately after .lp-cat-head which already closes with
     border-bottom, so suppress the inherited border-top to avoid a double rule. */
}
body.dwlatinprayerdesign .lp-cat-row--preface {
  margin-top: 18px;
  border-top: 0;
}

/* —— Verbum diei footer (GLOBAL — every LP content page) ——
   Reads as a boring grey legal footer; the random Latin word is the secret. Lives
   here as a top-level rule (was catechism-scoped) now that wp_footer renders it
   sitewide. Centred on the reading measure so it terminates the column cleanly. */
body.dwlatinprayerdesign .lp-word-foot {
  max-width: var(--max); /* top line spans the content width (DW), not --read */
  margin: 64px auto 48px;
  padding-top: 18px;
  border-top: 1px solid var(--rule-soft);
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  line-height: 1.5;
}
body.dwlatinprayerdesign .lp-word-foot p {
  margin: 0;
}
body.dwlatinprayerdesign .lp-word-foot .lp-word-foot__main {
  margin-bottom: 2px;
}
body.dwlatinprayerdesign .lp-word-foot .lp-word-foot__label::after {
  content: ": ";
}
body.dwlatinprayerdesign .lp-word-foot .lp-word-foot__sep {
  margin: 0 2px;
}
body.dwlatinprayerdesign .lp-word-foot .lp-word-foot__term-link {
  font-weight: bold;
}
body.dwlatinprayerdesign .lp-word-foot .lp-word-foot__note:not(:empty) + .lp-word-foot__learn::before {
  content: " · ";
}
body.dwlatinprayerdesign .lp-word-foot a {
  color: inherit;
  text-decoration: none;
}
body.dwlatinprayerdesign .lp-word-foot a:hover {
  color: var(--ink-soft);
}

/* ============================================================
   Single Lesson — /catechism/lessons/{slug}/ rendered by
   LP_Catechism_Lesson_Widget. Ported from claude.ai/design
   2026-04-29 (Catechism-Lesson-1.html).

   Layout (desktop ≥901px):
     ┌────────────┐  ┌──────────── reading ─────────────┐
     │ Sticky ToC │  │ intro + 10 Q&A + lesson-nav      │
     └────────────┘  └──────────────────────────────────┘

   Layout (mobile ≤900px):
     The aside <details> collapses on tap of the summary.
     Default open via the `open` attribute; user can tap to hide.
   ============================================================ */
body.dwlatinprayerdesign.single-catechism {
  /* The catechism CPT is configured with a 700px custom_width that
     dwtheme's inline style applies to `main.container`. The lesson
     layout wants ~1100px (220 aside + 700 reading + 56 gap + padding).
     Override to give the widget room. */
}
body.dwlatinprayerdesign.single-catechism main.container,
body.dwlatinprayerdesign.single-catechism main.site-main {
  max-width: var(--read) !important;
}
body.dwlatinprayerdesign.single-catechism {
  /* The widget renders inside content-area-catechism. Suppress the
     legacy widget chrome (titles etc.) the theme might add around it. */
}
body.dwlatinprayerdesign.single-catechism .widget_lp_catechism_lesson_widget > .widget-title {
  display: none;
}
body.dwlatinprayerdesign.single-catechism {
  /* The lesson widget renders its own breadcrumb; hide the legacy
     dw_breadcrumbs_widget that lives in single-widgets-top-wide-catechism
     so it doesn't double up above the masthead. */
}
body.dwlatinprayerdesign.single-catechism .widget_dw_breadcrumbs_widget {
  display: none;
}
body.dwlatinprayerdesign.single-catechism {
  /* Hide the dw_video_or_featured H1 if it's still in place — the
     LP_Catechism_Lesson_Widget renders its own masthead. The widget
     should replace these widgets in content-area-catechism but we
     defensively suppress in case of widget-area collisions. */
}
body.dwlatinprayerdesign.single-catechism .widget_dw_video_or_featured_widget,
body.dwlatinprayerdesign.single-catechism .dw-vof,
body.dwlatinprayerdesign.single-catechism .widget_dw_prev_next_widget {
  display: none;
}
body.dwlatinprayerdesign.single-catechism {
  /* Outer article wrapper — single max-width column for the whole page.
     Force display:block — some upstream rule otherwise treats <article>
     children inside .entry-content as flex/grid items, which would
     destroy the masthead-above-body stacking. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson {
  display: block;
  max-width: var(--read);
  margin: 0 auto;
  padding: 0 24px;
  border-top: 0 !important;
  border-bottom: 0 !important;
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Lesson / basic masthead (design Catechism-Lesson-37 .lhead) ——
     A clean stacked head: eyebrow → title → lat-label, closed by a hairline.
     The question count + Pars now live in the eyebrow/lat-label, so the old
     right-hand meta column and the "memorize" pill are gone. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head {
  padding: 16px 0 14px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-catechism {
  /* Eyebrow "Lesson 37 · Pars IV · Last Things" — the ONE .eyebrow rule
     (sans, uppercase, tracked, grey). */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head__eyebrow {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0 0 8px;
}
body.dwlatinprayerdesign.single-catechism {
  /* Tool, not poster: a calm title at the design's 26px / tight tracking.
     !important beats the global h1 clamp rule (the Customizer heading
     antagonist), same as the essay head fights it. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head h1 {
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold) !important;
  font-size: var(--fs-heading) !important;
  line-height: 1.15 !important;
  letter-spacing: -0.025em;
  margin: 0 0 6px !important;
  text-wrap: balance;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head h1 em {
  font-style: normal; /* override the <em> UA italic */
  color: var(--rubric);
  font-weight: var(--fw-semibold);
}
body.dwlatinprayerdesign.single-catechism {
  /* Lat-label: Latin division name + question count. A quiet sans subtitle
     (site rule: never italic-serif). */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head__lat {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--fs-small);
  letter-spacing: 0.01em;
  color: var(--ink-mute);
  margin: 0;
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Body: single reading column (the section aside now lives in the rail) —— */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-body {
  margin-top: 32px;
  display: block;
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Basic-view editorial pass ————————————————————————————————
     The basic-prayer pages (the-lords-prayer, the-confiteor, …) and the
     Preface / landing posts share the lesson's 220+1fr body grid plus
     an aside ToC of siblings, but their reading column is plain prose
     instead of structured Q&A. The treatment below recreates the
     lesson design's typographic hierarchy on that prose without
     requiring a render_basic() parser: pure-CSS detection via
     :first-child / sibling selectors. The selectors all start with
     .lp-cat-reading > and the lesson view's first child is always
     .lp-cat-lesson-intro (a div), so these rules naturally do not
     match the lesson view. */
  /* Leading blockquote = the prayer itself — the page's single emphasis.
     Clean per the catechism design: NO framing hairlines (only the masthead
     divider remains), upright sans (never italic-serif), left-aligned, one
     step up from body. The legacy .cpt-catechism blockquote rule applies an
     !important padding, so we override padding with !important too. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading > blockquote:first-child {
  margin: 6px 0 26px;
  padding: 0 !important;
  border: 0;
  background: transparent;
  text-align: left;
  position: relative;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading > blockquote:first-child p {
  margin: 0;
  max-width: 62ch;
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: 500;
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--ink);
  text-wrap: pretty;
}
body.dwlatinprayerdesign.single-catechism {
  /* Commentary prose — ONE uniform body treatment. No oversized "lede": the
     prayer above is the single emphasis, the commentary is plain body. Three
     stacked sizes (italic quote + 20px lede + body) had no logic; now it's two
     treatments with clear meaning. render_basic() emits bare <p> children, so
     `> p` targets the basic view only — the lesson view's .lp-cat-reading
     children are divs/sections, never bare <p>. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading > p {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.7;
  color: var(--ink);
  text-wrap: pretty;
  margin: 0 0 16px;
}
body.dwlatinprayerdesign.single-catechism {
  /* Body-prose strong highlight — parchment-toned. Wins over the legacy
     .cpt-catechism strong { background:#FFFF88 } CPT-custom-CSS rule
     via specificity, so the page stops looking like a yellow-marker
     explosion. The lesson view's intro/extra strongs already get the
     same colour from their own SCSS rules; this catches body strongs
     in the basic view that don't sit inside a lp-cat-lesson-intro
     wrapper. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading p strong {
  /* The ONE emphasis highlight — oxblood tint (--mark auto-flips per theme),
     never gold/yellow. */
  background-color: var(--mark);
  padding: 1px 5px;
  font-weight: 600;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Aside (sticky desktop, collapsible mobile) —— */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside {
  position: sticky;
  top: 24px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.1em;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.single-catechism {
  /* Default: hide the native triangle marker — we use our own chevron span. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 14px;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside > summary::-webkit-details-marker {
  display: none;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside > summary::marker {
  content: "";
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__h {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rubric);
  font-weight: 500;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__chev {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  color: var(--ink-mute);
  transition: transform 0.2s;
  transform: rotate(90deg); /* points down when open */
  line-height: 1;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside:not([open]) .lp-cat-aside__chev {
  transform: rotate(0); /* points right when closed */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol {
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  border-left: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol li {
  padding: 0;
}
body.dwlatinprayerdesign.single-catechism {
  /* Message-list rows (Apple-Mail grammar): sans, soft fill + oxblood
     left-marker on hover/active. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol a {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 7px 10px 7px 12px;
  border: none !important;
  border-left: 2px solid transparent !important;
  margin-left: -1px;
  border-radius: 0;
  color: var(--ink-soft);
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  letter-spacing: 0;
  line-height: 1.3;
  text-decoration: none;
  transition: color 0.15s, background 0.15s, border-left-color 0.15s;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol a .n {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  letter-spacing: 0.06em;
  width: 22px;
  flex-shrink: 0;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol a:hover {
  color: var(--ink);
  background: var(--rule-soft);
  border-left-color: var(--rubric) !important;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol a.is-active {
  color: var(--ink);
  font-weight: 600;
  background: var(--rule-soft);
  border-left-color: var(--rubric) !important;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol a.is-active .n {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__nav {
  border-top: 1px solid var(--rule);
  padding-top: 18px;
  display: grid;
  gap: 14px;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__nav-row a {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border: none !important;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink);
  letter-spacing: 0;
  text-decoration: none;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__nav-row .lbl {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-aside__nav-row a:hover .ttl {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Reading column —— */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-reading {
  max-width: 700px;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism {
  /* Intro section — wraps the entire pre-Q&A prose. The first <p> reads
     as a slightly larger sans lead; subsequent <p>s are normal body.
     No italic lead, no drop-cap — identity comes from size + weight, per
     the DW Design System (doc: latinprayer-website-doctrine-tool-not-sales). */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro {
  margin: 0 0 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro > p:first-child {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.55;
  color: var(--ink-soft);
  text-wrap: pretty;
  margin: 0 0 18px;
}
body.dwlatinprayerdesign.single-catechism {
  /* Subsequent paragraphs in the intro — normal body prose. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro > p:not(:first-child) {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--ink);
  margin: 0 0 14px;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro > p:last-child {
  margin-bottom: 0;
}
body.dwlatinprayerdesign.single-catechism {
  /* Highlights inherited from dwmarkdown's bold-as-highlight convention. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro strong {
  /* The ONE emphasis highlight — oxblood tint (--mark auto-flips per theme). */
  background-color: var(--mark);
  padding: 1px 5px;
  font-weight: 600;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Q&A blocks ——
     Full-width reading block — NO left gutter column. The question
     number lives inline at the head of the question as a small rubric
     marker (the app Bible's .bible-verse-num pattern), which frees the
     horizontal space the old 60px/44px numbering gutter wasted on
     mobile. See doc: latinprayer-website-doctrine-tool-not-sales. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa {
  padding: 14px 0;
  border-bottom: 1px solid var(--rule-soft);
  scroll-margin-top: 80px;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa:first-of-type {
  border-top: 0;
}
body.dwlatinprayerdesign.single-catechism {
  /* Question number — a small quiet label ABOVE the question (design .qn),
     not an inline marker. Tabular so the column of numbers aligns. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__n {
  display: block;
  font-family: var(--font-mono);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
  color: var(--ink-mute);
  margin: 0 0 5px;
}
body.dwlatinprayerdesign.single-catechism {
  /* Question line — sans, semibold, calm (design .q: 16px/600). Reads as the
     heading via weight, not size; the number label sits above it. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__q {
  display: block;
  font-family: var(--font-sans);
  font-weight: 600;
  letter-spacing: -0.01em;
  font-size: var(--fs-body);
  line-height: 1.35;
  margin: 0 0 6px;
  color: var(--ink);
  text-wrap: pretty;
}
body.dwlatinprayerdesign.single-catechism {
  /* Answer — body scale, gently recessed (design .a: var(--fg-2), 62ch). */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__a {
  margin: 0;
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 62ch;
  text-wrap: pretty;
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Q&A harmonica (accordion) ————————————————————————————————————————
     The question is a reset <button> (.lp-cat-qa__head). Progressive
     enhancement: the collapsed styling only applies once JS adds .js-acc, so
     a no-JS visitor still sees every answer + commentary in full. Collapsed =
     question + the first line of the answer (clamped, ellipsis); open = all. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__head {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: left;
  position: relative;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc .lp-cat-qa__head {
  cursor: pointer;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__chev {
  display: none;
  position: absolute;
  top: 11px;
  right: 0;
  color: var(--ink-mute);
  font-size: var(--fs-body);
  line-height: 1;
  transition: transform 0.18s ease, color 0.18s ease;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc .lp-cat-qa__chev {
  display: block;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc:hover .lp-cat-qa__q,
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc:hover .lp-cat-qa__chev {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc .lp-cat-qa__head:focus-visible {
  outline: 2px solid var(--rubric);
  outline-offset: 3px;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.is-open .lp-cat-qa__chev {
  transform: rotate(90deg);
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc:not(.is-open) .lp-cat-qa__a {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc:not(.is-open) .lp-cat-qa__extra {
  display: none;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa.js-acc .lp-cat-qa__q {
  padding-right: 22px;
}
body.dwlatinprayerdesign.single-catechism {
  /* The post's explanatory prose between questions — gentler styling
     so the Q&A keeps top weight in the visual hierarchy. */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra {
  margin-top: 14px;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--ink-soft);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra p {
  margin: 0 0 14px;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra p:last-child {
  margin-bottom: 0;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra strong {
  /* The ONE emphasis highlight — oxblood tint (--mark auto-flips per theme). */
  background-color: var(--mark);
  padding: 1px 5px;
  font-weight: 600;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra blockquote {
  margin: 14px 0;
  padding: 14px 18px;
  border-left: 2px solid var(--rule);
  background: var(--bg-2);
  font-style: italic;
  color: var(--ink-soft);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra a {
  color: var(--rubric);
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra a:hover {
  border-bottom-color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Lesson nav (prev/next at the bottom) — the ONE .pager treatment:
     two cells between two hairlines, dir (uppercase grey) + bold target;
     a single hairline divides the cells, no boxed grid. —— */
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav {
  margin-top: 72px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav a {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 18px;
  text-decoration: none;
  border: none !important;
  color: var(--ink);
  transition: background 0.15s;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav a:hover .ttl {
  /* No background-fill on hover — explicit user preference: no cream
     anywhere on the site. Title shifts to rubric so the link still
     reads as interactive on hover. */
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav a:hover .arr {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .arr {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .ttl {
  font-family: var(--font-sans);
  font-size: var(--fs-subhead);
  color: var(--ink);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.25;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .lat {
  font-family: var(--font-sans);
  font-weight: 600;
  color: var(--ink-mute);
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .next {
  text-align: right;
  align-items: flex-end;
  border-left: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .next .ttl {
  text-align: right;
}
body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .is-empty {
  display: block;
  pointer-events: none;
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Tablet —— */
}
@media (max-width: 900px) {
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-body {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside {
    position: static;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol {
    columns: 2;
    column-gap: 28px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol li {
    break-inside: avoid;
  }
}
body.dwlatinprayerdesign.single-catechism {
  /* —— Mobile —— */
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign.single-catechism {
    /* The dwtheme main.container ships with `padding: 0 32px` on small
       viewports — combined with .lp-cat-lesson's own padding that's 88px
       (~23%) of a 390px iPhone viewport eaten by gutter. Drop the
       theme's container padding on single-catechism mobile and let the
       widget's own 16px padding be the sole horizontal gutter. Result
       is ~32px total wasted vs. the previous 88px. */
  }
  body.dwlatinprayerdesign.single-catechism main.container,
  body.dwlatinprayerdesign.single-catechism main.site-main {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson {
    padding: 0 16px;
  }
  body.dwlatinprayerdesign.single-catechism {
    /* Compact masthead: tighten the top/bottom padding for the small-screen
       view; the hairline divider (desktop rule) stays as the only break
       between masthead and the first question. */
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-head {
    padding: 4px 0 14px;
    margin-bottom: 18px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-body {
    gap: 14px;
    margin-top: 14px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro {
    padding-bottom: 20px;
    margin-bottom: 24px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-intro > p:first-child {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-qa {
    padding: 18px 0 20px;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-qa__q {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-qa__a {
    font-size: var(--fs-body);
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-qa__extra {
    font-size: var(--fs-small);
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav {
    grid-template-columns: 1fr;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .next {
    text-align: left;
    align-items: flex-start;
    /* Stacked single column: the divider runs ABOVE the second cell, not
       to its left (the two-column left-rule would float mid-screen). */
    border-left: 0;
    border-top: 1px solid var(--rule);
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-lesson-nav .next .ttl {
    text-align: left;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside ol {
    columns: 1;
  }
  body.dwlatinprayerdesign.single-catechism {
    /* On small screens the summary is a tappable pulldown — chevron
       rotates between closed (►) and open (▼) via the existing rotation
       rule. Keep the divider top+bottom so the closed state still reads
       as a clear section boundary. */
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside > summary {
    padding: 12px 0;
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
    margin: 0;
  }
  body.dwlatinprayerdesign.single-catechism .lp-cat-aside[open] > summary {
    margin-bottom: 18px;
  }
}

/* ============================================================
   Prayers — index (/prayers/) + reader (/prayers/<slug>/)
   Overlays existing dwlatinprayer markup emitted by:
     - [prayer_list] shortcode / dw_prayer_list_widget
     - dw_prayer_track_widget + dwinterlinear_render_prayer_by_slug()
   ============================================================ */
/* ============================================================
   Bible — index (/latin-bible/ /bible/ /bibel/) + reader
   Overlays markup from the dwbible plugin:
     - .dwbible.dwbible-index  (index pages)
     - .dwbible.dwbible-book   (chapter reader)
     - .dwbible-sticky / .dwbible-ch-picker / .dwbible-lang-switch
     - .dwbible-interlinear-verse (verse pair blocks)
   dwbible ships its own stylesheet; we override with the parchment palette
   and our type system. Always scoped to body.dwlatinprayerdesign.
   ============================================================ */
body.dwlatinprayerdesign {
  /* Bible *index* styles live in the consolidated tool-first block at the
     foot of this file (body.dwlatinprayerdesign.is-dwbible-index). The rules
     below are the chapter *reader*. */
  /* ─── Bible reader (chapter page) ──────────────────────── */
  /* Edition eyebrow above the sticky nav */
}
body.dwlatinprayerdesign.is-dwbible-book .dwbible-edition-title {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
  margin: clamp(32px, 4vw, 40px) 0 16px !important;
}
body.dwlatinprayerdesign.is-dwbible-book .dwbible-edition-title a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px dotted var(--ink-mute);
}
body.dwlatinprayerdesign.is-dwbible-book .dwbible-edition-title a:hover {
  color: var(--rubric);
  border-bottom-color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Sticky chapter nav — parchment, cleaner border */
}
body.dwlatinprayerdesign .dwbible-sticky {
  background: var(--bg) !important;
  border-bottom: 1px solid var(--rule) !important;
  box-shadow: 0 10px 24px var(--bg) !important;
  font-family: var(--font-sans);
  padding: 14px 0 !important;
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-sticky__label {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--fs-heading);
  color: var(--ink);
  letter-spacing: 0;
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-ch-picker {
  font-family: var(--font-sans);
  background: transparent;
  border: 1px solid var(--rule);
  color: var(--ink);
  padding: 4px 12px;
  border-radius: 0;
  font-size: var(--fs-small);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-ch-picker:hover {
  border-color: var(--rubric);
  color: var(--rubric);
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-ch-picker__caret {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-ctl {
  background: transparent;
  border-color: var(--rule);
  color: var(--ink);
  border-radius: 0;
  width: 32px;
  height: 32px;
}
body.dwlatinprayerdesign .dwbible-sticky .dwbible-ctl:hover {
  border-color: var(--rubric);
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Per-page language switch removed — the global LANGUAGE control in the
     rail foot drives Bible language. Kept in the DOM (the rail JS reads the
     links' hrefs to navigate), just not shown. */
}
body.dwlatinprayerdesign .dwbible-lang-switch {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-link {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-link:hover, body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-link:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-link.dwbible-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dwbible-lang-switch {
  display: none !important;
  /* The chip bar doesn't need the · separators */
}
body.dwlatinprayerdesign .dwbible-lang-switch .dwbible-lang-sep {
  display: none;
}
body.dwlatinprayerdesign {
  /* Verse pairs — Latin primary, translation muted italic */
}
body.dwlatinprayerdesign .dwbible-interlinear-verse {
  margin: 0 0 22px;
}
body.dwlatinprayerdesign .dwbible-interlinear-verse .verse-num {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.05em;
  color: var(--rubric);
  font-weight: 600;
  vertical-align: super;
  margin-right: 6px;
}
body.dwlatinprayerdesign .dwbible-interlinear-verse .verse-body {
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .dwbible-interlinear-verse {
  /* Latin (primary line) */
}
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-a,
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-latin {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--ink);
  margin: 0 0 6px;
}
body.dwlatinprayerdesign .dwbible-interlinear-verse {
  /* Translation (secondary) */
}
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-b,
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-bible {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: 1.65;
  color: var(--ink-mute);
  font-style: italic;
  margin: 0;
}
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-b .verse-num,
body.dwlatinprayerdesign .dwbible-interlinear-verse .dwbible-interlinear-bible .verse-num {
  color: var(--ink-mute);
  font-style: normal;
}
body.dwlatinprayerdesign {
  /* Bottom nav — prev chapter / top / next chapter */
}
body.dwlatinprayerdesign .dwbible-bottom-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 48px 0 0;
  padding: 20px 0 0;
  border-top: 1px solid var(--rule);
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
  gap: 12px;
}
body.dwlatinprayerdesign .dwbible-bottom-nav a {
  color: inherit;
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbible-bottom-nav a:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* Hide the duplicated footer block dwbible prints */
}
body.dwlatinprayerdesign .dwbible-footer {
  font-size: var(--fs-small);
  color: var(--ink-mute);
  opacity: 0.7;
  margin-top: 40px;
  padding-top: 20px;
  border-top: 1px solid var(--rule-soft);
}

/* ─── Night-mode specific overrides for dwbible's hard-coded colors ── */
html.dwlatinprayerdesign[data-theme=night] body.dwlatinprayerdesign .dwbible-sticky {
  background: var(--bg) !important;
  border-bottom-color: var(--rule) !important;
  box-shadow: 0 10px 24px var(--bg) !important;
}
html.dwlatinprayerdesign[data-theme=night] body.dwlatinprayerdesign .dwbible-edition-title,
html.dwlatinprayerdesign[data-theme=night] body.dwlatinprayerdesign .dwbible-edition-title a {
  color: var(--ink-mute) !important;
}

/* ============================================================
   Bible index (/latin-bible/ /bible/ /bibel/ …) — tool-first.
   A clean book directory built from the dwbible-index markup:
     .dwbible-index-head       eyebrow · title · Latin subtitle
     .dwbible-translation-nav   segmented edition switcher
     .dwbible-testament(-head)  Old / New Testament + Latin + count
     .dwbible-category          book group: label gutter + book list
     .dwbible-tile              plain book row (no boxes, no ornaments)
     .dwbible-index-api         machine-readable footer line
   No poster headline, no gilt rules, no boxed grid — a tool, not a poster.
   ============================================================ */
body.dwlatinprayerdesign.is-dwbible-index {
  /* The theme prints an .entry-title "The Bible"; our own head is the
     canonical heading, so suppress the duplicate. */
}
body.dwlatinprayerdesign.is-dwbible-index .entry-title {
  display: none;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* The index is a DIRECTORY, not a reading column — let it fill the wide
     content measure (not the 720px reading width) so the book grid uses
     the full width. */
}
body.dwlatinprayerdesign.is-dwbible-index .entry-content {
  max-width: var(--max) !important;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Per-page translation switcher removed — the ONE global LANGUAGE control
     in the rail foot drives Bible language. Kept in the DOM (the rail JS
     reads these links' hrefs to navigate), just not shown. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-full,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-label {
  display: none !important;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index {
  padding-top: 0;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Page head ─── */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-head {
  padding-top: var(--lp-pagehead-pad-top);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-headrow {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-headtext {
  flex: 1 1 auto;
  min-width: 0;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* The title now reads the edition itself ("Vulgata · Douay-Rheims (EN)",
     or just the Vulgate for Latin-only) — see dwbible's index head. No
     separate subtitle row. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-title {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold); /* LOUD page title — bold, outranks the testament h2 below */
  font-size: var(--fs-display);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin: 0;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Subtle search toggle, flush right in the title row — reveals the book
     filter on demand (progressive disclosure; the directory is the default). */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-search-toggle {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink-mute);
  cursor: pointer;
  transition: color 0.15s;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-search-toggle:hover, body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-search-toggle[aria-expanded=true] {
  color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-search-toggle:focus-visible {
  outline: 2px solid var(--rubric);
  outline-offset: 2px;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Translation switcher — "alongside the Latin" ───
     Every option keeps the Latin and adds a vernacular interlinear
     ("Latin only" is the lone single-text choice). Desktop = a full
     segmented control under the head divider; ≤640px collapses to a
     compact globe+chevron button (native <select> overlaid) in the head. */
  /* Desktop: segmented control */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-full {
  margin-top: 20px;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* "Alongside the Latin" — canonical italic eyebrow (Kant Phase 3). */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-label {
  display: block;
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-small);
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink-mute);
  margin-bottom: 8px;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Segmented edition switcher (index) — the shared chip-bar primitive.
     Chips are <a>; the active chip is a <strong class="…-active">. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav a, body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav .dwbible-translation-active {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav a:hover, body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav a:focus, body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav .dwbible-translation-active:hover, body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav .dwbible-translation-active:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav a.dwbible-translation-active, body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav .dwbible-translation-active.dwbible-translation-active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav .dwbible-translation-active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-nav {
  width: max-content;
  max-width: 100%;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Compact picker — hidden on desktop, shown ≤640px. A globe (i18n) +
     chevron button with the native <select> laid transparently over it,
     so the OS picker opens on tap but the chrome stays ours. The active
     translation is named in the subtitle, so the button needs no label. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact {
  display: none;
  position: relative;
  flex: 0 0 auto;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid var(--rule);
  border-radius: 0;
  color: var(--ink-soft);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact .dwbible-i18n {
  width: 18px;
  height: 18px;
  display: block;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact .dwbible-chev {
  width: 11px;
  height: 11px;
  display: block;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact select {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  font-size: var(--fs-body); /* ≥16px stops iOS zoom-on-focus */
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
@media (max-width: 640px) {
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-headrow {
    align-items: center;
  }
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-full {
    display: none;
  }
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-translation-compact {
    display: inline-flex;
  }
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── On-page filter (client-side) ─── */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-filter-wrap {
  margin: 22px 0 4px;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-filter {
  display: block;
  width: 100%;
  max-width: 420px;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.2;
  color: var(--ink);
  background-color: var(--bg);
  border: 1px solid var(--rule);
  border-radius: 0;
  padding: 11px 14px 11px 40px;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20stroke='%23888'%20stroke-width='1.5'%20stroke-linecap='round'%3E%3Ccircle%20cx='7'%20cy='7'%20r='5'/%3E%3Cpath%20d='M11%2011l4%204'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: left 13px center;
  background-size: 16px;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-filter::placeholder {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-filter:focus {
  outline: none;
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-filter-empty {
  margin: 16px 0 0;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* The filter toggles [hidden]; beat .dwbible-tile's flex display. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tile[hidden],
body.dwlatinprayerdesign.is-dwbible-index .dwbible-category[hidden],
body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament[hidden] {
  display: none !important;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Testament section ─── */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament {
  margin-top: clamp(36px, 5vw, 52px);
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Testament head = the canonical .section-head primitive: heading-size bold
     set above ONE hairline (Kant: a ruled L1 divider, a clear step DOWN from
     the LOUD display/bold page title above). */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament-head {
  padding-bottom: 10px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament-title {
  font-family: var(--font-sans);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.015em;
  font-size: var(--fs-heading);
  line-height: 1.1;
  margin: 0;
  color: var(--ink);
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Book group: name heading + book list ───
     The heading (.dwbible-category-name) and the book grid (.dwbible-tiles >
     .dwbible-tile, with .dwbible-tile-alt as the vernacular gloss) are the
     shared "indexed link directory" primitive — see _index.scss (the same
     object as the prayers index). Only the group container and the dwbible
     base-label neutraliser are bible-specific. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-category {
  display: block;
  padding: 0;
  margin: 0;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* The first category under a testament sits close to the super-head. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament .dwbible-category:first-of-type .dwbible-category-name {
  margin-top: 6px;
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-category-label {
  /* Neutralise the dwbible base label (uppercase · letter-spacing · grey)
     so the heading renders via the shared primitive in its own case. */
  display: block;
  text-transform: none;
  letter-spacing: normal;
  font-size: inherit;
  font-weight: 400;
  color: var(--ink);
  margin: 0;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Machine-readable footer line ─── */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-api {
  margin: clamp(40px, 5vw, 56px) 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--rule-soft);
  font-family: var(--font-mono);
  font-size: var(--fs-micro);
  line-height: 1.7;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-api a {
  color: var(--ink-soft);
  text-decoration: none;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-api a:hover {
  color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-index-api-label {
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: var(--fs-micro);
  color: var(--rubric);
  margin-right: 6px;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* Legacy markup the JSON twin / scrapers may emit — keep out of view. */
}
body.dwlatinprayerdesign.is-dwbible-index .dwbible-ai-hints {
  display: none !important;
}
body.dwlatinprayerdesign.is-dwbible-index {
  /* ─── Mobile ─── (the book-grid column counts are in the shared primitive) */
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-category {
    padding: 0;
  }
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-testament-count {
    margin-left: 0;
    width: 100%;
  }
}

/* ============================================================
   Phase 7 — Bible chapter reader. Pure CSS overlay on existing
   .dwbible-interlinear-* markup. Ports John-1.html (claude.ai/design
   2026-04-28) typography onto the verse pairs.
     - Sanguine hanging verse number in mono on the left
     - Latin in upright sans, medium weight (oxblood emphasis, no slant)
     - Vernacular gloss in upright sans, secondary ink, smaller
     - Polished sticky bar typography
     - Prev/Next foot nav as 2-cell hairline grid
   ============================================================ */
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* —— Page chrome typography —— */
  /* Edition eyebrow — canonical italic eyebrow (Kant Phase 3: one eyebrow). */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-edition-title {
  font-family: var(--font-sans) !important;
  font-style: italic;
  font-size: var(--fs-small) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  color: var(--ink-mute) !important;
  text-align: left;
  margin: 28px 0 8px !important;
  font-weight: 400 !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-edition-title a {
  color: inherit !important;
  border-bottom: 0;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-edition-title a:hover {
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* Sticky bar — keep the opaque white bg from earlier; tighten typography */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky {
  background: var(--bg) !important;
  border-bottom: 1px solid var(--rule) !important;
  /* Reader title ("Genesis") — sans head, ink, not italic (Kant: titles
     are sans; italic is reserved for the eyebrow + small header Latin). */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky__label {
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: var(--fw-semibold);
  font-size: var(--fs-heading);
  color: var(--ink);
  letter-spacing: -0.01em;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky {
  /* The chapter "picker" reads as prose, not a control: "Genesis 4" is one
     phrase, the chapter number set in the SAME type as the book label
     (matching family, size, weight) so it reads as part of the title. The
     only affordance is a quiet grey caret; the chapter grid still opens on
     click. No box, no mono — a boxed mono chip read as a <select>. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-ch-picker {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-heading) !important;
  font-weight: var(--fw-semibold) !important;
  line-height: 1.2 !important;
  letter-spacing: -0.01em !important;
  text-transform: none !important;
  color: var(--ink) !important;
  border: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  vertical-align: baseline;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-ch-picker:hover {
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-ch-picker .dwbible-ch-picker__caret {
  font-size: 0.62em;
  color: var(--ink-mute);
  margin-left: 0.15em;
  vertical-align: 0.12em;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky {
  /* The book name is a matching text-picker: the title reads as prose, a
     quiet grey caret is the only affordance, the book overlay opens on
     click. Same grammar as the chapter picker. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-picker {
  display: inline !important; /* same inline caret mechanics as the chapter picker */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-picker:hover {
  opacity: 1;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-picker:hover .dwbible-sticky__label {
  color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-picker {
  /* Identical to .dwbible-ch-picker__caret so both arrows match exactly. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-picker .dwbible-book-picker__caret {
  font-size: 0.62em;
  color: var(--ink-mute);
  opacity: 1;
  margin-left: 0.15em;
  vertical-align: 0.12em;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky {
  /* Book overlay — parchment, square, a quiet menu of book names. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-grid {
  font-family: var(--font-sans);
  border-color: var(--rule) !important;
  border-radius: 0 !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-grid .dwbible-book-grid__cell {
  color: var(--ink);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-grid .dwbible-book-grid__cell:hover {
  background: var(--bg-2);
  color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-book-grid .dwbible-book-grid__cell.is-current {
  background: var(--key-sub);
  color: var(--rubric);
  font-weight: 600;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky {
  /* Reader language switch — removed; the rail's global LANGUAGE control
     drives it (links kept in DOM for the rail JS to navigate). */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-link {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-link:hover, body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-link:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-link.dwbible-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch {
  display: none !important;
  /* The chip bar doesn't need the · separators */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-lang-switch .dwbible-lang-sep {
  display: none;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-ctl {
  width: 32px !important;
  height: 32px !important;
  border-radius: 0 !important;
  border-color: var(--rule) !important;
  color: var(--ink-soft) !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky .dwbible-ctl:hover {
  border-color: var(--rubric) !important;
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* —— Verse pairs: hanging ord + sans Latin + sans vernacular gloss —— */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible.dwbible-book {
  max-width: var(--read);
  margin: 36px auto 0;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
  --dwbible-verse-pad: 44px;
  position: relative;
  padding-left: var(--dwbible-verse-pad);
  margin: 0 0 32px !important;
  /* The hanging number is the verse's ORDINAL within this chapter — the
     chapter is already the page's identity (sticky header), so the running
     gutter shows a bare "26", not the citation "10:26" (JS trims it; the
     full reference stays on the element's title/data-ref for copy + AX).
     Narrow gutter → the ordinal hangs clear of the text instead of crowding
     it (and the old wide "10:26" no longer overflows the gutter on mobile). */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .verse-num {
  position: absolute !important;
  left: 0 !important;
  top: 12px !important;
  font-family: var(--mono) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.06em !important;
  color: var(--rubric) !important;
  font-weight: 500 !important;
  vertical-align: baseline !important;
  margin-right: 0 !important;
  width: 30px;
  line-height: 1;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
  /* On a linked/marked verse the ordinal carries locator weight — it reads
     as "you are here", paired with the Rote-Leiste bar, rather than the bar
     alone borrowing blockquote vocabulary. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .verse-highlight .verse-num {
  font-weight: 700 !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
  /* Hide the duplicate verse-num on the secondary (English) line */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-b .verse-num,
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-bible .verse-num {
  display: none !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
  /* Latin: upright sans, medium weight (tool direction — no serif/italic).
     Identity comes from size + weight + the oxblood emphasis, not a slant. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-a,
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-latin {
  font-family: var(--font-sans) !important;
  font-style: normal !important;
  font-size: var(--fs-body) !important;
  line-height: 1.45 !important;
  color: var(--ink) !important;
  font-weight: var(--fw-medium) !important;
  margin: 0 0 5px !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-a .verse-body,
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-latin .verse-body {
  font-family: inherit;
  font-style: inherit;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
  /* Vernacular: upright sans, secondary ink, smaller — the muted gloss. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-b,
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-bible {
  font-family: var(--font-sans) !important;
  font-style: normal !important;
  font-size: var(--fs-small) !important;
  line-height: 1.5 !important;
  color: var(--ink-soft) !important;
  margin: 0 !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* —— Bottom nav: a minimal Prev | Next pager. dwbible emits only bare ←/→
     arrow links (.dwbible-ctl-prev / -next, no chapter label), so this is a
     clean two-button row sitting on a top hairline — NOT a grey grid expecting
     rich label+name cells (which left lonely arrows on grey bars). Round corners
     are fine here: these are buttons. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav {
  margin: 56px auto 0 !important;
  max-width: var(--read);
  display: flex !important;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  background: none !important;
  border: 0 !important;
  border-top: 1px solid var(--rule) !important;
  padding: 18px 0 0 !important;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav a, body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav > * {
  background: none !important;
  border: 1px solid var(--rule) !important;
  border-radius: var(--r-control);
  padding: 9px 18px !important;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-sans);
  font-style: normal;
  color: var(--ink);
  font-size: var(--fs-body);
  font-weight: 600;
  letter-spacing: -0.01em;
  text-decoration: none !important;
  transition: border-color 0.15s, color 0.15s;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav a:hover, body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav > *:hover {
  background: none !important;
  border-color: var(--rubric);
  color: var(--rubric);
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav a small {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-style: normal;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* —— Mobile —— */
}
@media (max-width: 760px) {
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse {
    --dwbible-verse-pad: 32px;
    margin-bottom: 24px !important;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .verse-num {
    font-size: var(--fs-micro) !important;
    top: 8px !important;
    width: 24px;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-a,
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-latin {
    font-size: var(--fs-body) !important;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-b,
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-interlinear-verse .dwbible-interlinear-bible {
    font-size: var(--fs-small) !important;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav {
    grid-template-columns: 1fr !important;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-bottom-nav a {
    font-size: var(--fs-body) !important;
    padding: 16px 18px !important;
  }
  body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) .dwbible-sticky__label {
    font-size: var(--fs-body) !important;
  }
}

/* ============================================================
   Polish — verse-jumper row + Bible chapter chrome.
   The verse jumper is a <p class="verses"> with an anchor per verse
   linking to #book-ch-N. Currently dense black; design wants sanguine
   mono with hairline-spaced cells.
   ============================================================ */
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) {
  /* Verse jumper = the canonical .jump primitive (the ONE numeric jump grid,
     shared with the chapter keypad): oxblood mono numerals that FILL with
     var(--rubric)+var(--on-key) on hover / when active. */
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) p.verses {
  margin: 12px 0 20px !important;
  padding: 0 !important;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  line-height: 1;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) p.verses a {
  color: var(--rubric) !important;
  text-decoration: none !important;
  padding: 4px 4px;
  border: 0 !important;
  border-radius: var(--r-control);
  font-variant-numeric: tabular-nums;
  transition: color 0.15s, background 0.15s;
}
body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) p.verses a:hover, body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) p.verses a.is-active, body.dwlatinprayerdesign.is-dwbible:not(.is-dwbible-index) p.verses a:target {
  color: var(--on-key) !important;
  background: var(--rubric);
  text-decoration: none;
}

/* ============================================================
   Phase 6 — Book TOC. Renders at /{slug}/{book}/ (no chapter)
   via the new DwBible_Book_TOC_Trait. Pure-CSS overlay onto the
   .dwbible-book-toc markup the trait emits.
   ============================================================ */
/* Hide the theme's auto-injected <h1 class="entry-title"> on the
   book-TOC page — output_with_theme's fallback emits it from the
   passed $title, but our .dwbible-toc-head already shows the title
   in the design treatment. :has() is widely supported in modern
   browsers; the legacy entry-title falls back to visible if
   :has() isn't supported (cosmetic only, not broken). */
body.dwlatinprayerdesign main:has(.dwbible-book-toc) .entry-title,
body.dwlatinprayerdesign main:has(.dwbible-book-toc) .entry-header {
  display: none !important;
}

body.dwlatinprayerdesign .dwbible-book-toc {
  max-width: var(--max);
  margin: 0 auto;
  /* Edition title is an eyebrow — kernel-aligned. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-edition-title {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase;
  color: var(--ink-mute) !important;
  margin: 36px 0 24px;
  font-weight: 600 !important;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-edition-title a {
  color: inherit;
  border: 0;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-edition-title a:hover {
  color: var(--rubric-2);
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* Compact, tool-like book header (not a display hero). */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-head {
  padding: 8px 0 16px;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 22px;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* "LIBER VI" — kernel eyebrow. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-eyebrow {
  display: block;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  margin-bottom: 12px;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* Book title ("Iosue") — cool/modern: sans, ink, not italic.
     The size still feels like a hero (clamped) but the voice is
     professional, not display-missal. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-title {
  font-family: var(--font-sans);
  font-style: normal;
  font-weight: var(--fw-semibold);
  font-size: var(--fs-heading);
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--ink);
  margin: 0 0 6px;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* "24 CAPITA" — kernel eyebrow. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-meta {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 0;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* Switching is via the rail; here we only REPRESENT the current edition as
     a small read-only pill, so the book overview shows which language you're
     reading. The inactive options stay in the DOM (hidden) so the rail JS can
     still read their hrefs to navigate. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs {
  display: block;
  margin: -8px 0 26px;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs .dwbible-toc-lang {
  display: none;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs .dwbible-toc-lang.is-active {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rubric);
  background: var(--key-sub);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  padding: 3px 11px;
  pointer-events: none;
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs {
  /* Normalize the Latin-only edition label to the rail's wording: "Latin"
     (not the terse "LN"). Other codes (EN/DE/ES/FR) already match the rail. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs .dwbible-toc-lang--ln.is-active {
  font-size: 0;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-langs .dwbible-toc-lang--ln.is-active::before {
  content: "Latin";
  font-size: var(--fs-micro);
  letter-spacing: 0.1em;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* Chapter keypad — a dense grid of square number tiles (Claude-Design). */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters {
  list-style: none;
  margin: 0 0 36px;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(52px, 1fr));
  gap: 8px;
  background: transparent;
  border: 0;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters li {
  background: transparent;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters {
  /* Chapter keypad tile = the canonical .jump primitive (the ONE numeric
     jump grid, shared with the verse jumper): oxblood mono numerals on a
     transparent base that FILL with var(--rubric)+var(--on-key) on hover. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters .dwbible-toc-chapter {
  aspect-ratio: 1/1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: var(--r-control);
  background: transparent;
  color: var(--rubric);
  text-decoration: none;
  font-variant-numeric: tabular-nums;
  transition: color 0.12s, background 0.12s;
  /* General rule: no border-line, no underline — fill change only. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters .dwbible-toc-chapter:hover, body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters .dwbible-toc-chapter:focus {
  color: var(--on-key);
  background: var(--rubric);
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters {
  /* Bare arabic chapter number is the keypad value; the Roman is hidden here. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters .dwbible-toc-chapter-num {
  display: none;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters .dwbible-toc-chapter-arabic {
  font-family: var(--mono);
  font-style: normal;
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: none;
  color: inherit;
  line-height: 1;
}
body.dwlatinprayerdesign .dwbible-book-toc {
  /* Adjacent-book pager = the canonical .pager primitive (the ONE prev/next),
     identical to the chapter reader's .dwbible-bottom-nav: a 2-cell hairline
     grid (dir label + bold target), background change on hover, square. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--rule);
  border: 1px solid var(--rule);
  border-radius: 0;
  padding: 0;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager a, body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager > * {
  background: var(--bg);
  border: 0;
  border-radius: 0;
  padding: 20px 22px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-family: var(--font-sans);
  font-style: normal;
  color: var(--ink);
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: -0.01em;
  text-decoration: none;
  /* General rule: background change on hover, no border-line. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager a:hover, body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager > *:hover {
  color: var(--rubric);
  background: var(--bg-2);
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager {
  /* "Liber Prior" / "Liber Sequens" small label above the linked book name. */
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager a small {
  font-family: var(--mono);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-style: normal;
}
body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager .dwbible-toc-pager-next {
  text-align: right;
  align-items: flex-end;
}
@media (max-width: 480px) {
  body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-chapters {
    grid-template-columns: repeat(auto-fill, minmax(46px, 1fr));
    gap: 6px;
  }
  body.dwlatinprayerdesign .dwbible-book-toc .dwbible-toc-pager {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   Verse-range link highlight — Rote-Leiste pattern.

   dwbible's default `.verse-highlight` paints a yellow background
   on every verse in a linked range (e.g. /matthew/5:20-26 highlights
   verses 20 through 26). When the range is long, the page becomes a
   wall of yellow — visually overwhelming and not consistent with the
   cool/modern direction.

   Replace with a thin oxblood vertical bar in the left margin, the
   same pattern Freie Denker uses to mark fresh items ("Rote Leiste").
   Quiet, scannable, brand-consistent. Per-entry — adjacent entries
   read as one continuous bar via shared edges.
   ============================================================ */
body.dwlatinprayerdesign .dwbible .verse-highlight,
body.dwlatinprayerdesign .dwbible .dwbible-interlinear-entry.verse-highlight {
  background: transparent !important;
  border-radius: 0 !important;
  position: relative;
}
body.dwlatinprayerdesign .dwbible .verse-highlight::before,
body.dwlatinprayerdesign .dwbible .dwbible-interlinear-entry.verse-highlight::before {
  content: "";
  position: absolute;
  left: -14px;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--rubric);
}
body.dwlatinprayerdesign {
  /* The position:relative above turns each highlighted entry into the
     containing block for its own absolutely-positioned .verse-num — which
     would yank the number out of the left margin and drop it under the verse
     text (it "jumps" under the verse on load). Pull it back into the margin
     by the verse wrapper's padding so it lines up with non-highlighted verses. */
}
body.dwlatinprayerdesign .dwbible .dwbible-interlinear-verse .verse-highlight .verse-num {
  left: calc(-1 * var(--dwbible-verse-pad, 56px)) !important;
}

/* ============================================================
   _index.scss — the canonical "indexed link directory" primitive.

   ONE general rule (Kant) shared by every categorized link index on the
   site, so the prayers index and the Bible index are the SAME object —
   not two look-alikes maintained apart. Consumed by:
     • /prayers/    → .dw-widget.widget_dw_prayer_list_widget
                       (h3 + .dw-prayer-list > a.list-group-item)
     • Bible index  → body.is-dwbible-index
                       (.dwbible-category-name + .dwbible-tiles > a.dwbible-tile)

   The rule: a category is a full-width sans heading underlined with a
   hairline, followed by a multi-column grid of link rows (as many columns
   as fit the centered measure). Each row is one hairline-ruled line — a
   small mono ordinal (01, 02 …), the name (+ an optional muted vernacular
   gloss), and a trailing chevron that nudges right on hover.

   To add a new index: emit the same shape (a heading element + a list of
   <a> rows) and append its selectors to the lists below — never re-style a
   one-off index in a page partial. Both pages also center on --max via the
   .entry-content rule at the foot ("side-margins auto").

   The two markups differ only in details the rule absorbs: the prayer
   widget prints its own "›" span (hidden — the row supplies the chevron via
   ::after); Bible rows carry a .dwbible-tile-alt vernacular gloss (styled as
   the muted inline secondary), prayer rows don't.

   Selectors are written out in full (no nesting under a shared parent) so
   the prayer + Bible pair reads as one rule and there is no interpolation /
   `&` ambiguity.
   ============================================================ */
/* —— Category heading —— Both indexes use a real <h3>, so let the theme's
   own h3 sizing/weight govern (identical for both, no per-surface override
   to drift). We only add the directory-specific chrome: sans family, the
   section spacing, and a single hairline underline. */
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget h3,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-category-name,
body.dwlatinprayerdesign .lp-saints-cat {
  font-family: var(--font-sans);
  /* Month divider = the shared eyebrow role (micro 600 up muted), not a third
     dark heading. It reads as a quiet section label so the saint names below
     stay the dominant texture. */
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin: 38px 0 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}

body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget h3:first-child {
  margin-top: 0;
}

/* —— The grid of rows: as many columns as fit, row-major flow —— */
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles,
body.dwlatinprayerdesign .lp-saints-list {
  margin: 0 0 8px;
  padding: 0;
  list-style: none;
  border: 0;
  background: transparent;
  counter-reset: lp-index-idx;
  display: grid;
  /* Wide columns so a book name + its vernacular gloss sits on one line —
     ~3 across the centered --max measure, narrowing on smaller screens. */
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  column-gap: clamp(28px, 3vw, 48px);
  row-gap: 0;
}

/* —— A single link row: ordinal · name · (gloss) · chevron —— */
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row {
  counter-increment: lp-index-idx;
  display: flex;
  flex-direction: row; /* beat dwbible base .dwbible-tile { flex-direction: column } */
  align-items: baseline;
  gap: 12px;
  min-height: 0;
  padding: 9px 0;
  border: 0;
  /* Fine ledger hairline under every row (Claude-Design lp/*.html) — the faint
     --rule-soft tier, a step below the category-head --rule. The grid below
     syncs cell heights per row, so these align into clean horizontal rules
     across all columns. */
  border-bottom: 1px solid var(--rule-soft);
  border-radius: 0;
  background: transparent;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.35;
  color: var(--ink);
  text-decoration: none;
  transform: none;
  box-shadow: none;
  transition: color 0.15s;
  /* leading mono ordinal "01 02 03 …" — restarts per category */
}
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item::before,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile::before,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row::before {
  content: counter(lp-index-idx, decimal-leading-zero);
  flex: 0 0 22px;
  font-family: var(--mono);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  font-variant-numeric: tabular-nums;
  line-height: 1.7;
}
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row {
  /* trailing chevron, nudged right on hover */
}
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item::after,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile::after,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row::after {
  content: "›";
  margin-left: auto;
  padding-left: 10px;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
  transition: color 0.15s, transform 0.15s;
}
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item:hover, body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item:focus,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:hover,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:focus,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:hover,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:focus {
  color: var(--rubric);
  background: transparent;
  text-decoration: none;
}
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item:hover::after, body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item:focus::after,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:hover::after,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:focus::after,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:hover::after,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:focus::after {
  color: var(--rubric);
  transform: translateX(2px);
}

/* Prayer widget prints a literal "›" span; the row supplies its own chevron
   via ::after, so suppress the duplicate. */
body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list .list-group-item > span {
  display: none;
}

/* Bible rows carry a vernacular gloss ("Iosue" → "Josue") — muted inline
   secondary. (Absent where Latin == vernacular, so it only shows where it
   helps.) */
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile .dwbible-tile-name {
  /* Inherit the row's size/weight so a book name reads exactly like a prayer
     name — beats the dwbible base, which pins it to 0.8125rem (the "way
     smaller" bug). */
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
}

body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile .dwbible-tile-alt {
  color: var(--ink-mute);
  font-size: var(--fs-small);
  line-height: 1.35;
}

body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:hover .dwbible-tile-alt,
body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles .dwbible-tile:focus .dwbible-tile-alt {
  color: var(--rubric);
}

/* —— Saints: the two variations the rule absorbs ——
   (1) The leading mono ordinal carries the FEAST DAY (data-day, zero-padded)
   rather than a bare 01 02 03 … sequence, so each month reads as a real
   liturgical calendar. Same slot, same mono/size/color as the shared ordinal.
   (2) Like the prayer/Bible rows, a saint row puts the name + its patronage gloss
   on ONE line (Claude-Design lp/Saints.html): the name flexes, the muted gloss
   sits to its right just before the chevron, so the whole index reads
   consistently. A long name wraps and that cell grows; the gloss keeps the Bible
   vernacular-gloss styling. */
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row::before {
  content: attr(data-day);
  /* Saints-only: the feast-day ordinal joins the shared eyebrow role (sans,
     micro 600, muted) instead of the mono count — the dense saints header can't
     afford a separate mono texture; the calmer Bible/prayer indexes keep theirs.
     Tracking is omitted on purpose: 0.16em is for uppercase words, on a 2-digit
     numeral it just splits "02" into "0 2". text-transform stays (no-op on
     digits) so the ordinal is literally the eyebrow role, not a near-duplicate. */
  font-family: var(--font-sans);
  font-weight: 600;
  text-transform: uppercase;
}

body.dwlatinprayerdesign .lp-saints-list .lp-saints-row .lp-saints-row__body {
  display: flex;
  flex-direction: row; /* name + gloss on ONE line (matches Bible/prayer rows + the design) */
  align-items: baseline;
  gap: 12px;
  flex: 1 1 auto;
  min-width: 0;
}

body.dwlatinprayerdesign .lp-saints-list .lp-saints-row .lp-saints-row__name {
  font-size: inherit;
  font-weight: inherit;
  color: inherit;
  line-height: 1.35;
  flex: 1 1 auto;
  min-width: 0; /* a long name wraps rather than shoving the gloss off the row */
}

body.dwlatinprayerdesign .lp-saints-list .lp-saints-row .lp-saints-row__gloss {
  color: var(--ink-mute);
  font-size: var(--fs-small);
  line-height: 1.35;
  flex: 0 1 auto;
  min-width: 0;
  text-align: right;
}

body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:hover .lp-saints-row__gloss,
body.dwlatinprayerdesign .lp-saints-list .lp-saints-row:focus .lp-saints-row__gloss {
  color: var(--rubric);
}

/* —— Center the index on the wide measure: auto side-margins —— */
body.dwlatinprayerdesign.is-dwbible-index .entry-content,
body.dwlatinprayerdesign .entry-content:has(.widget_dw_prayer_list_widget) {
  max-width: var(--max);
  margin-inline: auto;
}

/* —— Mobile: collapse the column count —— */
@media (max-width: 760px) {
  body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list,
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles,
  body.dwlatinprayerdesign .lp-saints-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 460px) {
  body.dwlatinprayerdesign .dw-widget.widget_dw_prayer_list_widget .dw-prayer-list,
  body.dwlatinprayerdesign.is-dwbible-index .dwbible-tiles,
  body.dwlatinprayerdesign .lp-saints-list {
    grid-template-columns: 1fr;
  }
}
/* ============================================================
   Books — index (/books/) + TOC (/books/<book>/) + chapter reader
   Overlays markup from the dwbooks plugin:
     - .dwbooks-index + .dwbooks-card (index)
     - .dwbooks-toc + .dwbooks-toc-liber + .dwbooks-toc-chapters (TOC)
     - .dwbooks-reader + .dwbooks-paragraph + .dwbooks-phrase (reader)
     - .dwbooks-la / .dwbooks-tr-{en|de|es|fr} (phrase parts)
   ============================================================ */
body.dwlatinprayerdesign {
  /* ─── Index: /books/ ──────────────────────────────────── */
}
body.dwlatinprayerdesign .dwbooks-index h1 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: clamp(32px, 4vw, 48px) 0 6px;
  /* Design: italic sub after title. Not in current markup, but we can
     italicize the lead paragraph below to approximate. */
}
body.dwlatinprayerdesign .dwbooks-index > p.text-muted {
  color: var(--ink-mute) !important;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-style: italic;
  margin-bottom: clamp(32px, 4vw, 48px);
}
body.dwlatinprayerdesign .dwbooks-card {
  background: var(--bg);
  border: 1px solid var(--rule);
  padding: 24px 28px;
  transition: border-color 0.15s;
  margin-bottom: 24px !important;
}
body.dwlatinprayerdesign .dwbooks-card:hover {
  border-color: var(--ink-mute);
}
body.dwlatinprayerdesign .dwbooks-card .dwbooks-card-title {
  font-family: var(--font-sans);
  font-size: var(--fs-heading);
  font-weight: 500;
  color: var(--ink);
  margin: 0 0 4px !important;
  line-height: 1.1;
}
body.dwlatinprayerdesign .dwbooks-card .dwbooks-card-title a {
  color: inherit;
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-card .dwbooks-card-title a:hover, body.dwlatinprayerdesign .dwbooks-card .dwbooks-card-title a:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-card > p.text-muted {
  color: var(--ink-mute) !important;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.04em;
}
body.dwlatinprayerdesign .dwbooks-card > p.text-muted:nth-of-type(1) {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-style: italic;
}
body.dwlatinprayerdesign .dwbooks-card .dwbooks-quote {
  font-family: var(--font-sans);
  font-style: italic;
  color: var(--ink-soft);
  font-size: var(--fs-body);
  line-height: 1.4;
  margin-top: 14px !important;
  padding-left: 16px;
  border-left: 2px solid var(--rubric);
}
body.dwlatinprayerdesign {
  /* ─── TOC: /books/<book>/ ─────────────────────────────── */
}
body.dwlatinprayerdesign .dwbooks-toc h1 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: clamp(32px, 4vw, 48px) 0 4px;
}
body.dwlatinprayerdesign .dwbooks-toc > p.text-muted {
  color: var(--ink-mute) !important;
  font-family: var(--font-sans);
  font-style: italic;
  margin-bottom: 20px !important;
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign .dwbooks-toc > blockquote.dwbooks-quote {
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-heading);
  color: var(--ink);
  line-height: 1.4;
  margin: 24px 0 32px !important;
  padding: 0 0 0 20px;
  border-left: 2px solid var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-toc .dwbooks-continue-reading {
  padding: 12px 16px;
  background: var(--bg-2);
  border-left: 2px solid var(--gilt);
}
body.dwlatinprayerdesign .dwbooks-toc .dwbooks-continue-link {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-toc .dwbooks-continue-link:hover {
  color: var(--rubric-2);
  text-decoration: underline;
}
body.dwlatinprayerdesign .dwbooks-toc-liber {
  padding: 16px 0;
  border-top: 1px solid var(--rule-soft);
}
body.dwlatinprayerdesign .dwbooks-toc-liber:first-of-type {
  border-top: 0;
}
body.dwlatinprayerdesign .dwbooks-toc-liber h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: 500;
  color: var(--ink);
  margin: 0 0 12px !important;
  line-height: 1.25;
}
body.dwlatinprayerdesign .dwbooks-toc-liber h2 .text-muted {
  color: var(--ink-mute) !important;
  font-style: italic;
}
body.dwlatinprayerdesign .dwbooks-toc-chapters {
  margin: 0 0 0 8px !important;
  padding: 0;
}
body.dwlatinprayerdesign .dwbooks-toc-chapters li {
  padding: 6px 0;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: 1.4;
}
body.dwlatinprayerdesign .dwbooks-toc-chapters li a {
  color: var(--ink);
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-toc-chapters li a:hover, body.dwlatinprayerdesign .dwbooks-toc-chapters li a:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-toc-chapters .dwbooks-toc-num {
  font-family: var(--font-sans);
  color: var(--rubric);
  font-weight: 500;
  margin-right: 8px;
  letter-spacing: 0.05em;
}
body.dwlatinprayerdesign .dwbooks-toc-chapters li .text-muted {
  color: var(--ink-soft) !important;
}
body.dwlatinprayerdesign {
  /* ─── Chapter reader ──────────────────────────────────── */
}
body.dwlatinprayerdesign .dwbooks-reader {
  max-width: var(--read);
  margin: 0 auto;
}
body.dwlatinprayerdesign .dwbooks-reader .dwbooks-reader-header {
  align-items: flex-end !important;
  padding: clamp(24px, 3vw, 32px) 0 20px;
  border-bottom: 1px solid var(--rule);
  margin-bottom: clamp(24px, 3vw, 40px) !important;
}
body.dwlatinprayerdesign .dwbooks-reader .dwbooks-reader-header h1, body.dwlatinprayerdesign .dwbooks-reader .dwbooks-reader-header h2 {
  font-family: var(--font-sans);
  font-weight: 500;
  color: var(--ink);
  margin: 0;
  line-height: 1.1;
}
body.dwlatinprayerdesign .dwbooks-reader .dwbooks-reader-header h1 {
  font-size: var(--fs-display);
}
body.dwlatinprayerdesign .dwbooks-reader .dwbooks-reader-header h2 {
  font-size: var(--fs-body);
  color: var(--ink-soft);
  font-style: italic;
}
body.dwlatinprayerdesign {
  /* Chapter navigation (top + bottom) */
}
body.dwlatinprayerdesign .dwbooks-nav {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .dwbooks-nav a {
  color: var(--ink-mute);
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-nav a:hover, body.dwlatinprayerdesign .dwbooks-nav a:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-nav .dwbooks-nav-center {
  color: var(--ink-mute) !important;
  font-style: italic;
}
body.dwlatinprayerdesign .dwbooks-nav.dwbooks-nav-bottom {
  margin-top: clamp(40px, 5vw, 64px) !important;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign {
  /* Language switch — the shared chip-bar primitive */
}
body.dwlatinprayerdesign .dwbooks-lang-switch {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-link {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-link:hover, body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-link:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-link.dwbooks-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-link.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dwbooks-lang-switch {
  /* The chip bar doesn't need the · separators */
}
body.dwlatinprayerdesign .dwbooks-lang-switch .dwbooks-lang-sep {
  display: none;
}
body.dwlatinprayerdesign {
  /* Content: paragraphs with interleaved Latin + translation phrases */
}
body.dwlatinprayerdesign .dwbooks-content {
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-paragraph {
  position: relative;
  font-size: var(--fs-body);
  line-height: 1.8;
  color: var(--ink);
  margin-bottom: 22px !important;
  /* Drop cap on the very first paragraph of the chapter. */
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-paragraph:first-of-type::first-letter {
  font-family: var(--font-sans);
  float: left;
  font-size: 4em;
  line-height: 0.9;
  margin: 6px 10px 0 0;
  color: var(--rubric);
  font-weight: 500;
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-section-ref {
  display: block;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  color: var(--ink-mute) !important;
  text-decoration: none;
  margin-bottom: 4px;
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-section-ref:hover {
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-la {
  color: var(--ink);
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-tr {
  font-family: var(--font-sans);
  color: var(--ink-mute);
  font-style: italic;
}
body.dwlatinprayerdesign .dwbooks-content .dwbooks-tr::before {
  content: " ";
}
body.dwlatinprayerdesign {
  /* Text sources footer */
}
body.dwlatinprayerdesign .dwbooks-text-sources {
  margin-top: 32px;
  padding-top: 16px;
  border-top: 1px solid var(--rule-soft);
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  font-style: italic;
}
body.dwlatinprayerdesign .dwbooks-text-sources a {
  color: inherit;
  border-bottom: 1px dotted currentColor;
  text-decoration: none;
}
body.dwlatinprayerdesign .dwbooks-text-sources a:hover {
  color: var(--rubric);
  border-bottom-color: var(--rubric);
}

/* ============================================================
   Saints — /saints/ index + single saint page

   The /saints/ index is the shared "indexed link directory" (LP_Saints_Index
   widget): a page head (.lp-saints-head) + a humble today/next-feast row
   (.lp-saints-today) + the saints grouped by liturgical month. The directory
   rows (.lp-saints-cat / .lp-saints-list / .lp-saints-row) are styled by the
   shared rule in _index.scss alongside the prayers + Bible indexes — only the
   head + today row live here.

   Below the index: the single saint reader (/saints/<slug>/), and the
   featured-saint hero + saints grid CSS, still used by the saint-detail page's
   "browse more" modules and the saint taxonomy archives. None of these widgets
   ship their own CSS, so styling starts from raw Bootstrap + WP defaults.
   ============================================================ */
body.dwlatinprayerdesign {
  /* ─── Saints archive page scope ─────────────────────── */
}
body.dwlatinprayerdesign.post-type-archive-dw_saint, body.dwlatinprayerdesign.tax-saint_situation, body.dwlatinprayerdesign.tax-saint_profession {
  /* Kant — the site has exactly TWO content widths (--read 720 · --max 1080).
     Bible & Prayers are page/landing templates → their index sits in
     main > .entry-content (capped at --max). Saints is a CPT ARCHIVE, so
     archive-cpt.php renders its index widget inside a full-shell
     .archive-widgets-wide-wrap — which broke /saints/ out to ~1290px, a
     third width. Cap the wrapper's inner .container at --max + center it so
     the indexed-directory pages share ONE measure regardless of which WP
     template rendered them. */
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .archive-widgets-wide-wrap > .container, body.dwlatinprayerdesign.tax-saint_situation .archive-widgets-wide-wrap > .container, body.dwlatinprayerdesign.tax-saint_profession .archive-widgets-wide-wrap > .container {
  max-width: var(--max);
  margin-inline: auto;
}
body.dwlatinprayerdesign.post-type-archive-dw_saint, body.dwlatinprayerdesign.tax-saint_situation, body.dwlatinprayerdesign.tax-saint_profession {
  /* Vertical alignment: archive-cpt.php gives the wrapper `py-2` (8px top
     padding), which pushed the saints head 8px BELOW the other index heads
     (/bible/ etc.). Drop the top pad so /saints/ lines up at the same height
     (the bottom pad stays for breathing room). */
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .archive-widgets-wide-wrap, body.dwlatinprayerdesign.tax-saint_situation .archive-widgets-wide-wrap, body.dwlatinprayerdesign.tax-saint_profession .archive-widgets-wide-wrap {
  padding-top: 0 !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_saint, body.dwlatinprayerdesign.tax-saint_situation, body.dwlatinprayerdesign.tax-saint_profession {
  /* Page title lives inside .dw-saints-search-bar as an h1.
     Phase 8: italic Cormorant per Saints.html design + a sanguine
     "SANCTORALE ROMANUM" eyebrow injected via ::before. */
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .dw-saints-title, body.dwlatinprayerdesign.tax-saint_situation .dw-saints-title, body.dwlatinprayerdesign.tax-saint_profession .dw-saints-title {
  /* Sans page title, not italic (Kant Phase 3: page titles are sans). */
  font-family: var(--font-sans);
  font-style: normal;
  font-size: var(--fs-display);
  font-weight: var(--fw-semibold);
  color: var(--ink);
  letter-spacing: -0.02em;
  line-height: 1;
  margin: clamp(32px, 4vw, 48px) 0 6px;
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .dw-saints-search-bar, body.dwlatinprayerdesign.tax-saint_situation .dw-saints-search-bar, body.dwlatinprayerdesign.tax-saint_profession .dw-saints-search-bar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: clamp(20px, 3vw, 32px);
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .dw-saints-search-btn, body.dwlatinprayerdesign.tax-saint_situation .dw-saints-search-btn, body.dwlatinprayerdesign.tax-saint_profession .dw-saints-search-btn {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink);
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: 0;
  padding: 8px 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}
body.dwlatinprayerdesign.post-type-archive-dw_saint .dw-saints-search-btn:hover, body.dwlatinprayerdesign.post-type-archive-dw_saint .dw-saints-search-btn:focus, body.dwlatinprayerdesign.tax-saint_situation .dw-saints-search-btn:hover, body.dwlatinprayerdesign.tax-saint_situation .dw-saints-search-btn:focus, body.dwlatinprayerdesign.tax-saint_profession .dw-saints-search-btn:hover, body.dwlatinprayerdesign.tax-saint_profession .dw-saints-search-btn:focus {
  border-color: var(--rubric);
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* ─── Saints index head ───────────────────────────────
     The /saints/ page head — just the title (localized to the rail language),
     same display/italic-accent grammar as .lp-prayers-head. The directory rows
     themselves are the shared _index.scss rule. */
}
body.dwlatinprayerdesign .lp-saints-head {
  padding: var(--lp-pagehead-pad-top) 0 40px;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .lp-saints-head h1 {
  font-family: var(--font-sans);
  font-weight: var(--fw-bold);
  font-size: var(--fs-display);
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--ink);
}
body.dwlatinprayerdesign {
  /* The title doubles as the "show everything" reset for the occasion filter. */
}
body.dwlatinprayerdesign .lp-saints-reset {
  cursor: pointer;
}
body.dwlatinprayerdesign {
  /* ─── Browse by occasion: one-tap filter chips (the primary discovery
     path — find a saint by NEED, not name). These ARE clickable filters, so
     chip styling is correct here (unlike the saint-page facts list). ─── */
}
body.dwlatinprayerdesign .lp-saints-occasions {
  margin-top: 18px;
}
body.dwlatinprayerdesign .lp-saints-occasions__label {
  display: block;
  margin-bottom: 10px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  line-height: 1.4;
}
body.dwlatinprayerdesign .lp-saints-occasions__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
body.dwlatinprayerdesign .lp-saints-occasion {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--rubric);
  background: var(--rubric-tint);
  border: 1px solid transparent;
  border-radius: 0;
  padding: 4px 10px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .lp-saints-occasion:hover, body.dwlatinprayerdesign .lp-saints-occasion:focus {
  border-color: var(--rubric);
  outline: none;
}
body.dwlatinprayerdesign .lp-saints-occasion.is-active {
  background: var(--rubric);
  color: var(--bg);
}
body.dwlatinprayerdesign {
  /* No-results state for the filter */
}
body.dwlatinprayerdesign .lp-saints-empty {
  margin: clamp(28px, 4vw, 44px) 0;
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign {
  /* ─── The humble today / next-feast row ───────────────
     The canonical .feature-row treatment (design primitive): ONE highlighted
     nav row set between TWO hairlines — an eyebrow "Today · <date>" (or
     "Next feast · <date>") label, the saint's name, and a static chevron
     (static = navigate, since this is a link, not an expand-disclosure).
     Points at the day's saint without shouting. */
}
body.dwlatinprayerdesign .lp-saints-today {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 18px 0 8px;
  padding: 16px 4px;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
  text-decoration: none;
  color: var(--ink);
  transition: color 0.15s;
}
body.dwlatinprayerdesign .lp-saints-today__when {
  flex: 0 0 auto;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  white-space: nowrap;
  line-height: 1.6;
}
body.dwlatinprayerdesign .lp-saints-today__name {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
}
body.dwlatinprayerdesign .lp-saints-today::after {
  content: "›";
  margin-left: auto;
  padding-left: 10px;
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-mute);
  transition: color 0.15s, transform 0.15s;
}
body.dwlatinprayerdesign .lp-saints-today:hover, body.dwlatinprayerdesign .lp-saints-today:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign .lp-saints-today:hover::after, body.dwlatinprayerdesign .lp-saints-today:focus::after {
  color: var(--rubric);
  transform: translateX(2px);
}
body.dwlatinprayerdesign {
  /* ─── Featured Saint hero panel ──────────────────────── */
}
body.dwlatinprayerdesign .widget_dw_featured_saint_widget {
  margin: 0 0 clamp(24px, 3vw, 40px);
}
body.dwlatinprayerdesign .lp-featured-saint {
  position: relative;
  display: block;
  text-decoration: none;
  color: inherit;
  border: 1px solid var(--rule);
  background: var(--bg);
  overflow: hidden;
  transition: border-color 0.2s, transform 0.3s;
}
body.dwlatinprayerdesign .lp-featured-saint:hover, body.dwlatinprayerdesign .lp-featured-saint:focus {
  border-color: var(--rubric);
  text-decoration: none;
  color: inherit;
}
body.dwlatinprayerdesign .lp-featured-saint:hover .lp-featured-saint__image, body.dwlatinprayerdesign .lp-featured-saint:focus .lp-featured-saint__image {
  transform: scale(1.02);
}
body.dwlatinprayerdesign .lp-featured-saint__image-wrap {
  position: relative;
  overflow: hidden;
  background: var(--bg-2);
}
body.dwlatinprayerdesign .lp-featured-saint__image {
  display: block;
  width: 100%;
  height: auto; /* natural aspect (1280×720 → 16:9) */
  transition: transform 0.6s ease-out;
}
body.dwlatinprayerdesign {
  /* Gradient overlay at the bottom so the white caption reads over any image */
}
body.dwlatinprayerdesign .lp-featured-saint__overlay {
  position: absolute;
  inset: auto 0 0 0;
  height: 55%;
  pointer-events: none;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.15) 35%, rgba(0, 0, 0, 0.55) 75%, rgba(0, 0, 0, 0.75) 100%);
}
body.dwlatinprayerdesign .lp-featured-saint__content {
  position: absolute;
  left: clamp(16px, 3vw, 32px);
  right: clamp(16px, 3vw, 32px);
  bottom: clamp(16px, 3vw, 28px);
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: var(--cream);
  z-index: 2;
}
body.dwlatinprayerdesign .lp-featured-saint__label {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(245, 233, 212, 0.75);
  margin-bottom: 6px;
}
body.dwlatinprayerdesign .lp-featured-saint__name {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--cream);
  letter-spacing: -0.01em;
  line-height: 1.05;
}
body.dwlatinprayerdesign .lp-featured-saint__feast {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-style: italic;
  color: rgba(245, 233, 212, 0.85);
  margin-top: 4px;
}
body.dwlatinprayerdesign {
  /* Night-mode: overlay gradient can ease up since the page is already dark */
}
html.dwlatinprayerdesign[data-theme=night] body.dwlatinprayerdesign.post-type-archive-dw_saint .lp-featured-saint__overlay {
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.25) 50%, rgba(0, 0, 0, 0.7) 100%);
}
body.dwlatinprayerdesign {
  /* ─── Single saint page: /saints/<slug>/ ──────────────
     dw_saint_display_widget emits an editorial profile:
       <header class="lp-saint-head">
         <figure class="lp-saint-head__portrait"><img><figcaption></figure>
         <div class="lp-saint-head__id">
           <span class="lp-eyebrow lp-saint-head__feast">Feast · 23 April</span>
           <h1 class="entry-title">Name</h1>
         </div>
       </header>
       <div class="lp-saint-tags"> grouped .lp-tag chips </div>
       <div class="lp-saint-bio"><span class="lp-eyebrow">Life</span> prose </div>
       <prayer card>
     Rhythm: who (portrait · feast · name) → patronage (chips) → life → prayer.
  */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  padding: clamp(28px, 4vw, 44px) 0 clamp(32px, 4vw, 56px);
  /* —— Back to the saints index: a quiet breadcrumb atop the profile —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 clamp(22px, 3vw, 30px);
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--ink-mute);
  text-decoration: none;
  transition: color 0.15s;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back__chev {
  font-size: var(--fs-small);
  line-height: 1;
  transition: transform 0.15s;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back:hover, body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back:hover .lp-saint-back__chev, body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-back:focus .lp-saint-back__chev {
  transform: translateX(-2px);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Masthead: portrait beside the identity —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head {
  display: flex;
  gap: clamp(28px, 4vw, 48px);
  align-items: center;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait {
  flex: 0 0 auto;
  width: clamp(180px, 24vw, 260px);
  margin: 0;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
  border-radius: 0;
  box-shadow: var(--shadow-md);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait .lp-saint-copyright {
  margin-top: 12px;
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  text-align: center;
  line-height: 1.4;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait .lp-saint-copyright a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px dotted currentColor;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait .lp-saint-copyright a:hover {
  color: var(--rubric);
  border-bottom-color: var(--rubric);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__id {
  flex: 1 1 0;
  min-width: 0;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__feast {
  display: block;
  margin-bottom: 12px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget h1.entry-title {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 !important;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Patronage facts: a label column + a plain comma-separated value
     (a list, not chips — these aren't clickable filters) —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-facts {
  margin: clamp(24px, 3vw, 36px) 0 0;
  padding-top: clamp(20px, 2vw, 28px);
  border-top: 1px solid var(--rule);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-facts__row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 16px;
  align-items: baseline;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-facts__label {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
  line-height: 1.6;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-facts__value {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  line-height: 1.6;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Why this patronage: a short note explaining the facts above it.
     A modest top margin (no hairline) keeps it grouped with the patronage
     facts rather than floating free; same eyebrow + prose family as Life. —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-patronage-note {
  margin: clamp(16px, 1.8vw, 22px) 0 0;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-patronage-note__label {
  display: block;
  margin-bottom: 10px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* Prose comes from the_content (plain <p>); style like the Life prose.
     Autolinked scripture refs follow the page accent. */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-patronage-note p {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--ink-soft);
  margin: 0 0 0.7em;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-patronage-note p a {
  color: var(--rubric);
  text-decoration: underline;
  text-underline-offset: 2px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Life: eyebrow + reading-measure prose —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-bio {
  margin: clamp(28px, 3vw, 40px) 0 0;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-bio p {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.75;
  color: var(--ink-soft);
  margin: 0 0 1em;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-bio p em {
  font-style: italic;
  color: var(--ink);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-bio__label {
  display: block;
  margin-bottom: 12px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Prayer: eyebrow + h2 title, set off by a top hairline —— */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-prayer {
  margin: clamp(32px, 4vw, 48px) 0 0;
  padding-top: clamp(24px, 3vw, 32px);
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-prayer__label {
  display: block;
  margin-bottom: 10px;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-prayer__title {
  font-family: var(--font-sans);
  font-size: var(--fs-heading);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 4px !important;
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-prayer__title small {
  font-size: var(--fs-small);
  font-weight: 400;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget {
  /* —— Phone: stack the masthead, collapse the facts label column —— */
}
@media (max-width: 720px) {
  body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head {
    flex-direction: column;
    align-items: flex-start;
  }
  body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-head__portrait {
    width: 100%;
    max-width: 320px;
    align-self: center;
  }
  body.dwlatinprayerdesign.single-dw_saint .widget_dw_saint_display_widget .lp-saint-facts__row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}
body.dwlatinprayerdesign {
  /* Shared copyright line style (also on archive page attached to featured saint) */
}
body.dwlatinprayerdesign .lp-saint-copyright {
  line-height: 1.4;
}
body.dwlatinprayerdesign {
  /* App splash mini widget — hidden on single saint pages per user
     request ("remove app-link from single saint"). The widget instance
     stays in the saint sidebar so it can be re-enabled by removing
     this rule, but the rendered output is suppressed entirely. */
}
body.dwlatinprayerdesign.single-dw_saint .widget_dw_app_splash_mini {
  display: none;
}
body.dwlatinprayerdesign {
  /* The original parchment treatment — kept below for revertability,
     but now scoped to .visible-app-splash-mini-saint as a guard so it
     doesn't fight the display:none above. To re-enable, swap the
     selector and drop the display:none rule. */
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini {
  margin-top: clamp(32px, 4vw, 48px);
  padding-top: clamp(24px, 3vw, 32px);
  border-top: 1px solid var(--rule);
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini {
  background: transparent;
  padding: 0 !important;
  border: 0 !important;
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini__columns {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 20px;
  align-items: center;
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini__badge img {
  height: 44px;
  width: auto;
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini__content {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.5;
  padding: 0 !important;
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini__content a {
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign.single-dw_saint .visible-app-splash-mini-saint .widget_dw_app_splash_mini .dw-app-mini__content a:hover {
  text-decoration: underline;
}
body.dwlatinprayerdesign {
  /* ─── Saints grid (dw_saints_grid_widget) ────────────── */
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .row {
  /* Bootstrap gutters are fine — don't override */
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card {
  background: var(--bg);
  border: 1px solid var(--rule);
  border-radius: 0;
  transition: border-color 0.15s, transform 0.2s;
  overflow: hidden;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card:hover {
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card-img-top {
  display: block;
  width: 100%;
  transition: transform 0.4s;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card:hover .card-img-top {
  transform: scale(1.03);
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card-body {
  padding: 12px 14px !important;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card-body .fw-semibold {
  font-family: var(--font-sans);
  font-weight: 500 !important;
  font-size: var(--fs-small) !important;
  color: var(--ink);
  line-height: 1.2;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget .card-body .text-muted {
  color: var(--ink-mute) !important;
  font-family: var(--font-sans);
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-top: 2px;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget {
  /* Anchor reset — the widget wraps each card in <a class="text-decoration-none text-dark"> */
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget a.text-decoration-none {
  color: inherit !important;
  display: block;
}
body.dwlatinprayerdesign .widget_dw_saints_grid_widget a.text-decoration-none:hover, body.dwlatinprayerdesign .widget_dw_saints_grid_widget a.text-decoration-none:focus {
  color: inherit;
  text-decoration: none;
}

.lp-saint-card__img {
  aspect-ratio: 1/1;
  object-fit: cover;
}

/* ============================================================
   Long-form prose — .entry-content (pages, single posts, about)
   Applies the reading font + rhythm used on /about/ and similar
   copy-heavy pages. Previously handled by dwtheme's site-custom.css
   which we now suppress.
   ============================================================ */
body.dwlatinprayerdesign {
  /* Page header (entry-title + meta row from dw_video_or_featured) */
}
body.dwlatinprayerdesign .dw-vof .dw-vof-header h1.entry-title {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0 0 12px;
  line-height: 1.1;
}
body.dwlatinprayerdesign .dw-vof .dw-vof-header .entry-meta.dw-meta {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute) !important;
  margin: 0 0 clamp(24px, 3vw, 36px);
}
body.dwlatinprayerdesign {
  /* Prose */
}
body.dwlatinprayerdesign .entry-content {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: 1.72;
  color: var(--ink);
  max-width: var(--read);
}
body.dwlatinprayerdesign .entry-content h1, body.dwlatinprayerdesign .entry-content h2, body.dwlatinprayerdesign .entry-content h3, body.dwlatinprayerdesign .entry-content h4, body.dwlatinprayerdesign .entry-content h5, body.dwlatinprayerdesign .entry-content h6 {
  font-family: var(--font-sans);
  color: var(--ink);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.005em;
  margin-top: 1.8em;
  margin-bottom: 0.4em;
  line-height: 1.15;
}
body.dwlatinprayerdesign .entry-content h1 {
  font-size: var(--fs-display);
  font-weight: var(--fw-bold);
}
body.dwlatinprayerdesign .entry-content h2 {
  font-size: var(--fs-heading);
}
body.dwlatinprayerdesign .entry-content h3 {
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign .entry-content h4 {
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign .entry-content h5, body.dwlatinprayerdesign .entry-content h6 {
  font-size: var(--fs-body);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: var(--fw-semibold);
}
body.dwlatinprayerdesign .entry-content > h2:first-child,
body.dwlatinprayerdesign .entry-content > h3:first-child {
  margin-top: 0;
}
body.dwlatinprayerdesign .entry-content p {
  font-family: var(--font-sans);
  margin: 0 0 0.9em;
}
body.dwlatinprayerdesign .entry-content > p:first-child {
  font-size: var(--fs-body);
  color: var(--ink-soft);
  line-height: 1.7;
}
body.dwlatinprayerdesign .entry-content a {
  color: var(--rubric);
  text-decoration: underline;
  text-decoration-color: var(--rubric-tint);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color 0.15s, text-decoration-color 0.15s;
}
body.dwlatinprayerdesign .entry-content a:hover, body.dwlatinprayerdesign .entry-content a:focus {
  color: var(--rubric-2);
  text-decoration-color: var(--rubric);
}
body.dwlatinprayerdesign .entry-content ul, body.dwlatinprayerdesign .entry-content ol {
  margin: 0 0 1.2em 1.4em;
  padding: 0;
}
body.dwlatinprayerdesign .entry-content li {
  margin: 0.2em 0;
  line-height: 1.6;
}
body.dwlatinprayerdesign .entry-content blockquote {
  margin: 1.8em 0;
  padding: 0.5em 0 0.5em 1.2em;
  border-left: 2px solid var(--rubric);
  font-family: var(--font-sans);
  font-style: italic;
  font-size: var(--fs-body);
  color: var(--ink-soft);
  line-height: 1.4;
}
body.dwlatinprayerdesign .entry-content blockquote p {
  margin: 0 0 0.5em;
  font-family: inherit;
  font-size: inherit;
}
body.dwlatinprayerdesign .entry-content blockquote p:last-child {
  margin-bottom: 0;
}
body.dwlatinprayerdesign .entry-content hr {
  border: 0;
  height: 1px;
  background: var(--rule);
  margin: 2.2em 0;
}
body.dwlatinprayerdesign .entry-content code {
  font-family: var(--font-mono);
  padding: 2px 6px;
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: 0;
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .entry-content pre {
  margin: 1.5em 0;
  padding: 14px 16px;
  background: var(--bg-2);
  border-left: 2px solid var(--rule);
  overflow-x: auto;
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .entry-content pre code {
  background: none;
  border: 0;
  padding: 0;
}
body.dwlatinprayerdesign .entry-content img,
body.dwlatinprayerdesign .entry-content figure img {
  max-width: 100%;
  height: auto;
  border: 1px solid var(--rule);
}
body.dwlatinprayerdesign .entry-content figure {
  margin: 1.6em 0;
}
body.dwlatinprayerdesign .entry-content figure figcaption {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  margin-top: 6px;
  text-align: center;
}
body.dwlatinprayerdesign .entry-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.6em 0;
  font-family: var(--font-sans);
}
body.dwlatinprayerdesign .entry-content table th, body.dwlatinprayerdesign .entry-content table td {
  padding: 10px 14px;
  border-bottom: 1px solid var(--rule-soft);
  text-align: left;
  vertical-align: top;
}
body.dwlatinprayerdesign .entry-content table th {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  border-bottom: 1px solid var(--rule);
}
body.dwlatinprayerdesign .entry-content table tbody tr:last-child td {
  border-bottom: 0;
}
body.dwlatinprayerdesign .entry-content strong {
  font-weight: 600;
  color: var(--ink);
}

/* ============================================================
   Search results + 404 — neutral layouts that don't get their own
   feature pages but still need the parchment palette.
   ============================================================ */
body.dwlatinprayerdesign {
  /* Search results list header */
}
body.dwlatinprayerdesign.search.search-results .page-title {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--ink);
  margin: clamp(32px, 4vw, 48px) 0 24px;
  letter-spacing: -0.01em;
  /* WP injects the query in a <span class="search-term"> — style as accent */
}
body.dwlatinprayerdesign.search.search-results .page-title .search-term,
body.dwlatinprayerdesign.search.search-results .page-title > span {
  color: var(--rubric);
  font-style: italic;
  font-weight: 500;
}
body.dwlatinprayerdesign.search.search-results {
  /* Result card grid — Bootstrap col-6 col-md-4 already wraps into row */
}
body.dwlatinprayerdesign.search.search-results article.hentry {
  background: var(--bg);
  border: 1px solid var(--rule);
  padding: 18px 20px;
  margin-bottom: 20px;
  transition: border-color 0.15s;
}
body.dwlatinprayerdesign.search.search-results article.hentry:hover {
  border-color: var(--rubric);
}
body.dwlatinprayerdesign.search.search-results article.hentry .entry-title,
body.dwlatinprayerdesign.search.search-results article.hentry h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: 500;
  margin: 0 0 6px;
}
body.dwlatinprayerdesign.search.search-results article.hentry .entry-title a,
body.dwlatinprayerdesign.search.search-results article.hentry h2 a {
  color: var(--ink);
  text-decoration: none;
}
body.dwlatinprayerdesign.search.search-results article.hentry .entry-title a:hover, body.dwlatinprayerdesign.search.search-results article.hentry .entry-title a:focus,
body.dwlatinprayerdesign.search.search-results article.hentry h2 a:hover,
body.dwlatinprayerdesign.search.search-results article.hentry h2 a:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign.search.search-results article.hentry .entry-meta,
body.dwlatinprayerdesign.search.search-results article.hentry .post-meta {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
body.dwlatinprayerdesign.search.search-results article.hentry .entry-summary,
body.dwlatinprayerdesign.search.search-results article.hentry .post-excerpt,
body.dwlatinprayerdesign.search.search-results article.hentry p {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  color: var(--ink-soft);
  line-height: 1.55;
  margin: 4px 0 0;
}
body.dwlatinprayerdesign.search.search-results article.hentry mark {
  background: var(--rubric-tint);
  color: var(--rubric);
  padding: 0 2px;
  font-style: normal;
}
body.dwlatinprayerdesign {
  /* 404 page */
}
body.dwlatinprayerdesign.error404 .page-title,
body.dwlatinprayerdesign.error404 h1 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--ink);
  font-style: italic;
}
body.dwlatinprayerdesign {
  /* Breadcrumb widget (dwtheme dw-breadcrumbs) on any page */
}
body.dwlatinprayerdesign .dw-bc {
  font-family: var(--font-sans);
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  margin: 16px 0 0;
}
body.dwlatinprayerdesign .dw-bc .dw-bc-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
body.dwlatinprayerdesign .dw-bc .dw-bc-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
body.dwlatinprayerdesign .dw-bc .dw-bc-item::before {
  content: "›";
  color: var(--rule);
}
body.dwlatinprayerdesign .dw-bc .dw-bc-item:first-child::before {
  content: "";
}
body.dwlatinprayerdesign .dw-bc .dw-bc-link {
  color: var(--ink-mute);
  text-decoration: none;
}
body.dwlatinprayerdesign .dw-bc .dw-bc-link:hover, body.dwlatinprayerdesign .dw-bc .dw-bc-link:focus {
  color: var(--rubric);
}
body.dwlatinprayerdesign .dw-bc .dw-bc-item.is-current .dw-bc-text {
  color: var(--ink);
}

body.dwlatinprayerdesign {
  /* Reader is FLAT on the confession/mass hairline rhythm — no card chrome.
     The grey bordered/shadowed Bootstrap `.card` nearly vanished in dark
     mode; the reader (track pages + the prayer embedded on saint pages) now
     sits transparent with no border/shadow, the verses carrying themselves. */
}
body.dwlatinprayerdesign .dwinterlinear-prayer,
body.dwlatinprayerdesign .dwinterlinear-prayer.card {
  background: transparent;
  border: 0;
  box-shadow: none;
}
body.dwlatinprayerdesign .dwinterlinear-prayer .card-body,
body.dwlatinprayerdesign .dwinterlinear-prayer.card .card-body {
  padding: 14px 14px;
}
body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-text,
body.dwlatinprayerdesign .dwinterlinear-prayer.card .prayer-text {
  padding-top: 2px;
}
body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-block,
body.dwlatinprayerdesign .dwinterlinear-prayer.card .prayer-block {
  margin: 0;
  padding-bottom: 10px;
}
body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-line,
body.dwlatinprayerdesign .dwinterlinear-prayer.card .prayer-line {
  margin: 0;
  line-height: 1.55;
  font-size: var(--fs-body);
}
body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-line.prayer-line-lat,
body.dwlatinprayerdesign .dwinterlinear-prayer.card .prayer-line.prayer-line-lat {
  font-weight: var(--fw-medium);
  letter-spacing: 0.1px;
  font-style: normal;
}
body.dwlatinprayerdesign .dwinterlinear-prayer .prayer-line:not(.prayer-line-lat),
body.dwlatinprayerdesign .dwinterlinear-prayer.card .prayer-line:not(.prayer-line-lat) {
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .prayer-lang-toggle {
  /* The shared chip-bar primitive (replaces the bespoke mint pills) */
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
body.dwlatinprayerdesign .prayer-lang-toggle .prayer-lang-btn {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .prayer-lang-toggle .prayer-lang-btn:hover, body.dwlatinprayerdesign .prayer-lang-toggle .prayer-lang-btn:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .prayer-lang-toggle .prayer-lang-btn.prayer-lang-btn.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .prayer-lang-toggle .prayer-lang-btn.active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .prayer-lang-toggle {
  width: 100%;
  /* Override Bootstrap btn-group margins so each chip stands on its own */
}
body.dwlatinprayerdesign .prayer-lang-toggle.btn-group > .btn {
  margin-left: 0 !important;
}
body.dwlatinprayerdesign .prayer-lang-toggle.btn-group > .btn:not(:first-child),
body.dwlatinprayerdesign .prayer-lang-toggle.btn-group > .btn-group:not(:first-child) {
  margin-left: 0 !important;
}
body.dwlatinprayerdesign .dw-track-next-btn.btn-primary {
  background: var(--rubric) !important;
  border-color: var(--rubric) !important;
  color: var(--on-key) !important;
}
body.dwlatinprayerdesign .dw-track-next-btn.btn-primary:visited {
  background: var(--rubric) !important;
  border-color: var(--rubric) !important;
  color: var(--on-key) !important;
}
body.dwlatinprayerdesign .dw-track-next-btn.btn-primary:hover, body.dwlatinprayerdesign .dw-track-next-btn.btn-primary:focus, body.dwlatinprayerdesign .dw-track-next-btn.btn-primary:active {
  background: var(--rubric-2) !important;
  border-color: var(--rubric-2) !important;
  color: var(--on-key) !important;
}
body.dwlatinprayerdesign .dw-track-progress {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 18px 0 22px;
}
body.dwlatinprayerdesign .dw-track-progress .dw-track-step {
  font-size: var(--fs-micro);
  color: var(--ink-mute);
  white-space: nowrap;
}
body.dwlatinprayerdesign .dw-track-progress .dw-track-bar {
  flex: 1;
  height: 4px;
  background: var(--rule);
  border-radius: 99px;
  overflow: hidden;
}
body.dwlatinprayerdesign .dw-track-progress .dw-track-bar i {
  display: block;
  height: 100%;
  background: var(--rubric);
  transition: width 0.3s ease;
}
body.dwlatinprayerdesign .dw-track-next-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  border-radius: var(--r-control);
  padding: 15px;
  font-size: var(--fs-small);
  font-weight: 600;
  margin: 28px 0 14px;
}
body.dwlatinprayerdesign .dw-track-footer-row {
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .dw-track-prev-link {
  color: var(--rubric);
}
body.dwlatinprayerdesign .dw-track-list-link {
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .dw-track-list-link a {
  color: var(--rubric);
}
body.dwlatinprayerdesign {
  /* "More info" link — accent everywhere (also on track-footer pages where
     it sits in .dw-track-footer-right, NOT inside .dw-prayer-info). Without
     this it fell through to the default link colour and rendered a stray
     blue ↗ glyph — the only non-accent UI colour on the site. The ↗ is a
     <span aria-hidden> inside the <a>, so colouring the link covers it. */
}
body.dwlatinprayerdesign .dw-prayer-info-link {
  font-size: var(--fs-small);
  color: var(--rubric);
}
body.dwlatinprayerdesign .dw-prayer-info-link:hover, body.dwlatinprayerdesign .dw-prayer-info-link:focus {
  color: var(--rubric-2);
}
body.dwlatinprayerdesign .dw-prayer-info {
  border-top: 1px solid var(--rule);
  padding-top: 10px;
  margin-top: 12px;
}
body.dwlatinprayerdesign .dw-prayer-info .dw-prayer-info-link {
  color: var(--rubric);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
body.dwlatinprayerdesign {
  /* Prayer per-prayer settings panel button — reconcile the raw Bootstrap
     .btn (from the dwinterlinear plugin's own stylesheet) onto the one
     button look: flat, bordered, theme-aware, accent on hover. Same family
     as the language-switcher chip + the .lp-btn primitive. (Opt-in widget,
     not on every prayer; the rule is a no-op until it's enabled.) */
}
body.dwlatinprayerdesign .dwinterlinear-settings .btn {
  background: var(--bg-2);
  border: 1px solid var(--rule);
  color: var(--ink);
  border-radius: 0;
  box-shadow: none;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
body.dwlatinprayerdesign .dwinterlinear-settings .btn:hover, body.dwlatinprayerdesign .dwinterlinear-settings .btn:focus {
  background: var(--bg-2);
  color: var(--rubric);
  border-color: var(--rubric);
}

body.dwlatinprayerdesign .dw-tracklist-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
body.dwlatinprayerdesign .dw-tracklist-overlay-inner {
  background: var(--bg-2);
  border-radius: 0;
  width: 100%;
  max-width: 420px;
  max-height: 80vh;
  overflow-y: auto;
  padding: 1.25rem;
  position: relative;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}
body.dwlatinprayerdesign .dw-tracklist-close {
  position: absolute;
  top: 10px;
  right: 14px;
  background: none;
  border: none;
  font-size: var(--fs-heading);
  line-height: 1;
  color: var(--ink-mute);
  cursor: pointer;
  padding: 4px;
}
body.dwlatinprayerdesign .dw-tracklist-close:hover {
  color: var(--ink);
}
body.dwlatinprayerdesign .dw-tracklist-items {
  padding-top: 0.5rem;
}
body.dwlatinprayerdesign .dw-tracklist-item {
  padding: 4px 0;
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .dw-tracklist-item a {
  color: var(--rubric);
  text-decoration: none;
}
body.dwlatinprayerdesign .dw-tracklist-item a:hover {
  text-decoration: underline;
}
body.dwlatinprayerdesign .dw-tracklist-item strong a {
  color: var(--ink);
}
body.dwlatinprayerdesign .dw-tracklist-item-titlecard {
  margin-top: 0.5rem;
}
body.dwlatinprayerdesign .dw-tracklist-item-titlecard a {
  color: var(--ink);
  font-weight: 600;
}

/* ============================================================
   Polish — Tracks index page (post-type-archive-dw_track).
   Apply the design's page-head + .lp-mystery card pattern so the
   page feels consistent with /prayers/. The 4 mystery tracks live
   in Bootstrap col-6/col-md-4 cards.
   ============================================================ */
body.dwlatinprayerdesign.post-type-archive-dw_track .page-title {
  font-family: var(--display) !important;
  font-style: italic;
  font-weight: 500;
  font-size: var(--fs-display);
  line-height: 0.96;
  letter-spacing: -0.012em;
  margin: 56px 0 32px !important;
  color: var(--ink);
}
body.dwlatinprayerdesign.post-type-archive-dw_track {
  /* Card grid: keep Bootstrap col layout but restyle the cards */
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .card {
  background: var(--bg) !important;
  border: 1px solid var(--rule) !important;
  box-shadow: none !important;
  transition: background 0.15s, border-color 0.15s !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .card:hover {
  background: var(--bg-2) !important;
  border-color: var(--rubric) !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .card-body {
  padding: 28px 24px 30px !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .card-title {
  font-family: var(--display) !important;
  font-style: italic !important;
  font-weight: 500 !important;
  font-size: var(--fs-heading) !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
  color: var(--rubric) !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .card-title a {
  color: inherit !important;
  text-decoration: none !important;
  border: 0 !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .dw-card-date,
body.dwlatinprayerdesign.post-type-archive-dw_track article.dw_track .dw-card-meta {
  font-family: var(--mono) !important;
  font-size: var(--fs-micro) !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--ink-mute) !important;
}
body.dwlatinprayerdesign.post-type-archive-dw_track {
  /* Add a closing glyph rule below the grid */
}
body.dwlatinprayerdesign.post-type-archive-dw_track .row + .row,
body.dwlatinprayerdesign.post-type-archive-dw_track .archive-posttype-dw_track main > .row {
  margin-top: 48px;
}

body.dwlatinprayerdesign .widget_dw_featured_saint_widget,
body.dwlatinprayerdesign .widget_dw_saints_grid_widget,
body.dwlatinprayerdesign .widget_dw_saints_search_widget {
  max-width: var(--read);
  margin-left: auto;
  margin-right: auto;
}
body.dwlatinprayerdesign .dw-saints-search-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 0 0.75rem;
}
body.dwlatinprayerdesign .dw-saints-title {
  margin: 0;
}
body.dwlatinprayerdesign .dw-saints-search-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: var(--fs-small);
  cursor: pointer;
}
body.dwlatinprayerdesign .dw-saints-search-btn:hover {
  border-color: var(--rubric);
  color: var(--rubric);
}
@media (max-width: 480px) {
  body.dwlatinprayerdesign .dw-saints-search-btn-label {
    display: none;
  }
  body.dwlatinprayerdesign .dw-saints-search-btn {
    padding: 6px 8px;
  }
}
body.dwlatinprayerdesign .dw-saints-search-panel {
  display: none;
  margin-bottom: 1rem;
}
body.dwlatinprayerdesign .dw-saints-search-panel.dw-saints-search-panel--open {
  display: block;
}
body.dwlatinprayerdesign .dw-saints-search-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 0.75rem;
}
body.dwlatinprayerdesign .dw-saints-search-tab {
  padding: 8px 14px;
  border: none;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--ink-mute);
  font-size: var(--fs-small);
  cursor: pointer;
}
body.dwlatinprayerdesign .dw-saints-search-tab:hover {
  color: var(--ink);
}
body.dwlatinprayerdesign .dw-saints-search-tab.dw-saints-search-tab--active {
  color: var(--ink);
  border-bottom-color: var(--rubric);
  font-weight: 600;
}
body.dwlatinprayerdesign .dw-saints-search-filter-wrap {
  margin-bottom: 0.75rem;
}
body.dwlatinprayerdesign .dw-saints-search-filter-input {
  width: 100%;
  padding: 6px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  font-size: var(--fs-small);
}
body.dwlatinprayerdesign .dw-saints-search-filter-input:focus {
  outline: none;
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dw-saints-search-clear-btn {
  margin-top: 6px;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: transparent;
  color: var(--ink-mute);
  font-size: var(--fs-micro);
  cursor: pointer;
}
body.dwlatinprayerdesign .dw-saints-search-clear-btn:hover {
  color: var(--ink);
}
body.dwlatinprayerdesign .dw-saints-search-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 1rem;
}
body.dwlatinprayerdesign .dw-saints-search-chip {
  padding: 5px 12px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: var(--fs-micro);
  cursor: pointer;
  white-space: nowrap;
}
body.dwlatinprayerdesign .dw-saints-search-chip:hover {
  border-color: var(--rubric);
  color: var(--rubric);
}
body.dwlatinprayerdesign .dw-saints-search-chip.dw-saints-search-chip--active {
  background: var(--rubric);
  border-color: var(--rubric);
  color: var(--on-key);
}
body.dwlatinprayerdesign .dw-saints-search-result-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px;
  list-style: none;
  padding: 0;
  margin: 0;
}
body.dwlatinprayerdesign .dw-saints-search-result {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--ink);
  border: 1px solid var(--rule);
  border-radius: 0;
  overflow: hidden;
  background: var(--bg-2);
  transition: border-color 0.15s;
}
body.dwlatinprayerdesign .dw-saints-search-result:hover {
  border-color: var(--rubric);
}
body.dwlatinprayerdesign .dw-saints-search-result-thumb {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  display: block;
}
body.dwlatinprayerdesign .dw-saints-search-result-name {
  padding: 8px 10px 2px;
  font-weight: 600;
  font-size: var(--fs-small);
  line-height: 1.3;
}
body.dwlatinprayerdesign .dw-saints-search-result-feast {
  padding: 0 10px 8px;
  font-size: var(--fs-micro);
  color: var(--ink-mute);
}
body.dwlatinprayerdesign .dw-saints-search-result-prayer {
  display: inline-block;
  margin: 0 10px 8px;
  padding: 2px 6px;
  background: var(--rubric);
  color: var(--on-key);
  border-radius: 0;
  font-size: var(--fs-micro);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
body.dwlatinprayerdesign .dw-saints-search-filter-empty {
  padding: 1rem 0;
  color: var(--ink-mute);
  font-size: var(--fs-small);
}

.dwlp-confession {
  max-width: var(--read, 720px);
  margin: 0 auto;
}
.dwlp-confession__bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.dwlp-confession__bar .dwlp-confession__action {
  font: inherit;
  font-size: var(--fs-small);
  line-height: 1.2;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  border-radius: 0;
  background: var(--bg-2);
  color: var(--ink);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
.dwlp-confession__bar .dwlp-confession__action:hover, .dwlp-confession__bar .dwlp-confession__action:focus {
  border-color: var(--rubric);
  color: var(--rubric);
  text-decoration: none;
}
.dwlp-confession__bar .dwlp-confession__action.dwlp-confession__action.is-active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
.dwlp-confession__bar .dwlp-confession__action.is-active {
  background: var(--rubric);
  color: var(--on-key);
  border-color: var(--rubric);
}
.dwlp-confession__bar {
  padding: 10px 0;
  margin-bottom: 6px;
  border-bottom: 1px solid var(--rule);
}
.dwlp-confession__note {
  flex: 1 1 260px;
  margin: 0;
  color: var(--ink-mute);
  font-size: var(--fs-small);
}
.dwlp-confession__cat-title {
  font-weight: 600;
}
.dwlp-confession .lp-disclosure-group > .lp-disclosure:first-child {
  border-top: 0;
}
.dwlp-confession__q-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.dwlp-confession__q {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.dwlp-confession__q-label {
  flex: 1 1 auto;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 9px 0;
  cursor: pointer;
}
.dwlp-confession__box {
  margin-top: 4px;
  flex: none;
  width: 18px;
  height: 18px;
  accent-color: var(--rubric);
}
.dwlp-confession__q-admit {
  display: none;
}
.dwlp-confession__q.is-checked .dwlp-confession__q-ask {
  display: none;
}
.dwlp-confession__q.is-checked .dwlp-confession__q-admit {
  display: inline;
}
.dwlp-confession__grave-star {
  margin-left: 3px;
  color: var(--rubric);
  font-weight: 700;
  vertical-align: super;
  font-size: 0.8em;
  line-height: 1;
}
.dwlp-confession.is-reviewing .dwlp-confession__grave-note,
.dwlp-confession.is-reviewing .dwlp-confession__rite,
.dwlp-confession.is-reviewing .dwlp-confession__list {
  display: none;
}
.dwlp-confession__review-head {
  font-size: var(--fs-body);
  font-weight: 600;
  margin: 8px 0;
}
.dwlp-confession__review-item {
  padding: 8px 0;
}
.dwlp-confession__review-item::before {
  content: "•";
  color: var(--rubric);
  margin-right: 8px;
}
.dwlp-confession .t {
  display: none;
}
.dwlp-confession .t.is-shown {
  display: inline;
}
.dwlp-confession__cat-title .t.la {
  display: block;
  font-style: italic;
  color: var(--rubric);
  font-weight: 400;
  font-size: var(--fs-small);
}
.dwlp-confession__rite-part {
  padding: 4px 0 10px;
}
.dwlp-confession__rite-part + .dwlp-confession__rite-part {
  padding-top: 10px;
}
.dwlp-confession__rite-title {
  font-size: var(--fs-small);
  font-weight: 600;
  margin: 8px 0 6px;
}
.dwlp-confession__rite-line {
  margin: 0 0 8px;
  font-weight: var(--fw-regular);
}
.dwlp-confession__rite-line .t.la {
  display: block;
  color: var(--rubric);
  font-style: italic;
}
.dwlp-confession__rite-line .t.is-shown {
  display: block;
}

.dwlp-mass {
  max-width: var(--read, 720px);
  margin: 0 auto;
}
.dwlp-mass__note {
  color: var(--ink-soft);
  font-size: var(--fs-small);
  margin: 0 0 14px;
  max-width: var(--read, 720px);
}
.dwlp-mass .t {
  display: none;
}
.dwlp-mass .t.is-shown {
  display: inline;
}
.dwlp-mass__line {
  margin: 0;
  padding: 7px 0;
  line-height: 1.5;
}
.dwlp-mass__line .t.la {
  display: block;
  color: var(--ink);
  font-weight: var(--fw-medium);
}
.dwlp-mass__line .t.is-shown:not(.la) {
  display: block;
  font-size: var(--fs-small);
  color: var(--ink-soft);
}
.dwlp-mass__ref {
  margin: 2px 0;
  font-size: var(--fs-small);
  color: var(--ink-soft);
}

body.dwlatinprayerdesign.lp-path-mass main,
body.dwlatinprayerdesign.lp-path-mass .main,
body.dwlatinprayerdesign.lp-path-mass main.container,
body.dwlatinprayerdesign.lp-path-mass main.site-main,
body.dwlatinprayerdesign.lp-path-mass .entry-content {
  max-width: var(--wide) !important;
}
body.dwlatinprayerdesign.lp-path-mass .dwlp-mass__toc {
  display: none;
}

.dwlp-mass--explained {
  max-width: var(--wide);
}
.dwlp-mass--explained .dwlp-mass__toc {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 9px;
  margin: 0 0 4px;
  font-size: var(--fs-small);
  line-height: 1.55;
}
.dwlp-mass--explained .dwlp-mass__toc a {
  color: var(--ink-soft);
}
.dwlp-mass--explained .dwlp-mass__toc a:hover,
.dwlp-mass--explained .dwlp-mass__toc a.is-here {
  color: var(--rubric);
  text-decoration: underline;
}
.dwlp-mass--explained .dwlp-mass__toc .dot {
  color: var(--ink-mute);
  user-select: none;
}
.dwlp-mass--explained .dwlp-mass__studybar {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--bg);
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 0 12px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--rule);
}
.dwlp-mass--explained .dwlp-mass__studybar .where {
  margin: 0;
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.01em;
  min-width: 0;
}
.dwlp-mass--explained .dwlp-mass__studybar .where .cat {
  color: var(--rubric);
  font-style: italic;
  font-weight: var(--fw-medium);
}
.dwlp-mass--explained .dwlp-mass__studybar .where .arr {
  color: var(--ink-mute);
  margin: 0 7px;
}
.dwlp-mass--explained .dwlp-mass__part {
  padding: 30px 0 32px;
  border-top: 1px solid var(--rule);
  scroll-margin-top: 60px;
}
.dwlp-mass--explained .ms-head {
  display: flex;
  align-items: baseline;
  gap: 11px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.dwlp-mass--explained .ms-head h2 {
  font-size: var(--fs-subhead);
  letter-spacing: -0.015em;
  margin: 0;
}
.dwlp-mass--explained .ms-head .en {
  font-size: var(--fs-small);
  color: var(--ink-mute);
}
.dwlp-mass--explained .ms-head .ms-comm-aff {
  display: none;
}
.dwlp-mass--explained .ms-kind {
  display: inline-flex;
  align-items: center;
  font-size: var(--fs-micro);
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-mute);
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  padding: 3px 10px;
  line-height: 1.3;
}
.dwlp-mass--explained .ms-kind.is-proper {
  color: var(--rubric);
  border-color: var(--rubric);
  border-color: color-mix(in oklab, var(--rubric) 35%, var(--rule));
}
.dwlp-mass--explained .mx-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 64px;
  row-gap: 4px;
  align-items: start;
  position: relative;
}
.dwlp-mass--explained .mx-grid::before {
  content: "";
  position: absolute;
  top: 2px;
  bottom: 2px;
  left: 50%;
  width: 1px;
  background: var(--rule);
  transform: translateX(-0.5px);
}
.dwlp-mass--explained .u-text {
  min-width: 0;
}
.dwlp-mass--explained .u-text .dwlp-mass__body {
  margin: 0;
}
.dwlp-mass--explained .u-note {
  min-width: 0;
  align-self: start;
  padding-top: 8px;
  font-size: var(--fs-small);
  line-height: 1.64;
  color: var(--ink-soft);
}
.dwlp-mass--explained .u-note p {
  margin: 0;
  text-wrap: pretty;
}
.dwlp-mass--explained .u-note p + p {
  margin-top: 10px;
}
.dwlp-mass--explained .u-note .term {
  color: var(--ink);
  font-weight: var(--fw-semibold);
}
.dwlp-mass--explained .u-note em {
  color: var(--ink);
  font-style: italic;
}
@media (max-width: 820px) {
  .dwlp-mass--explained {
    max-width: var(--read, 720px);
  }
  .dwlp-mass--explained .mx-grid {
    grid-template-columns: 1fr;
    column-gap: 0;
    row-gap: 0;
  }
  .dwlp-mass--explained .mx-grid::before {
    display: none;
  }
  .dwlp-mass--explained .u-note {
    display: none;
  }
  .dwlp-mass--explained .dwlp-mass__part.is-comm-open .u-note {
    display: block;
    padding: 11px 0 20px 16px;
    border-left: 2px solid var(--rubric);
    margin-top: 6px;
  }
  .dwlp-mass--explained .ms-head {
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .dwlp-mass--explained .ms-head .ms-comm-aff {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: auto;
    font-size: var(--fs-micro);
    font-weight: var(--fw-bold);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-mute);
  }
  .dwlp-mass--explained .ms-head .ms-comm-aff::after {
    content: "";
    width: 7px;
    height: 7px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(-45deg);
    transition: transform 0.15s;
  }
  .dwlp-mass--explained .dwlp-mass__part.is-comm-open .ms-head .ms-comm-aff {
    color: var(--rubric);
  }
  .dwlp-mass--explained .dwlp-mass__part.is-comm-open .ms-head .ms-comm-aff::after {
    transform: rotate(45deg);
  }
  .dwlp-mass--explained .dwlp-mass__studybar {
    position: static;
  }
  .dwlp-mass--explained .dwlp-mass__studybar .where {
    font-size: var(--fs-small);
  }
}

/* ============================================================
   Latin Prayer — App page (/en/app/)
   WHAT: all styles for the dedicated app marketing page.
   WHY:  one self-contained partial, scoped to body.lp-path-app,
         so nothing leaks to other pages. Faithful port of
         lp/App.html (Claude Design 019dd35b): a centred hero, then
         one real app screenshot per feature in a plain phone frame,
         alternating sides on desktop and stacking (sliced phone) on
         mobile. No scroll-jacking.
   DEPENDS ON: _tokens.scss (--ink, --rubric, --rule, etc.)
              · _base.scss (.store / .stores primitive, shared w/ home)
   TESTED BY: wp-local latinprayer /en/app/ visual check (Playwright)
   ============================================================ */
/* Token aliases: the design uses shorter names; map once here so the
   rest of the partial reads cleanly. */
body.dwlatinprayerdesign.lp-path-app {
  --fg: var(--ink);
  --fg-2: var(--ink-soft);
  --fg-3: var(--ink-mute);
  --key: var(--rubric);
  --line: var(--rule);
  --line-2: var(--rule-soft);
}

/* ============================================================
   HR dividers
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app .hr {
  border: 0;
  border-top: 1px solid var(--line);
  margin: 56px 0;
}

/* Store badge buttons (.stores / .store): the primitive lives in
   _base.scss — shared with the homepage hero, rendered by one PHP helper
   (dwappsplash_store_buttons()). Only positional overrides here. */
/* ============================================================
   Hero — centred
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app .app-hero {
  text-align: center;
  max-width: 40ch;
  margin: 8px auto 0;
}
body.dwlatinprayerdesign.lp-path-app .app-hero h1 {
  font-family: var(--font-sans);
  font-size: var(--fs-hero);
  line-height: 0.98;
  letter-spacing: -0.038em;
  margin: 14px 0 22px;
  font-weight: 800;
  /* the ONE title accent — oxblood, sans, italic (never serif) */
}
body.dwlatinprayerdesign.lp-path-app .app-hero h1 .it {
  color: var(--key);
  font-style: italic;
  font-weight: 700;
}
body.dwlatinprayerdesign.lp-path-app .app-hero .lede {
  font-size: var(--fs-subhead);
  color: var(--fg-2);
  line-height: 1.6;
  max-width: 50ch;
  margin: 0 auto 28px;
}
body.dwlatinprayerdesign.lp-path-app .app-hero .stores {
  justify-content: center;
}
body.dwlatinprayerdesign.lp-path-app .app-hero .tiny {
  margin-top: 18px;
  font-size: var(--fs-small);
  color: var(--fg-3);
  letter-spacing: 0.01em;
}
body.dwlatinprayerdesign.lp-path-app .app-hero .tiny b {
  color: var(--fg-2);
  font-weight: 600;
}

/* ============================================================
   Phone frame — a dark bezel around one real screenshot
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app .phone {
  width: 274px;
  background: #0d0d0f;
  border-radius: 42px;
  padding: 10px;
  box-shadow: 0 40px 70px -38px rgba(0, 0, 0, 0.5), 0 12px 28px -18px rgba(0, 0, 0, 0.32);
  flex: none;
  /* Clip the screenshot to the frame's rounded corners. The image's own
     border-radius is not honoured here (a base/reboot img rule wins), so the
     frame does the clipping: the 10px black padding reads as the bezel and
     the screen corners follow the device curve. box-shadow is the element's
     own and is unaffected by overflow. */
  overflow: hidden;
}
body.dwlatinprayerdesign.lp-path-app .phone img {
  display: block;
  width: 100%;
  border-radius: 32px;
}

/* ============================================================
   Feature rows — screenshot + copy, alternating sides
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app .features {
  display: flex;
  flex-direction: column;
  gap: 96px;
  margin: 12px 0 8px;
}
body.dwlatinprayerdesign.lp-path-app {
  /* .app-feature, not .feature: the global .feature-row primitive is an
     unrelated nav-row pattern — keep this marketing block on its own name. */
}
body.dwlatinprayerdesign.lp-path-app .app-feature {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}
body.dwlatinprayerdesign.lp-path-app .app-feature .feature-media {
  display: flex;
  justify-content: center;
}
body.dwlatinprayerdesign.lp-path-app .app-feature {
  /* Even rows: screenshot to the right of the copy. */
}
body.dwlatinprayerdesign.lp-path-app .app-feature:nth-child(even) .feature-media {
  order: 2;
}
body.dwlatinprayerdesign.lp-path-app .app-feature .k {
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--key);
  margin: 0 0 12px;
}
body.dwlatinprayerdesign.lp-path-app .app-feature h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.06;
  margin: 0 0 16px;
}
body.dwlatinprayerdesign.lp-path-app .app-feature p.d {
  font-size: var(--fs-subhead);
  color: var(--fg-2);
  line-height: 1.62;
  max-width: 42ch;
  margin: 0 0 22px;
}
body.dwlatinprayerdesign.lp-path-app .app-feature .pts {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0;
  margin: 0;
}
body.dwlatinprayerdesign.lp-path-app .app-feature .pts li {
  display: flex;
  gap: 11px;
  align-items: flex-start;
  font-size: var(--fs-small);
  color: var(--fg);
  list-style: none;
  line-height: 1.4;
}
body.dwlatinprayerdesign.lp-path-app .app-feature .pts li svg {
  width: 17px;
  height: 17px;
  color: var(--key);
  flex: none;
  margin-top: 2px;
}

/* ============================================================
   Philosophy band   (.band)
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app .band {
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  padding: 44px 44px 40px;
}
body.dwlatinprayerdesign.lp-path-app .band .lead {
  font-size: var(--fs-micro);
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--key);
  margin: 0 0 8px;
}
body.dwlatinprayerdesign.lp-path-app .band h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.08;
  margin: 0 0 30px;
  max-width: 22ch;
}
body.dwlatinprayerdesign.lp-path-app .band-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
  /* .it here is a grid ITEM wrapper (not the oxblood accent word). */
}
body.dwlatinprayerdesign.lp-path-app .band-grid .it h3 {
  font-size: var(--fs-subhead);
  font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 5px;
}
body.dwlatinprayerdesign.lp-path-app .band-grid .it p {
  font-size: var(--fs-small);
  color: var(--fg-2);
  line-height: 1.55;
  margin: 0;
}

/* ============================================================
   Final CTA   (.cta)
   ============================================================ */
body.dwlatinprayerdesign.lp-path-app {
  /* .app-cta, not .cta: the global .cta primitive is an inline arrow link —
     keep this closing-CTA section on its own name to avoid the collision. */
}
body.dwlatinprayerdesign.lp-path-app .app-cta {
  text-align: center;
  padding: 14px 0 4px;
}
body.dwlatinprayerdesign.lp-path-app .app-cta h2 {
  font-family: var(--font-sans);
  font-size: var(--fs-display);
  font-weight: 800;
  letter-spacing: -0.035em;
  line-height: 1.04;
  margin: 0 0 10px;
  /* the ONE title accent — oxblood, sans, italic (never serif) */
}
body.dwlatinprayerdesign.lp-path-app .app-cta h2 .it {
  color: var(--key);
  font-style: italic;
}
body.dwlatinprayerdesign.lp-path-app .app-cta p {
  font-size: var(--fs-body);
  color: var(--fg-2);
  margin: 0 0 26px;
}
body.dwlatinprayerdesign.lp-path-app .app-cta .stores {
  justify-content: center;
}

/* ============================================================
   Responsive — tablet & phone
   On phones the device is sliced down the middle: only its LEFT
   half bleeds in from the screen edge, beside the copy, with a
   grey "cut line" where it's sliced.
   ============================================================ */
@media (max-width: 820px) {
  body.dwlatinprayerdesign.lp-path-app .app-hero h1 {
    font-size: var(--fs-display);
  }
  body.dwlatinprayerdesign.lp-path-app .features {
    gap: 60px;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature {
    display: block;
    position: relative;
    min-height: 520px;
    padding-left: 130px; /* clear the sliced phone on the left */
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature h2 {
    font-size: var(--fs-heading);
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature p.d {
    max-width: none;
    margin: 0 0 22px;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .pts {
    align-items: flex-start;
    max-width: none;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .feature-text {
    text-align: left;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .feature-media {
    position: absolute;
    top: 0;
    left: -22px; /* reach the left screen edge past the page gutter */
    width: 112px; /* half the phone */
    overflow: hidden;
    border-right: 2px solid var(--rule-strong, #b9b4ab); /* the cut line */
    box-shadow: inset -3px 0 6px -3px rgba(0, 0, 0, 0.22);
    display: block;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .phone {
    width: 224px;
    margin-left: 0; /* show the LEFT half */
    box-shadow: none;
  }
  body.dwlatinprayerdesign.lp-path-app .band-grid {
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
  body.dwlatinprayerdesign.lp-path-app .band {
    padding: 32px 26px;
  }
}
@media (max-width: 480px) {
  body.dwlatinprayerdesign.lp-path-app .app-hero h1 {
    font-size: var(--fs-display);
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature {
    padding-left: 116px;
    min-height: 470px;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .feature-media {
    width: 100px;
  }
  body.dwlatinprayerdesign.lp-path-app .app-feature .phone {
    width: 200px;
    margin-left: 0;
  }
  body.dwlatinprayerdesign.lp-path-app .band-grid {
    grid-template-columns: 1fr;
  }
}
