:root{
  --paper:#F3F2EC; --card:#FBFAF6; --ink:#1B1E1C; --ink-2:#4A4F4A;
  --muted:#7A7F79; --rule:#DCDAD0; --rule-2:#C9C6B9;
  --ot:#2F6154; --ot-bg:#E4EDE9;
  --nt:#8F5117; --nt-bg:#F3E9DD;
  --now:#8F5117;
  --focus:#2F6154;
  --shadow:0 1px 0 rgba(27,30,28,.05);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#15181A; --card:#1C2023; --ink:#E9E7DF; --ink-2:#BDBCB4;
    --muted:#8D918C; --rule:#2C3135; --rule-2:#3A4046;
    --ot:#7FBFAA; --ot-bg:#1D2E2A;
    --nt:#D79A5E; --nt-bg:#302319;
    --now:#D79A5E; --focus:#7FBFAA;
    --shadow:none;
  }
}
:root[data-theme="dark"]{
  --paper:#15181A; --card:#1C2023; --ink:#E9E7DF; --ink-2:#BDBCB4;
  --muted:#8D918C; --rule:#2C3135; --rule-2:#3A4046;
  --ot:#7FBFAA; --ot-bg:#1D2E2A;
  --nt:#D79A5E; --nt-bg:#302319;
  --now:#D79A5E; --focus:#7FBFAA;
  --shadow:none;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper); color:var(--ink);
  font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px; line-height:1.5;
  -webkit-text-size-adjust:100%;
  padding:0 0 4rem;
}
.wrap{max-width:46rem;margin:0 auto;padding:0 1.05rem}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:3px}

/* ---- masthead ---- */
header{padding:2.1rem 0 1.15rem}
h1{
  font-family:"Newsreader",Georgia,serif; font-weight:500;
  font-size:2.05rem; line-height:1.08; letter-spacing:-.012em;
  margin:0 0 .15rem;
}
.sub{font-size:.8rem;color:var(--muted);margin:0 0 1.1rem}
blockquote{
  margin:0 0 1.25rem; padding:0 0 0 .85rem;
  border-left:2px solid var(--rule-2);
  font-family:"Newsreader",Georgia,serif; font-style:italic;
  font-size:.96rem; line-height:1.62; color:var(--ink-2);
  max-width:34rem;
}
blockquote cite{display:block;margin-top:.4rem;font-style:normal;font-size:.76rem;
  font-family:"Public Sans",sans-serif;color:var(--muted);letter-spacing:.01em}

/* ---- progress ---- */
.meter{display:flex;align-items:baseline;gap:.55rem;margin-bottom:.4rem}
.meter b{font-family:"Newsreader",serif;font-weight:600;font-size:1.35rem;line-height:1}
.meter span{font-size:.8rem;color:var(--muted)}
.track{height:3px;background:var(--rule);border-radius:2px;overflow:hidden}
.track i{display:block;height:100%;background:var(--ot);width:0;transition:width .35s ease}

/* ---- today card ---- */
.today{
  background:var(--card); border:1px solid var(--rule);
  border-radius:4px; padding:.95rem 1rem 1rem; margin:1.5rem 0 .4rem;
  box-shadow:var(--shadow);
}
.today .tag{font-size:.72rem;color:var(--now);letter-spacing:.06em;font-weight:600}
.today h2{font-family:"Newsreader",serif;font-weight:500;font-size:1.22rem;margin:.2rem 0 .6rem}
.today .none{color:var(--muted);font-size:.9rem;margin:.3rem 0 0}

/* ---- spine + weeks ---- */
.plan{position:relative;margin-top:1.9rem;padding-left:2.4rem}
.plan::before{
  content:"";position:absolute;left:.92rem;top:.4rem;bottom:.4rem;
  width:1px;background:var(--rule-2);
}
.wk{position:relative;margin-bottom:.35rem}
.node{
  position:absolute;left:-2.4rem;top:.62rem;width:1.85rem;height:1.85rem;
  border-radius:50%;background:var(--paper);border:1px solid var(--rule-2);
  display:grid;place-items:center;font-size:.76rem;font-weight:600;color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.wk[data-state="done"] .node{background:var(--ot);border-color:var(--ot);color:var(--paper)}
.wk[data-state="now"] .node{border-color:var(--now);color:var(--now);border-width:2px}
.bar{
  width:100%;display:flex;align-items:center;gap:.7rem;text-align:left;
  background:var(--card);border:1px solid var(--rule);border-radius:4px;
  padding:.72rem .8rem;box-shadow:var(--shadow);
}
.bar:hover{border-color:var(--rule-2)}
.wk[data-state="now"] .bar{border-color:var(--now)}
.bar .t{flex:1;min-width:0}
.bar .t strong{
  display:block;font-family:"Newsreader",serif;font-weight:500;
  font-size:1.02rem;line-height:1.25;
}
.bar .t em{
  display:block;font-style:normal;font-size:.745rem;color:var(--muted);
  margin-top:.16rem;font-variant-numeric:tabular-nums;
}
.pips{display:flex;gap:2px;flex:0 0 auto}
.pips i{width:5px;height:5px;border-radius:50%;background:var(--rule-2)}
.pips i.on{background:var(--ot)}
.chev{flex:0 0 auto;color:var(--muted);transition:transform .2s ease;font-size:.78rem}
.wk.open .chev{transform:rotate(90deg)}
.days{display:none;padding:.15rem 0 .85rem}
.wk.open .days{display:block}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---- day rows ---- */
.day{display:flex;gap:.6rem;padding:.6rem .1rem .6rem .8rem;border-bottom:1px solid var(--rule)}
.day:last-child{border-bottom:none}
.day.is-today{box-shadow:inset 2px 0 0 var(--now);border-radius:2px}
.chk{
  flex:0 0 auto;width:1.2rem;height:1.2rem;margin-top:.18rem;border-radius:3px;
  border:1.5px solid var(--rule-2);display:grid;place-items:center;
  font-size:.7rem;line-height:1;color:transparent;
}
.chk[aria-pressed="true"]{background:var(--ot);border-color:var(--ot);color:var(--paper)}
.day .body{flex:1;min-width:0}
.dname{font-size:.735rem;color:var(--muted);font-weight:600;letter-spacing:.015em}
.dname b{color:var(--now);font-weight:600}
.refs{margin:.28rem 0 0;display:flex;flex-wrap:wrap;gap:.3rem}
.ref{
  font-family:"Newsreader",serif;font-size:.93rem;line-height:1.25;
  text-decoration:none;padding:.2rem .45rem;border-radius:3px;
  border:1px solid transparent;
}
.ref.ot{background:var(--ot-bg);color:var(--ot)}
.ref.nt{background:var(--nt-bg);color:var(--nt)}
.ref:hover{border-color:currentColor}
.note{margin:.26rem 0 0;font-family:"Newsreader",serif;font-size:.93rem;
  color:var(--ink-2);line-height:1.5;max-width:38rem}
.done .refs .ref,.done .note{opacity:.45}

/* ---- legend / settings ---- */
.legend{display:flex;gap:.9rem;font-size:.74rem;color:var(--muted);margin:1.2rem 0 0;
  flex-wrap:wrap;align-items:center}
.legend s{width:.6rem;height:.6rem;border-radius:2px;display:inline-block;
  margin-right:.32rem;vertical-align:-1px}
details.set{margin-top:1.6rem;border-top:1px solid var(--rule);padding-top:.9rem}
details.set summary{font-size:.8rem;color:var(--muted);cursor:pointer;list-style:none}
details.set summary::-webkit-details-marker{display:none}
details.set summary::before{content:"+ ";}
details.set[open] summary::before{content:"– ";}
.field{margin-top:.9rem;font-size:.82rem;color:var(--ink-2)}
.field label{display:block;margin-bottom:.3rem;color:var(--muted);font-size:.74rem}
select,input[type=date]{
  font:inherit;font-size:.86rem;padding:.4rem .5rem;border:1px solid var(--rule-2);
  border-radius:3px;background:var(--card);color:var(--ink);max-width:14rem;width:100%;
}
.danger{margin-top:1rem;font-size:.8rem;color:var(--muted);text-decoration:underline}
footer{margin-top:1.6rem;font-size:.72rem;color:var(--muted);line-height:1.6}
.sync{font-size:.72rem;color:var(--muted);margin-top:.5rem}
.pre{
  margin:1.6rem 0 0;padding:.7rem .8rem;border:1px dashed var(--rule-2);
  border-radius:4px;font-size:.84rem;color:var(--ink-2);
}
.pre b{font-family:"Newsreader",serif;font-weight:500;font-size:.95rem;color:var(--ink)}
/* ---- day actions ---- */
.acts{display:flex;gap:.5rem;align-items:center;margin-top:.45rem;flex-wrap:wrap}
.read-btn{
  font-size:.76rem;font-weight:600;color:var(--ot);
  border:1px solid var(--ot);border-radius:3px;padding:.24rem .6rem;
  background:transparent;
}
.read-btn:hover{background:var(--ot-bg)}
.acts .meta{font-size:.72rem;color:var(--muted)}
.ref[data-jump]{cursor:pointer}

/* ---- inline reader ---- */
.reader{
  margin:.7rem 0 .2rem;border:1px solid var(--rule-2);border-radius:4px;
  background:var(--card);overflow:hidden;
}
.rhead{
  display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;
  border-bottom:1px solid var(--rule);
}
.rhead strong{
  flex:1;min-width:0;font-family:"Newsreader",Georgia,serif;font-weight:500;
  font-size:1.02rem;
}
.rhead .of{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums;
  flex:0 0 auto}
.rhead .x{flex:0 0 auto;color:var(--muted);font-size:1rem;line-height:1;padding:.1rem .2rem}
.strip{
  display:flex;gap:3px;padding:.4rem .7rem 0;flex-wrap:wrap;
}
.strip b{
  width:1.35rem;height:.28rem;border-radius:2px;background:var(--rule);
  display:block;cursor:pointer;
}
.strip b.seen{background:var(--rule-2)}
.strip b.at{background:var(--ot)}
.passage{
  padding:.85rem .95rem 1rem;font-family:"Newsreader",Georgia,serif;
  font-size:1.03rem;line-height:1.66;color:var(--ink);
  max-width:38rem;
}
.passage p{margin:0 0 .85rem}
.passage h2,.passage h3{
  font-family:"Public Sans",sans-serif;font-size:.78rem;font-weight:600;
  color:var(--muted);margin:1.2rem 0 .5rem;letter-spacing:.01em;
}
.passage h2:first-child,.passage h3:first-child{margin-top:0}
.passage .chapter-num,.passage .verse-num{
  font-family:"Public Sans",sans-serif;font-size:.62rem;font-weight:600;
  color:var(--muted);vertical-align:.35em;padding-right:.12em;
}
.passage .chapter-num{font-size:.8rem;color:var(--ot);vertical-align:baseline}
.passage .block-indent{margin:0 0 .85rem;padding-left:1.1rem}
.passage .indent{padding-left:1.1rem}
.passage .woc{color:var(--nt)}
.passage sup.footnote{display:none}
.passage .extra_text{}
.rload,.rerr{
  padding:1.1rem .95rem;font-size:.88rem;color:var(--muted);
  font-family:"Public Sans",sans-serif;
}
.rerr{color:var(--nt)}
.rerr a{color:var(--nt)}
.rnav{
  display:flex;align-items:center;gap:.5rem;padding:.55rem .7rem;
  border-top:1px solid var(--rule);flex-wrap:wrap;
}
.rnav button{
  font-size:.78rem;font-weight:500;border:1px solid var(--rule-2);
  border-radius:3px;padding:.3rem .65rem;
}
.rnav button:hover:not(:disabled){border-color:var(--ink-2)}
.rnav button:disabled{opacity:.35;cursor:default}
.rnav .done-btn{border-color:var(--ot);color:var(--ot);font-weight:600}
.rnav .spacer{flex:1}
.rnav a{font-size:.72rem;color:var(--muted)}
.credit{
  padding:0 .95rem .8rem;font-size:.68rem;color:var(--muted);line-height:1.5;
  font-family:"Public Sans",sans-serif;
}


/* ---- week 0: the book, not the Bible ---- */
.wk-book .node{border-style:dashed}
.wk-book .bar{border-style:dashed}
.wk-book .day .note{font-style:italic;color:var(--muted);font-size:.88rem}
