/* Self-hosted fonts (GDPR: no CDN). woff2 live in site/fonts/, one level up from programme/. */
@font-face{
  font-family:'Fraunces';
  src:url('../fonts/Fraunces.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Satoshi';
  src:url('../fonts/Satoshi-Variable.woff2') format('woff2');
  font-weight:300 900;
  font-style:normal;
  font-display:swap;
}

/* Two Threads / divorce-ally - shared programme styles
   Cream paper, teal accent, Fraunces display, Satoshi body, light/dark.
   Fonts loaded via <link> in each page head (Fontshare Satoshi + Google Fraunces).
   Preview parity uses CDNs; swap to self-hosted fonts for production. */

:root {
  --paper:#F5EEDF;
  --panel:#FBF6EC;
  --ink:#24211B;
  --muted:#6E685B;
  --line:#E5DCC9;
  --teal:#01696F;
  --teal-ink:#014A4F;
  --teal-tint:#E7EFEC;
  --teal-line:#C3D9D5;
  --radius:14px;
  --maxw:660px;
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --sans:'Satoshi','Helvetica Neue',Arial,sans-serif;
}
[data-theme="dark"] {
  --paper:#191813;
  --panel:#211F18;
  --ink:#ECE5D6;
  --muted:#A69F8D;
  --line:#332F26;
  --teal:#5FB9B4;
  --teal-ink:#CDE8E4;
  --teal-tint:#18302E;
  --teal-line:#2C4A47;
}

* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:18px;
  line-height:1.72;
  -webkit-font-smoothing:antialiased;
  transition:background .25s ease, color .25s ease;
}

/* top bar */
.bar {
  max-width:var(--maxw);
  margin:0 auto;
  padding:20px 22px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.wordmark {
  font-family:var(--serif);
  font-weight:500;
  font-size:17px;
  letter-spacing:.01em;
  color:var(--teal);
  text-decoration:none;
}
.wordmark span { color:var(--muted); font-style:italic; }
.toggle {
  font-family:var(--sans);
  font-size:13px;
  font-weight:500;
  color:var(--muted);
  background:transparent;
  border:1px solid var(--line);
  border-radius:999px;
  padding:6px 13px;
  cursor:pointer;
  transition:border-color .2s ease, color .2s ease;
}
.toggle:hover { border-color:var(--teal-line); color:var(--ink); }
.toggle:focus-visible { outline:2px solid var(--teal); outline-offset:2px; }

.wrap { max-width:var(--maxw); margin:0 auto; padding:34px 22px 96px; }

.eyebrow {
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:11.5px;
  font-weight:700;
  color:var(--teal);
}
h1 {
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(29px,6vw,36px);
  line-height:1.16;
  letter-spacing:-.01em;
  margin:12px 0 14px;
}
.standfirst {
  font-family:var(--serif);
  font-weight:400;
  font-size:20px;
  line-height:1.5;
  color:var(--muted);
  margin:0;
}

/* two-thread signature rule */
.threads { margin:26px 0 6px; width:60px; }
.threads .t1 { height:3px; background:var(--teal); border-radius:2px; }
.threads .t2 {
  height:0; margin-top:5px;
  border-top:2px dashed var(--teal-line);
}

section { margin-top:40px; }
.eyebrow + h2 { margin-top:6px; }
h2 {
  font-family:var(--serif);
  font-weight:500;
  font-size:24px;
  line-height:1.24;
  margin:6px 0 14px;
}
p { margin:0 0 19px; }
p:last-child { margin-bottom:0; }
strong { font-weight:700; }
em { font-style:italic; }
a { color:var(--teal); text-decoration:underline; text-underline-offset:2px; }

/* soft-teal callout card (settle first) */
.card {
  background:var(--teal-tint);
  border:1px solid var(--teal-line);
  border-radius:var(--radius);
  padding:22px 24px;
  margin:26px 0;
}
.card .label {
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:11px;
  font-weight:700;
  color:var(--teal-ink);
  margin-bottom:8px;
}
.card h3 {
  font-family:var(--serif);
  font-weight:500;
  font-size:20px;
  line-height:1.3;
  margin:0 0 12px;
}
.card p:last-child { margin-bottom:0; }

/* mid-module recall prompt / pause */
.recall {
  border:1px solid var(--teal);
  border-radius:var(--radius);
  padding:22px 24px;
  margin:30px 0;
  background:var(--panel);
}
.recall .label {
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:11px;
  font-weight:700;
  color:var(--teal);
  margin-bottom:10px;
}
.recall .q {
  font-family:var(--serif);
  font-weight:500;
  font-size:22px;
  line-height:1.34;
  margin:0 0 14px;
}
.recall p { font-size:16.5px; color:var(--muted); }
.btnlink {
  display:inline-block;
  font-family:var(--sans);
  font-size:15px;
  font-weight:500;
  text-decoration:none;
  color:#fff;
  background:var(--teal);
  border-radius:999px;
  padding:9px 18px;
  margin-top:6px;
}
[data-theme="dark"] .btnlink { color:#10201f; }
.btnlink:hover { opacity:.9; }

/* do-it-now activity */
.activity {
  border:1px solid var(--teal-line);
  border-radius:var(--radius);
  padding:22px 24px;
  margin:30px 0;
  background:var(--teal-tint);
}
.activity .label {
  font-family:var(--sans);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:11px;
  font-weight:700;
  color:var(--teal-ink);
  margin-bottom:10px;
  display:flex;
  gap:10px;
  align-items:baseline;
}
.activity .time {
  letter-spacing:.04em;
  color:var(--teal);
  border:1px solid var(--teal-line);
  border-radius:999px;
  padding:2px 8px;
  font-size:10px;
}
.activity h3 {
  font-family:var(--serif);
  font-weight:500;
  font-size:21px;
  line-height:1.3;
  margin:0 0 12px;
}
.cols { display:flex; gap:16px; margin:16px 0 6px; }
.col { flex:1; min-width:0; }
.col .h {
  font-family:var(--sans);
  font-weight:700;
  font-size:13px;
  color:var(--teal-ink);
  margin-bottom:8px;
}
.write {
  min-height:120px;
  background:var(--panel);
  border:1px solid var(--teal-line);
  border-radius:10px;
  padding:10px 12px;
  font-family:var(--sans);
  font-size:15px;
  line-height:28px;
  color:var(--ink);
  background-image:repeating-linear-gradient(var(--panel),var(--panel) 27px,var(--line) 27px,var(--line) 28px);
}
.write:focus-visible { outline:2px solid var(--teal); outline-offset:1px; }
.write:empty:before { content:attr(data-ph); color:var(--muted); }
@media (max-width:520px){ .cols{ flex-direction:column; } }

/* numbered steps */
.steps { margin:22px 0 8px; padding:0; list-style:none; counter-reset:s; }
.steps > li {
  position:relative;
  padding-left:52px;
  margin:0 0 20px;
}
.steps > li:before {
  counter-increment:s;
  content:counter(s);
  position:absolute; left:0; top:1px;
  width:34px; height:34px;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-weight:500; font-size:16px;
  color:var(--teal-ink);
  background:var(--teal-tint);
  border:1px solid var(--teal-line);
  border-radius:50%;
}
.steps .s-title { font-weight:700; display:block; margin-bottom:3px; }

/* worksheet */
.worksheet {
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:26px 26px 22px;
  margin:34px 0 0;
}
.worksheet .label {
  font-family:var(--sans);
  text-transform:uppercase; letter-spacing:.14em;
  font-size:11px; font-weight:700; color:var(--teal);
  margin-bottom:6px;
}
.worksheet h3 {
  font-family:var(--serif); font-weight:500; font-size:22px;
  margin:0 0 16px;
}
.worksheet ol { margin:0; padding-left:20px; }
.worksheet ol li { margin:0 0 16px; padding-left:4px; }
.worksheet .hint { color:var(--muted); font-size:16px; }
.fill { display:block; margin-top:6px; color:var(--muted); font-size:15px; }

.closing { margin-top:34px; font-family:var(--serif); font-size:19px; line-height:1.55; }
.next {
  margin-top:34px; padding-top:20px; border-top:1px solid var(--line);
  font-size:16px; color:var(--muted);
}
.next a { font-weight:500; }
.disclaimer {
  margin-top:26px; font-size:14px; line-height:1.6; color:var(--muted);
}

@media (prefers-reduced-motion:reduce){ * { transition:none !important; } }

/* ---------------------------------------------------------------
   ADDED for the module set (not in the original shared sheet).
   Two components every stage module needs that were missing:
   1) .recognise  - the "You are here" opener, front-loaded in the
      first viewport per the length spec. Panel bg with a teal left
      rule, so it reads as distinct from the filled teal-tint cards
      (.card / .activity) without competing with them.
   2) .pull       - the single pull-quote each module lands (e.g.
      "You have been knocking on the wrong door"). Fraunces italic,
      teal left rule, palette-consistent.
   --------------------------------------------------------------- */

.recognise {
  background:var(--panel);
  border:1px solid var(--line);
  border-left:3px solid var(--teal);
  border-radius:var(--radius);
  padding:20px 24px;
  margin:24px 0;
}
.recognise p { font-size:17.5px; }
.recognise p:last-child { margin-bottom:0; }

.pull {
  font-family:var(--serif);
  font-weight:500;
  font-style:italic;
  font-size:clamp(21px,4.4vw,24px);
  line-height:1.36;
  color:var(--ink);
  border-left:3px solid var(--teal);
  padding:2px 0 2px 20px;
  margin:30px 0;
}
