/* TorahSages — Laining section (/laining index + per-parsha). Mobile-first.
 * Ta'amim-capable Hebrew stack (cantillation): many fonts drop trop — verify on-device (spec §5). */
.laining-text-font,
.aliyah-text,
.laining-he,
.lc-he { font-family: 'Taamey Frank CLM', 'SBL Hebrew', 'Ezra SIL', 'Frank Ruhl Libre', 'Cardo', serif; }

/* ---- index ---- */
.laining-index .title .laining-sub { display:block; font-size:.55em; color:var(--ink-soft); font-weight:400; margin-top:4px; }
.laining-meta { color:var(--ink-soft); font-size:16px; margin:0 0 26px; }
.laining-thisweek { margin:-14px 0 24px; padding:11px 16px; background:var(--paper); border:1px solid var(--rule);
  border-inline-start:3px solid var(--gold); font-size:16px; color:var(--ink-soft); }
.laining-thisweek .tw-label { color:var(--gold-deep); font-weight:600; }
.laining-thisweek a { color:var(--gold-deep); font-weight:600; text-decoration:none; }
.laining-thisweek a:hover { text-decoration:underline; }
.laining-book { margin:0 0 30px; }
.laining-book-head { font-family:'Cormorant Garamond',serif; font-size:26px; font-weight:700; color:var(--gold-deep);
  border-bottom:1px solid var(--rule); padding-bottom:8px; margin:0 0 16px; }
.laining-book-head .laining-he { font-size:.8em; color:var(--ink-faint); margin-inline-start:8px; }
.laining-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
.laining-card { display:flex; flex-direction:column; gap:3px; padding:13px 14px; text-decoration:none;
  background:var(--paper); border:1px solid var(--rule); transition:border-color .15s,background .15s; }
.laining-card:hover { border-color:var(--gold); }
.laining-card .lc-en { font-family:'Cormorant Garamond',serif; font-size:18px; font-weight:600; color:var(--ink); }
.laining-card .lc-he { font-size:17px; color:var(--ink-soft); direction:rtl; }
.laining-card .lc-loc { font-family:'Heebo',sans-serif; font-size:12.5px; color:var(--ink-faint); line-height:1.45; }
.laining-card .lc-loc-day { font-weight:600; color:var(--ink-soft); }
.laining-section-note { font-family:'Heebo',sans-serif; font-size:13.5px; color:var(--ink-faint); margin:-8px 0 14px; }
.laining-grid-haft { grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); }
.laining-haftarot .laining-special-group { margin-top:20px; }

/* ---- per-parsha ---- */
.laining-single .title .laining-he { color:var(--ink-faint); font-weight:400; }
.laining-desc { color:var(--ink-soft); font-size:17px; line-height:1.6; margin:0 0 24px; max-width:60ch; }
.aliyah { margin:0 0 30px; padding:0 0 22px; border-bottom:1px solid var(--rule); }
.aliyah-head { display:flex; align-items:baseline; gap:12px; margin:0 0 10px; }
.aliyah-head h2 { font-family:'Cormorant Garamond',serif; font-size:23px; font-weight:700; color:var(--gold-deep); margin:0; }
.aliyah-range { font-size:14px; color:var(--ink-faint); letter-spacing:.02em; }
.aliyah-audio { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:0 0 14px;
  padding:10px 14px; background:var(--paper); border:1px solid var(--rule); border-radius:2px; font-size:14px; }
.aliyah-audio.is-free { border-inline-start:3px solid var(--gold); }
.aliyah-audio .audio-note { color:var(--gold-deep); font-weight:600; }
.aliyah-audio .audio-lock { color:var(--ink-faint); }
.aliyah-audio .audio-cta { color:var(--gold-deep); font-weight:600; text-decoration:none; margin-inline-start:auto; }
.aliyah-audio .audio-cta:hover { text-decoration:underline; }

/* the laining text — pointed + cantillated, RTL, generous line-height for trop legibility */
.aliyah-text { direction:rtl; font-size:23px; line-height:2.05; color:var(--ink); text-align:right; }
.aliyah-text .lv { }
.aliyah-text .lv-n { font-family:'Spectral',serif; font-size:11px; color:var(--gold); vertical-align:super;
  margin-inline-start:2px; margin-inline-end:1px; direction:ltr; unicode-bidi:isolate; }
.aliyah-text .lv.is-current { background:rgba(156,124,58,.14); border-radius:2px; } /* karaoke seam (§9), dormant */
.aliyah-text .lv-gap { color:var(--ink-faint); letter-spacing:.15em; margin:0 .3em; opacity:.6; } /* non-contiguous haftarah break */
.aliyah-maftir .aliyah-head h2, .aliyah-haftarah .aliyah-head h2 { color:var(--ink); }
.aliyah-haftarah { background:rgba(156,124,58,.04); margin-inline:-14px; padding-inline:14px; } /* haftarah set apart */

/* Soft-launch: under-player contribute line (moment-of-value placement, travels with the pinned card). */
.rp-support { display:block; margin-top:8px; font-family:'Heebo',sans-serif; font-size:12.5px;
  font-weight:500; color:var(--gold-deep); text-decoration:none; text-align:center; }
.rp-support:hover { text-decoration:underline; }

/* Soft-launch: per-unit coming-soon note + the page-level coming-soon card (Phase-3 notify slot inside). */
.aliyah-audio .audio-coming { color:var(--ink-faint); font-weight:500; }
.coming-soon-card { display:flex; gap:14px; align-items:flex-start; margin:8px 0 26px; padding:18px 20px;
  background:var(--paper); border:1px solid var(--rule); border-radius:12px;
  border-inline-start:3px solid var(--gold-deep); }
.coming-soon-card .cs-icon { flex:0 0 auto; width:26px; height:26px; color:var(--gold-deep); margin-top:2px; }
.coming-soon-card .cs-head { font-family:'Heebo',sans-serif; font-weight:700; font-size:15.5px;
  color:var(--ink); margin:0 0 4px; }
.coming-soon-card .cs-msg { font-family:'Heebo',sans-serif; font-size:14px; line-height:1.6;
  color:var(--ink-soft); margin:0; }
.coming-soon-card .cs-link { font-family:'Heebo',sans-serif; font-size:13.5px; margin:8px 0 0; }
.coming-soon-card .cs-link a { color:var(--gold-deep); font-weight:600; }
.coming-soon-card .ts-notify-slot:empty { display:none; }
.coming-soon-card .ts-notify-slot { margin-top:12px; }
@media (max-width:860px){ .coming-soon-card { padding:14px 14px; } }
.laining-cta { margin:8px 0 26px; display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.laining-cta .ts-btn { display:inline-block; width:auto; padding:12px 26px; }
.laining-cta-login { font-family:'Heebo',sans-serif; font-size:14px; font-weight:500; color:var(--gold-deep); text-decoration:none; }
.laining-cta-login:hover { text-decoration:underline; }
.cta-legal { font-family:'Heebo',sans-serif; font-size:12px; color:var(--ink-faint); margin:-14px 0 24px; }
.cta-legal a { color:var(--gold-deep); text-decoration:none; }
.cta-legal a:hover { text-decoration:underline; }
.laining-adjacent { display:flex; justify-content:space-between; gap:14px; margin-top:8px;
  font-family:'Cormorant Garamond',serif; font-size:17px; }
.laining-adjacent a { color:var(--gold-deep); text-decoration:none; }
.laining-adjacent a:hover { text-decoration:underline; }
/* the same nav surfaced at the top of the reading (long pages) — quieter, rule below */
.laining-adjacent-top { margin:0 0 16px; padding-bottom:10px; border-bottom:1px solid var(--rule); font-size:15px; }
.laining-adjacent-top .adj-all { font-family:'Heebo',sans-serif; font-size:12px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-faint); }
.laining-adjacent-top .adj-all:hover { color:var(--gold-deep); }
.laining-adjacent .adj-spacer { flex:0 0 1px; }

@media(min-width:720px){ .aliyah-text { font-size:25px; } }

/* ---- reader layout: left rail + main (UI Design Spec §5.2) ---- */
.reader-grid { display:grid; grid-template-columns:200px 1fr; gap:32px; align-items:start; }
.reader-main { min-width:0; }
.reader-rail { position:sticky; top:24px; font-family:'Heebo',system-ui,sans-serif; }
.reader-rail .rail-sect { margin:0 0 20px; }
.rail-label { font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint);
  font-weight:600; margin:0 0 8px; }

/* player placeholder (real player + mobile play-bar land with Stage 3 audio) */
.rail-player { display:flex; align-items:center; gap:10px; background:var(--paper); border:1px solid var(--rule);
  border-radius:10px; padding:12px; margin:0 0 20px; }
.rail-player .rp-icon { width:34px; height:34px; border-radius:50%; background:#efe7d3; display:flex;
  align-items:center; justify-content:center; color:var(--gold-deep); flex:0 0 auto; }
.rail-player .rp-icon svg { width:15px; height:15px; fill:currentColor; }
.rail-player .rp-note { font-size:12.5px; color:var(--ink-soft); line-height:1.35; }

/* aliyah jump */
.rail-aliyot { display:flex; flex-direction:column; gap:2px; }
.rail-ali { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:13px;
  color:var(--ink-soft); padding:6px 9px; border-radius:6px; text-decoration:none; }
.rail-ali:hover { background:var(--paper); color:var(--ink); }
.rail-ali.is-active { background:#efe7d3; color:var(--gold-deep); font-weight:600; }
.rail-ali .rail-lock { width:13px; height:13px; fill:var(--ink-faint); flex:0 0 auto; }

/* display controls */
.ts-fontsize { display:flex; gap:8px; margin:0 0 12px; }
.rail-fs { flex:1; background:var(--paper); border:1px solid var(--rule); border-radius:6px; padding:7px;
  font-family:'Heebo',sans-serif; font-size:15px; color:var(--ink); cursor:pointer; }
.rail-fs:hover { border-color:var(--gold); }
.rail-fs .fs-minus, .rail-fs .fs-plus { font-size:11px; vertical-align:middle; }
.rail-toggle { width:100%; background:var(--gold-deep); color:var(--paper); border:1px solid var(--gold-deep);
  border-radius:6px; padding:8px; font-family:'Heebo',sans-serif; font-size:13px; font-weight:500; cursor:pointer; }
.rail-toggle[aria-pressed="false"] { background:transparent; color:var(--gold-deep); }
.rail-toggle + .rail-toggle { margin-top:8px; }

/* actions */
.rail-act { display:block; width:100%; background:var(--paper); border:1px solid var(--rule); border-radius:6px;
  padding:8px 10px; margin:0 0 8px; font-family:'Heebo',sans-serif; font-size:13px; color:var(--ink);
  cursor:pointer; text-align:left; }
.rail-act:hover { border-color:var(--gold); }

/* user text-size scale (reader root [data-fs]) — overrides the base .aliyah-text size */
.laining-reader[data-fs="s"]  .aliyah-text { font-size:20px; }
.laining-reader[data-fs="m"]  .aliyah-text { font-size:25px; }
.laining-reader[data-fs="l"]  .aliyah-text { font-size:31px; }
.laining-reader[data-fs="xl"] .aliyah-text { font-size:38px; }

/* Reading-tools drawer (Variant A): invisible chrome on desktop — the header button only
 * exists for phones; the body always shows on wide screens. */
.rail-tools-head { display:none; width:100%; align-items:center; gap:9px; padding:11px 14px;
  background:none; border:none; cursor:pointer; font-family:'Heebo',sans-serif; text-align:left; }
.rail-tools-head .rt-label { font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  font-weight:600; color:var(--ink-faint); }
.rail-tools-head .rt-cur { font-size:12px; font-weight:600; color:var(--gold-deep); margin-left:auto; }
.rail-tools-head .rt-chev { width:8px; height:8px; border-right:2px solid var(--ink-faint);
  border-bottom:2px solid var(--ink-faint); transform:rotate(45deg); transition:transform .18s; flex:none; }
.rail-tools.open .rail-tools-head .rt-chev { transform:rotate(-135deg); }

@media(max-width:860px){
  .reader-grid { grid-template-columns:1fr; gap:14px; }
  .reader-rail { position:static; }

  /* compact header stack — the pesukim belong in the first screen. The "Learn to Lain"
   * prefix drops to a small kicker line; the parsha name is the (modest) title. */
  .laining-single .breadcrumb { margin-bottom:10px; }
  .laining-single .title { font-size:27px; line-height:1.16; margin-bottom:10px; }
  .laining-single .title .lt-kicker { display:block; font-family:'Heebo',sans-serif; font-size:10.5px;
    letter-spacing:.15em; text-transform:uppercase; color:var(--ink-faint); font-weight:600; margin:0 0 3px; }
  .laining-adjacent-top { margin:0 0 10px; padding-bottom:8px; font-size:14px; }
  .laining-single .laining-meta { margin:0 0 10px; font-size:14px; }
  .laining-single .laining-desc { font-size:15px; margin:0 0 14px; }
  .aliyah-head { margin:0 0 6px; }
  .aliyah-head h2 { font-size:20px; }
  .aliyah-audio { margin:0 0 10px; padding:8px 12px; }
  .rail-player:not(.rail-player-live) { display:none; } /* recordings not live yet — hide the placeholder */

  /* Variant A: the live player becomes a compact card PINNED to the viewport top
   * (ts-reader.js relocates it to the head of .reader-grid so sticky spans the text). */
  .rail-player-live { position:sticky; top:0; z-index:35; margin:0; padding:8px 12px 9px;
    border-radius:0 0 12px 12px; box-shadow:0 7px 18px rgba(43,38,32,.16);
    display:grid; grid-template-columns:auto 1fr auto; gap:3px 10px; align-items:center;
    grid-template-areas:"title title title" "controls seek times"; }
  .rail-player-live .rp-title { grid-area:title; margin:0; font-size:11.5px; }
  .rail-player-live .rp-seekrow { grid-area:seek; margin:0; display:flex; align-items:center; }
  .rail-player-live .rp-times { grid-area:times; margin:0; display:flex; gap:3px; }
  .rail-player-live .rp-times .rp-cur::after { content:" /"; color:var(--ink-faint); }
  .rail-player-live .rp-controls { grid-area:controls; gap:5px; }
  .rail-player-live .rp-controls button { height:30px; }
  .rail-player-live .rp-controls .rp-play { width:36px; }
  .rail-player-live .rp-controls .rp-speed { flex:none; padding:0 8px; }
  .rail-player-live .rp-controls .rp-loop, .rail-player-live .rp-controls .rp-dl { width:32px; }
  .rail-player-live .rp-msg { display:none; }

  /* the tools drawer takes the box; collapsed by default */
  .rail-tools { background:var(--paper); border:1px solid var(--rule); border-radius:10px; }
  .rail-tools-head { display:flex; }
  .rail-tools-body { display:none; padding:2px 14px 14px; border-top:1px solid #eee7d4; }
  .rail-tools.open .rail-tools-body { display:block; }
  .rail-tools-body .rail-sect { margin:12px 0 0; }
  .rail-aliyot { flex-direction:row; flex-wrap:wrap; gap:6px; }
  .rail-ali { background:var(--parchment); border:1px solid var(--rule); }
  .rail-actions { display:flex; gap:8px; }
  .rail-act { margin:0; }
}

/* ---- special / festival readings (multi-day) ---- */
.reading-day { margin:0 0 8px; }
.day-head { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; border-bottom:2px solid var(--gold);
  padding-bottom:8px; margin:28px 0 14px; }
.day-title { font-family:'Cormorant Garamond',serif; font-size:26px; font-weight:700; color:var(--ink); margin:0; }
.day-applies { font-family:'Heebo',sans-serif; font-size:11px; font-weight:600; letter-spacing:.05em;
  text-transform:uppercase; color:var(--gold-deep); background:#efe7d3; padding:2px 9px; border-radius:20px; }
.unit-melody { font-family:'Heebo',sans-serif; font-size:12px; font-weight:600; color:var(--gold-deep);
  background:#efe7d3; padding:2px 9px; border-radius:20px; }
/* draft verification cues — shown on the staging draft; removed once ranges are verified */
.day-verify, .unit-verify { font-family:'Heebo',sans-serif; font-size:12.5px; color:#8a5a1a; background:#faf0dc;
  border:1px solid #e6cd94; border-radius:6px; padding:6px 10px; margin:0 0 12px; }
.unit-verify { margin:-2px 0 12px; }
.megillah-xref { display:flex; flex-direction:column; gap:2px; background:var(--paper); border:1px solid var(--rule);
  border-inline-start:3px solid var(--gold); border-radius:8px; padding:12px 16px; margin:0 0 22px; text-decoration:none; }
.megillah-xref:hover { border-color:var(--gold); }
.megillah-xref .mx-label { font-family:'Heebo',sans-serif; font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600; }
.megillah-xref .mx-name { font-family:'Cormorant Garamond',serif; font-size:19px; font-weight:600; color:var(--ink); }
.megillah-xref .mx-go { font-family:'Heebo',sans-serif; font-size:13px; font-weight:500; color:var(--gold-deep); }
/* ---- Stage 3: player v1 ---- */
.rail-player-live { display:block; }
.rail-player-live .rp-title { font-size:12.5px; font-weight:600; color:var(--ink); margin:0 0 8px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rp-seekrow { margin:0 0 2px; }
.rp-seek { width:100%; accent-color:var(--gold-deep); height:4px; }
.rp-times { display:flex; justify-content:space-between; font-size:10.5px; color:var(--ink-faint);
  font-variant-numeric:tabular-nums; margin:0 0 8px; }
.rp-controls { display:flex; gap:6px; align-items:center; }
.rp-controls button { height:32px; border-radius:6px; border:1px solid var(--rule); background:var(--parchment);
  color:var(--gold-deep); cursor:pointer; display:flex; align-items:center; justify-content:center; }
.rp-controls .rp-play { width:40px; background:var(--gold-deep); color:var(--paper); border-color:var(--gold-deep); }
.rp-controls .rp-speed { flex:1; font-family:'Heebo',sans-serif; font-size:12px; color:var(--ink-soft); }
.rp-controls .rp-loop, .rp-controls .rp-dl { width:36px; }
.rp-controls svg { width:16px; height:16px; fill:currentColor; }
.rp-loop[data-mode="A"] { border-color:var(--gold); background:#efe7d3; }
.rp-loop[data-mode="AB"] { border-color:var(--gold-deep); background:var(--gold-deep); color:var(--paper); }
.rp-msg { font-size:11px; color:var(--ink-faint); min-height:1.2em; margin:6px 0 0; }
.unit-play { display:inline-flex; align-items:center; gap:6px; font-family:'Heebo',sans-serif; font-size:13.5px;
  font-weight:500; background:var(--gold-deep); color:var(--paper); border:1px solid var(--gold-deep);
  border-radius:20px; padding:6px 14px; cursor:pointer; }
.unit-play svg { width:13px; height:13px; fill:currentColor; }
.unit-play.is-active { background:var(--gold); border-color:var(--gold); }
.unit-play.is-paid { display:none; }
body.ts-entitled .unit-play.is-paid { display:inline-flex; }
body.ts-entitled .aliyah-audio.has-rec .audio-lock,
body.ts-entitled .aliyah-audio.has-rec .audio-cta { display:none; }
.is-paid-only { display:none !important; }
body.ts-entitled .is-paid-only { display:flex !important; }
#ts-playbar { display:none; }
@media(max-width:860px){
  #ts-playbar { position:fixed; bottom:0; left:0; right:0; z-index:40; display:flex; align-items:center;
    justify-content:space-between; padding:8px 20px calc(8px + env(safe-area-inset-bottom));
    background:var(--paper); border-top:1px solid var(--rule); }
  #ts-playbar button { border:none; background:none; color:var(--ink-soft); cursor:pointer;
    display:flex; align-items:center; justify-content:center; }
  #ts-playbar svg { width:22px; height:22px; fill:currentColor; }
  #ts-playbar .pb-play { width:52px; height:52px; border-radius:50%; background:var(--gold-deep); color:var(--paper); }
  #ts-playbar .pb-play svg { width:24px; height:24px; }
  #ts-playbar .pb-dl { color:var(--gold-deep); }
  .laining-reader { padding-bottom:76px; } /* keep the bar clear of content */
}

/* index: special & festival readings section */
.laining-special .laining-book-head { color:var(--gold-deep); }
.laining-special-group { font-family:'Heebo',sans-serif; font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600; margin:18px 0 10px; }


/* ── berachot reference pages (Torah/Haftarah Berachos — index-level, next to Ta'amei HaMikra) ── */
.berachot-list .brch-head { font-family:'Cormorant Garamond',serif; font-size:22px; font-weight:700;
  color:var(--gold-deep); margin:26px 0 12px; text-align:left; }
.berachot-list .brch-head:first-child { margin-top:0; }
.berachot-list[dir="rtl"] .brch-head[lang="he"], .berachot-list .brch-head:not([dir="ltr"]) { text-align:right; }
.berachot-list .brch-unit { display:block; margin:0 0 18px; }
.berachot-list .brch-unit .brch-instr { font-family:'Heebo',sans-serif; font-size:13.5px; font-style:italic;
  color:var(--ink-soft); margin:0 0 4px; text-align:left; }
.berachot-list .brch-unit .brch-instr:not([dir="ltr"]) { text-align:right; }
.berachot-list .brch-unit .lv-t { display:block; white-space:pre-line; } /* keep the source's lineation */
.berachot-list .brch-unit.is-congregation { background:rgba(156,124,58,.07); border:1px solid var(--rule);
  border-radius:2px; padding:10px 14px; } /* the congregation's response, boxed like the owner's source */
.berachot-list .brch-translit { font-family:'Heebo',sans-serif; font-size:14px; font-style:italic;
  color:var(--ink-soft); margin:4px 0 0; text-align:left; }
.berachot-list .brch-pending { font-family:'Heebo',sans-serif; font-size:12.5px; color:#8a5a1a; background:#faf0dc;
  border-inline-start:3px solid #d9a441; padding:6px 10px; margin:2px 0 0; border-radius:2px; text-align:left; }

/* Back-to-top link after each aliyah/perek — mobile+tablet only (desktop has the rail nav). */
.aliyah-top { display:none; }
@media(max-width:860px){
  .aliyah-top { display:table; margin:12px auto 0; padding:7px 16px; font-size:14px;
    font-family:'Heebo',sans-serif; color:var(--gold-deep); text-decoration:none;
    border:1px solid var(--rule); border-radius:999px; background:var(--paper); }
}
