/* ==========================================================================
   GROUNDWORK — the program document
   Same design language as the sales page. Built to read on screen and to
   print to PDF cleanly, because that is what the buyer actually receives.
   ========================================================================== */

:root{
  --paper:      oklch(0.965 0.008 85);
  --paper-deep: oklch(0.935 0.011 82);
  --card:       oklch(0.995 0.004 85);
  --ink:        oklch(0.245 0.012 60);
  --ink-soft:   oklch(0.415 0.010 60);
  --ink-mute:   oklch(0.545 0.009 60);
  --rule:       oklch(0.245 0.012 60 / 0.12);
  --rule-firm:  oklch(0.245 0.012 60 / 0.22);
  --moss:       oklch(0.455 0.072 132);
  --moss-deep:  oklch(0.365 0.065 132);
  --moss-wash:  oklch(0.455 0.072 132 / 0.07);

  --display:"Instrument Serif",Georgia,serif;
  --sans:"Inter",system-ui,-apple-system,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --ease:cubic-bezier(0.22,1,0.36,1);
}

*,*::before,*::after{ box-sizing:border-box; }

body{
  margin:0;
  background:var(--paper-deep);
  color:var(--ink-soft);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3{ font-family:var(--display); color:var(--ink); font-weight:400; margin:0; }
h2{ font-size:clamp(30px,4vw,44px); line-height:1.06; letter-spacing:-0.015em; }
h3{
  font-family:var(--sans); font-weight:600; font-size:17px;
  letter-spacing:0.005em; color:var(--ink);
  margin:38px 0 14px;
}
p{ margin:0 0 1.05em; }
p:last-child{ margin-bottom:0; }
strong{ color:var(--ink); font-weight:600; }
em{ font-style:italic; }
i{ font-style:normal; color:var(--ink-mute); font-size:0.86em; }
a{ color:var(--moss-deep); }

.mono{ font-family:var(--mono); font-variant-numeric:tabular-nums; }
.link{ color:var(--moss); font-size:0.85em; margin-right:5px; }

/* ---------------------------------------------------------- doc nav */

.doknav{
  position:sticky; top:0; z-index:30;
  display:flex; align-items:center; gap:22px; flex-wrap:wrap;
  padding:0 26px; height:56px;
  background:oklch(0.245 0.012 60);
  color:oklch(0.965 0.008 85 / 0.72);
  font-size:13.5px;
}
.doknav-brand{
  font-family:var(--mono); font-weight:700; font-size:13px;
  letter-spacing:0.2em; color:oklch(0.975 0.006 85);
  margin-right:8px;
}
.doknav a{
  color:oklch(0.965 0.008 85 / 0.72);
  text-decoration:none;
  transition:color 200ms var(--ease);
}
.doknav a:hover{ color:oklch(0.78 0.09 132); }
.doknav-print{
  margin-left:auto;
  font-family:var(--sans); font-size:13px; font-weight:500;
  background:oklch(0.62 0.10 132); color:oklch(0.18 0.02 132);
  border:0; border-radius:2px; padding:8px 16px; cursor:pointer;
  transition:background 200ms var(--ease);
}
.doknav-print:hover{ background:oklch(0.70 0.11 132); }

/* ---------------------------------------------------------- page sheet */

.page{
  background:var(--paper);
  width:100%; max-width:860px;
  margin:26px auto;
  padding:60px 66px 68px;
  border:1px solid var(--rule);
  border-radius:2px;
}

/* ---------------------------------------------------------- cover */

.cover{
  min-height:76vh;
  display:flex; flex-direction:column; justify-content:space-between;
  background:var(--ink);
  border-color:var(--ink);
  color:oklch(0.965 0.008 85 / 0.7);
}
.cover-top{ display:flex; justify-content:space-between; }
.cover-tag,.cover-ed{
  font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:oklch(0.965 0.008 85 / 0.5);
}
.cover-mid{ padding:70px 0; }
.cover-title{
  font-family:var(--mono); font-weight:700;
  font-size:clamp(38px,7vw,74px);
  letter-spacing:0.06em;
  color:oklch(0.978 0.006 85);
  line-height:1; margin:0 0 26px;
}
.cover-sub{
  font-family:var(--display);
  font-size:clamp(21px,2.6vw,30px);
  line-height:1.3;
  color:oklch(0.965 0.008 85 / 0.82);
  max-width:22ch; margin:0;
}
.cover-sub em{ color:oklch(0.78 0.09 132); }

.cover-spec{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:1px; margin:0;
  background:oklch(0.965 0.008 85 / 0.14);
  border:1px solid oklch(0.965 0.008 85 / 0.14);
}
.cover-spec > div{ background:var(--ink); padding:14px 16px; }
.cover-spec dt{
  font-size:10.5px; letter-spacing:0.16em; text-transform:uppercase;
  color:oklch(0.965 0.008 85 / 0.45); margin-bottom:5px;
}
.cover-spec dd{ margin:0; font-size:14px; color:oklch(0.965 0.008 85 / 0.92); }

/* ---------------------------------------------------------- page headers */

.ph{
  display:flex; align-items:baseline; gap:18px;
  padding-bottom:20px; margin-bottom:32px;
  border-bottom:2px solid var(--ink);
}
.ph-n{
  font-size:12px; letter-spacing:0.16em;
  color:var(--moss-deep); font-weight:500;
}

.lede{
  font-family:var(--display);
  font-size:20px; line-height:1.42;
  color:var(--ink); max-width:52ch;
  margin-bottom:30px;
}

/* session headers */
.sh{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:20px; padding-bottom:16px; margin-bottom:26px;
  border-bottom:2px solid var(--ink);
}
.sh h3{ margin:4px 0 0; font-size:22px; font-family:var(--display); font-weight:400; letter-spacing:-0.01em; }
.sh-d{
  font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:var(--moss-deep);
}
.sh-b{ font-size:11.5px; letter-spacing:0.12em; color:var(--ink-mute); white-space:nowrap; }

/* ---------------------------------------------------------- block openers */

.block-open{ background:var(--paper); }
.bo{ padding:34px 0; }
.bo-n{
  display:block; font-size:12px; letter-spacing:0.2em; text-transform:uppercase;
  color:var(--moss-deep); margin-bottom:14px;
}
.bo-t{ font-size:clamp(42px,7vw,72px); line-height:1; margin-bottom:12px; }
.bo-w{
  display:block; font-size:13px; letter-spacing:0.14em;
  color:var(--ink-mute); padding-bottom:26px;
  border-bottom:1px solid var(--rule); margin-bottom:26px;
}
.bo-p{ max-width:60ch; }

/* ---------------------------------------------------------- tables */

.tw{ overflow-x:auto; margin:0 0 8px; }
table.t{ width:100%; border-collapse:collapse; min-width:520px; }
.t-sess{ min-width:560px; }
.t-trk{ min-width:600px; }

.t th,.t td{
  text-align:left; padding:11px 12px;
  border-bottom:1px solid var(--rule);
  font-size:14.5px;
}
.t thead th{
  font-family:var(--mono);
  font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase;
  font-weight:500; color:var(--ink-mute);
  border-bottom:1px solid var(--rule-firm);
  padding-top:0;
}
.t tbody th{ font-weight:500; color:var(--ink); }
.t td{ color:var(--ink); }
.t th:first-child,.t td:first-child{ padding-left:0; }
.t th:last-child,.t td:last-child{ padding-right:0; }
.t tbody tr:last-child th,.t tbody tr:last-child td{ border-bottom:0; }
.t .r{ text-align:right; white-space:nowrap; }
.t .c-n{ width:30px; color:var(--ink-mute); font-size:12px; padding-right:0; }
.t .w1{ width:88px; }
.t .w2{ width:170px; }
.t tr.hi td,.t tr.hi th{ background:var(--moss-wash); }
.t tr.ss td{ background:oklch(0.245 0.012 60 / 0.022); }

.t-fill .fill,.t-trk .fill{ height:38px; border-bottom:1px solid var(--rule-firm); }
.t-trk td{ padding:0 12px; }
.t-trk .fill{ height:34px; }

/* ---------------------------------------------------------- callouts */

.note{
  background:var(--paper-deep);
  border:1px solid var(--rule);
  border-radius:2px;
  padding:16px 18px;
  font-size:14.5px;
  margin:20px 0 8px;
}

.rule{
  background:var(--ink);
  border-radius:2px;
  padding:22px 24px;
  margin:18px 0 20px;
}
.rule-tag{
  display:block; font-size:10.5px; letter-spacing:0.18em; text-transform:uppercase;
  color:oklch(0.78 0.09 132); margin-bottom:10px;
}
.rule p{
  font-family:var(--display); font-size:21px; line-height:1.34;
  color:oklch(0.975 0.006 85); margin:0; max-width:44ch;
}
.rule em{ color:oklch(0.78 0.09 132); }

.deload,.bench,.after{
  border-top:2px solid var(--ink);
  margin-top:36px; padding-top:18px;
}
.deload-tag,.bench-tag,.after-tag{
  display:block; font-size:11px; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--moss-deep); margin-bottom:12px;
}
.deload p,.bench p,.after p{ font-size:14.5px; max-width:64ch; }

/* Coaching notes under each session. Set narrower and quieter than the table
   so the numbers stay the thing you read first. */
.cues{
  margin-top:26px; padding-top:18px;
  border-top:1px solid var(--rule);
}
.cues p{ font-size:14px; line-height:1.58; max-width:70ch; margin-bottom:0.85em; }
.cues p:last-child{ margin-bottom:0; }

.dayset{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--rule); border:1px solid var(--rule); margin-bottom:20px; }
.dayc{ background:var(--paper); padding:13px 16px; display:flex; gap:12px; align-items:baseline; font-size:14.5px; color:var(--ink); }
.dayc .mono{ color:var(--moss-deep); font-size:12px; }

.steps{ margin:0 0 16px; padding-left:20px; }
.steps li{ margin-bottom:9px; font-size:15px; color:var(--ink); }

/* ---------------------------------------------------------- test week */

.test{ display:grid; gap:1px; background:var(--rule); border:1px solid var(--rule); margin-bottom:12px; }
.test-s{ background:var(--paper); padding:20px 22px; }
.test-n{ font-size:11px; letter-spacing:0.16em; text-transform:uppercase; color:var(--moss-deep); }
.test-s h3{ margin:8px 0 10px; font-family:var(--display); font-weight:400; font-size:21px; }
.test-s p{ font-size:14.5px; max-width:62ch; }

/* ---------------------------------------------------------- library */

.lib h3{ margin-top:34px; padding-bottom:8px; border-bottom:1px solid var(--rule-firm); }
.ex{ padding:14px 0; border-bottom:1px solid var(--rule); }
.ex-h{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:5px; }
.ex-h strong{ font-size:15.5px; }
.ex-sub{ font-size:11.5px; color:var(--moss-deep); letter-spacing:0.03em; }
.ex p{ font-size:14px; max-width:70ch; margin:0; }

/* ---------------------------------------------------------- tracker */

.trk{ border:1px solid var(--rule-firm); border-radius:2px; padding:20px 22px; }
.trk-head{ display:flex; gap:28px; flex-wrap:wrap; font-size:13px; color:var(--ink); margin-bottom:16px; }
.trk-line{ display:inline-block; border-bottom:1px solid var(--rule-firm); min-width:150px; height:15px; margin-left:6px; }
.trk-sm{ min-width:80px; }
.trk-note{ margin-top:16px; font-size:13px; color:var(--ink); }
.trk-note .trk-line{ display:block; margin:12px 0 0; min-width:100%; height:22px; }

/* ---------------------------------------------------------- footer */

.dokfoot{ max-width:860px; margin:0 auto; padding:30px 66px 70px; }
.dokfoot p{ font-size:13px; color:var(--ink-mute); max-width:66ch; margin-bottom:9px; }
.dokfoot .mono{ font-size:11.5px; letter-spacing:0.18em; color:var(--ink); }
.dokfoot-spec a{ color:var(--ink); }

/* ---------------------------------------------------------- responsive */

@media (max-width:760px){
  .page{ padding:38px 24px 44px; margin:14px auto; }
  .dokfoot{ padding:24px; }
  .doknav{ height:auto; padding:12px 18px; gap:14px; font-size:12.5px; }
  .doknav-print{ margin-left:0; }
  .dayset,.cover-spec{ grid-template-columns:1fr; }
  .cover{ min-height:auto; }
  .cover-mid{ padding:44px 0; }
  .lede{ font-size:18px; }
}

/* ==========================================================================
   Print. This is the deliverable: a clean PDF with real page breaks.
   ========================================================================== */

@media print{
  @page{ size:A4; margin:16mm 14mm; }

  body{ background:#fff; font-size:10.5pt; line-height:1.5; }
  .doknav{ display:none; }

  .page{
    max-width:none; margin:0; padding:0;
    border:0; border-radius:0;
    background:#fff;
    break-after:page; page-break-after:always;
  }
  .page:last-of-type{ break-after:auto; page-break-after:auto; }

  .cover{ min-height:auto; color:#000; background:#fff; border:0; }
  .cover-tag,.cover-ed,.cover-spec dt{ color:#555; }
  .cover-title{ color:#000; }
  .cover-sub{ color:#222; }
  .cover-sub em{ color:#3b5f2a; }
  .cover-spec{ background:#ccc; border-color:#ccc; }
  .cover-spec > div{ background:#fff; }
  .cover-spec dd{ color:#000; }
  .cover-mid{ padding:40mm 0; }

  .rule{ background:#f2f2ee; border:1px solid #999; }
  .rule p{ color:#000; }
  .rule-tag,.rule em{ color:#3b5f2a; }

  h2,h3,.sh,.ph{ break-after:avoid; page-break-after:avoid; }
  table,.ex,.note,.rule,.test-s,.trk{ break-inside:avoid; page-break-inside:avoid; }
  tr{ break-inside:avoid; page-break-inside:avoid; }

  .tw{ overflow:visible; }
  table.t,.t-sess,.t-trk{ min-width:0; }

  .cues p,.note,.deload p,.bench p{ font-size:9.5pt; }
  a{ color:#000; text-decoration:none; }
  .dokfoot{ padding:0; break-before:page; page-break-before:always; }
}
