:root{
  --bg:#fbfaf8; --panel:#ffffff; --ink:#1c1b19; --muted:#6d6a64; --hair:#e5e1da;
  --a:#0f766e; --b:#b45309; --d:#be123c; --band:#0f766e1f;
  --warn-bg:#fff4e5; --warn-ink:#7c4a03; --warn-line:#e9b872;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#121311; --panel:#1b1d1a; --ink:#eceae5; --muted:#9b978e; --hair:#2e312c;
  --a:#4fd1c5; --b:#f0a437; --d:#f2708a; --band:#4fd1c526;
  --warn-bg:#2e2515; --warn-ink:#f0cf9a; --warn-line:#6b5220;
}}
:root[data-theme="dark"]{
  --bg:#121311; --panel:#1b1d1a; --ink:#eceae5; --muted:#9b978e; --hair:#2e312c;
  --a:#4fd1c5; --b:#f0a437; --d:#f2708a; --band:#4fd1c526;
  --warn-bg:#2e2515; --warn-ink:#f0cf9a; --warn-line:#6b5220;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.55 ui-sans-serif,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased}
.wrap{max-width:920px;margin:0 auto;padding:40px 22px 80px}
header{border-bottom:1px solid var(--hair);padding-bottom:22px;margin-bottom:8px}
h1{font-size:28px;line-height:1.2;margin:0 0 6px;letter-spacing:-.01em}
.sub{color:var(--muted);font-size:14px;margin:0}
h2{font-size:13px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  margin:44px 0 12px;font-weight:600}
h3{font-size:16px;margin:26px 0 4px}
h3 .meta{font-weight:400;color:var(--muted);font-size:13.5px;margin-left:6px}
p{max-width:70ch}
.lead{color:var(--muted);font-size:14px;margin:-2px 0 14px;max-width:70ch}
.verdict{background:var(--panel);border:1px solid var(--hair);border-left:4px solid var(--a);
  border-radius:10px;padding:20px 22px;margin:26px 0}
.verdict .big{font-size:30px;font-weight:680;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums}
.warn{background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-line);
  border-radius:10px;padding:14px 16px;font-size:14px;margin:22px 0}
.gate{background:var(--panel);border:1px solid var(--hair);border-left:4px solid var(--d);
  border-radius:10px;padding:18px 22px;margin:24px 0 30px}
.gate .hdr{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  margin-bottom:6px}
.gate .big{font-size:22px;font-weight:680;letter-spacing:-.01em;margin-bottom:8px}
.tblwrap{overflow-x:auto;border:1px solid var(--hair);border-radius:10px;
  background:var(--panel);margin:12px 0}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{padding:9px 13px;text-align:left;border-bottom:1px solid var(--hair);
  vertical-align:top}
th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  font-weight:600}
td.n,th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
tbody tr:last-child td{border-bottom:none}
td.day{white-space:nowrap;font-weight:600;width:9ch}

/* Week by week: a day in the past is two rows -- what was written, then what
   was actually done. The rule between the pair is suppressed so a day still
   reads as one block; the day cell spans both with rowspan, so its own border
   falls at the bottom of the pair. A future day is a single "Plan" row. */
td.pa{white-space:nowrap;width:7ch;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;font-weight:600;color:var(--muted)}
tr.plan>td:not(.day){border-bottom:none}
tr.act>td.pa{color:var(--a)}
tr.act.miss>td.pa{color:var(--muted)}
.tag{display:inline-block;padding:1px 8px;border-radius:99px;font-size:11px;
  font-weight:600;background:var(--band);color:var(--a)}
.tag.hard{background:#b4530922;color:var(--b)}
.tag.rest{background:transparent;color:var(--muted);border:1px solid var(--hair)}
.tag.key{background:#be123c1f;color:var(--d)}
.zonekey{font-size:13px;color:var(--muted);background:var(--panel);
  border:1px solid var(--hair);border-radius:10px;padding:11px 14px;margin:0 0 18px;
  max-width:none}
.zonekey b{color:var(--ink);font-weight:650}
ol,ul{max-width:70ch;padding-left:22px}
li{margin:7px 0}
strong{font-weight:650}
a{color:var(--a)}
.back{display:inline-block;font-size:14px;margin-bottom:26px}
footer{margin-top:56px;padding-top:18px;border-top:1px solid var(--hair);
  color:var(--muted);font-size:12.5px}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;
  background:var(--band);padding:1px 5px;border-radius:4px}

/* Collapsible sections. The reference material -- the analysis, the target
   time, the success criteria, the history -- is worth keeping on the page but
   is not what you open it for mid-block, so it folds away. <details> is used
   rather than a script so the page still works with JS off and so the browser's
   own find-in-page can expand a section it matches. */
details.fold{border:1px solid var(--hair);border-radius:10px;background:var(--panel);
  margin:14px 0;overflow:hidden}
details.fold>summary{cursor:pointer;list-style:none;padding:14px 18px;
  font-size:13px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  font-weight:600;display:flex;align-items:center;gap:10px;user-select:none}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:"▸";font-size:12px;color:var(--muted);
  transition:transform .15s ease;display:inline-block}
details.fold[open]>summary::before{transform:rotate(90deg)}
details.fold>summary:hover{color:var(--ink)}
details.fold>summary .note{margin-left:auto;text-transform:none;letter-spacing:0;
  font-weight:400;font-size:13px;opacity:.85}
details.fold>.body{padding:0 18px 18px;border-top:1px solid var(--hair)}
details.fold>.body>h3:first-child{margin-top:18px}
details.fold>.body>p:first-child{margin-top:16px}
