@font-face {
  font-family: "Literata";
  src: url("/fonts/literata-latin-wght-normal.woff2") format("woff2");
  font-weight: 200 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --measure: 34rem;
  --font: "Literata", Georgia, "Times New Roman", serif;
  --font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* Colour tokens come in four copies (device light, device dark, and each forced by the theme switch); tools/contrast.py keeps each pair identical */
:root {
  color-scheme: light dark;
  --ink: #1a211d;
  --ink-soft: #4b544e;
  --heading: #243d31;
  --paper: #eceee8;
  --terrazzo: #dde1d9;
  --rule: #c9cfc6;
  --accent: #2b5a45;
  --timber: #2e4356;
  --timber-ink: #f1f3f0;
  --timber-soft: #cfd9df;
  --shade: #28443a;
  --on-shade: #eef1ec;
  --on-shade-soft: #c8d5cc;
  --cta-bg: #28443a;
  --cta-bg-hover: #1c3229;
  --cta-ink: #f2f3ee;
}

@media screen and (prefers-color-scheme: dark) {
  :root {
    --ink: #e7ebe5;
    --ink-soft: #b3bcb5;
    --heading: #cfe3d6;
    --paper: #131915;
    --terrazzo: #1c221e;
    --rule: #2f3832;
    --accent: #9ccab3;
    --timber: #283b4a;
    --timber-ink: #f0f2f1;
    --timber-soft: #d0dae1;
    --shade: #1e2f28;
    --on-shade: #e7ebe5;
    --on-shade-soft: #b9c8be;
    --cta-bg: #9ccab3;
    --cta-bg-hover: #b7dbc8;
    --cta-ink: #10201a;
  }
}

@media screen {
  :root[data-theme="light"],
  :root:not([data-theme]):has(.theme input[value="light"]:checked) {
    color-scheme: light;
    --ink: #1a211d;
    --ink-soft: #4b544e;
    --heading: #243d31;
    --paper: #eceee8;
    --terrazzo: #dde1d9;
    --rule: #c9cfc6;
    --accent: #2b5a45;
    --timber: #2e4356;
    --timber-ink: #f1f3f0;
    --timber-soft: #cfd9df;
    --shade: #28443a;
    --on-shade: #eef1ec;
    --on-shade-soft: #c8d5cc;
    --cta-bg: #28443a;
    --cta-bg-hover: #1c3229;
    --cta-ink: #f2f3ee;
  }

  :root[data-theme="dark"],
  :root:not([data-theme]):has(.theme input[value="dark"]:checked) {
    color-scheme: dark;
    --ink: #e7ebe5;
    --ink-soft: #b3bcb5;
    --heading: #cfe3d6;
    --paper: #131915;
    --terrazzo: #1c221e;
    --rule: #2f3832;
    --accent: #9ccab3;
    --timber: #283b4a;
    --timber-ink: #f0f2f1;
    --timber-soft: #d0dae1;
    --shade: #1e2f28;
    --on-shade: #e7ebe5;
    --on-shade-soft: #b9c8be;
    --cta-bg: #9ccab3;
    --cta-bg-hover: #b7dbc8;
    --cta-ink: #10201a;
  }
}

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

html { font-size: 100%; -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font);
  font-size: 1.0625rem;
  line-height: 1.65;
}

::selection { background: var(--shade); color: var(--on-shade); }

.wrap { max-width: var(--measure); margin: 0 auto; padding: 0 1.25rem; }

.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

a:focus-visible, summary:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 2px; }

.skip {
  position: absolute; left: 0.75rem; top: -4rem; z-index: 10;
  font-family: var(--font-ui); font-size: 0.9375rem;
  background: var(--cta-bg); color: var(--cta-ink);
  padding: 0.65rem 1rem; border-radius: 4px; text-decoration: none;
}
.skip:focus { top: 0.75rem; }

/* The eave: a painted timber band carrying her name, with louvre slats along its lower edge casting shade onto the wall */
.site-header { position: relative; background: var(--timber); color: var(--timber-ink); padding: 1.25rem 0 0.4rem; }
.site-header::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  height: 30px;
  background: linear-gradient(to bottom,
    var(--timber) 0 5px, transparent 5px 9px,
    var(--timber) 9px 13px, transparent 13px 17px,
    var(--timber) 17px 20px, transparent 20px 24px,
    var(--timber) 24px 26px, transparent 26px 29px,
    var(--timber) 29px 30px);
  filter: drop-shadow(0 7px 7px color-mix(in srgb, var(--ink) 22%, transparent));
  pointer-events: none;
}
.site-header .name {
  display: inline-block;
  padding: 0.2rem 0;
  font-family: var(--font);
  font-size: 1.625rem;
  line-height: 1.3;
  font-weight: 600;
  text-decoration: none;
  color: var(--timber-ink);
}
.site-header .name span {
  display: block;
  margin-top: 0.1rem;
  font-family: var(--font-ui);
  font-weight: 400;
  color: var(--timber-soft);
  font-size: 0.8125rem;
  letter-spacing: 0.02em;
}
.site-header a:focus-visible { outline-color: var(--timber-ink); }
.site-nav { font-family: var(--font-ui); font-size: 0.9375rem; margin: 0.15rem 0 0 -0.5rem; }
.site-nav a {
  display: inline-block;
  padding: 0.75rem 0.5rem;
  color: var(--timber-soft);
  text-decoration: none;
}
.site-nav a:hover { color: var(--timber-ink); text-decoration: underline; text-underline-offset: 0.3em; }
.site-nav a[aria-current="page"] {
  color: var(--timber-ink);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.4em;
}

/* The wall: her words in shade ink on limewash */
main { padding: 2.75rem 0 3rem; }
h1, h2, h3 { color: var(--heading); }
h1 { font-size: 1.75rem; line-height: 1.3; margin: 0 0 1rem; font-weight: 400; text-wrap: balance; }
h2 { font-size: 1.3rem; line-height: 1.35; margin: 2.75rem 0 0.6rem; font-weight: 600; text-wrap: balance; }
h3 { font-size: 1.0625rem; margin: 1.75rem 0 0.5rem; font-weight: 600; }
p, ul, ol { margin: 0 0 1.1rem; }
p { text-wrap: pretty; }
ul, ol { padding-left: 1.25rem; }
li { margin-bottom: 0.4rem; }
li::marker { color: var(--timber); }
a { color: var(--accent); text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
.lede { font-size: 1.1875rem; line-height: 1.55; }
.meta { font-family: var(--font-ui); font-size: 0.875rem; color: var(--ink-soft); }
.signoff { margin: 1.6rem 0 1.25rem; font-size: 1.125rem; font-weight: 400; letter-spacing: 0.01em; color: var(--ink); }
.urgent-pointer { margin-top: 2rem; font-size: 0.9375rem; color: var(--ink-soft); }
.more { display: inline-block; padding: 0.5rem 0; }
blockquote { margin: 2rem 0; padding-left: 1.5rem; font-size: 1.125rem; line-height: 1.55; }
blockquote > :last-child { margin-bottom: 0; }
address { font-style: normal; }
.postal { margin: 0 0 0.5rem; font-size: 1.125rem; line-height: 1.55; }
.num, .facts, .postal { font-variant-numeric: lining-nums; }
.num { white-space: nowrap; }
.next { margin-top: 2rem; }

/* Articles index: grouped by the reader's question; each row is one target */
.shelf { margin-top: 2.5rem; }
.shelf h2 { margin: 0 0 0.35rem; }
.reading { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.reading li { position: relative; margin: 0; padding: 0.95rem 0 1rem; border-bottom: 1px solid var(--rule); }
.reading h3 { margin: 0 0 0.2rem; font-size: 1.1875rem; line-height: 1.35; }
.reading h3 a { color: var(--heading); text-decoration-color: var(--accent); }
.reading h3 a::after { content: ""; position: absolute; inset: 0; }
.reading h3 a:focus-visible { outline: none; }
.reading h3 a:focus-visible::after { outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 2px; }
.reading li:hover h3 a { text-decoration-thickness: 2px; }
.reading p { margin: 0; color: var(--ink-soft); }
.after-reading { margin-top: 2.5rem; }
.fine { margin-top: 1.5rem; font-family: var(--font-ui); font-size: 0.8125rem; color: var(--ink-soft); }

/* The bench: facts on a plain terrazzo slab resting on timber, read as label over value rather than as a grid */
.facts {
  display: block;
  width: 100%;
  margin: 1.75rem 0;
  padding: 0.35rem 1.1rem 0.6rem;
  border-top: 3px solid var(--timber);
  border-bottom: 7px solid var(--timber);
  font-family: var(--font-ui);
  background: var(--terrazzo);
}
.facts caption, .facts tbody, .facts tr { display: block; }
.facts caption { text-align: left; padding: 0.75rem 0 0.1rem; font-family: var(--font); font-size: 1.125rem; font-weight: 600; color: var(--heading); }
.facts tr { padding: 0.6rem 0; border-bottom: 1px solid var(--rule); }
.facts tr:last-child { border-bottom: 0; }
.facts th, .facts td { display: block; text-align: left; padding: 0; }
.facts th { font-size: 0.875rem; font-weight: 600; color: var(--ink-soft); }
.facts td { font-family: var(--font); font-size: 1.0625rem; color: var(--ink); }

/* Urgent help: a deep shade under the eaves, plain words and numbers large enough to tap without looking twice */
.crisis {
  margin: 2.5rem 0;
  padding: 1.35rem 1.25rem 1.25rem;
  border-radius: 4px;
  background: var(--shade);
  color: var(--on-shade);
}
.crisis > :last-child { margin-bottom: 0; }
.crisis h2 { margin: 0 0 0.5rem; font-size: 1.2rem; color: var(--on-shade); }
.crisis p { color: var(--on-shade-soft); }
.crisis ul { list-style: none; padding: 0; margin: 0.75rem 0 1rem; }
.crisis li { margin: 0 0 1rem; padding: 0; }
.crisis strong { font-weight: 600; color: var(--on-shade); }
.crisis a.num { display: block; width: fit-content; padding: 0.1rem 0 0.85rem; margin-bottom: -0.6rem; font-size: 1.3rem; line-height: 1.4; font-weight: 600; color: var(--on-shade); text-decoration-thickness: 2px; }
.crisis a:focus-visible { outline-color: var(--on-shade); }

/* Call to action: the verandah's edge */
.cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.75rem;
  font-family: var(--font-ui);
  font-size: 1rem;
  font-weight: 600;
  background: var(--cta-bg);
  color: var(--cta-ink);
  text-decoration: none;
  padding: 0.5rem 1.4rem;
  border-radius: 4px;
  margin: 0.5rem 0 1.5rem;
}
.cta:hover { background: var(--cta-bg-hover); }

/* FAQ */
details { border-bottom: 1px solid var(--rule); }
details:first-of-type { border-top: 1px solid var(--rule); }
details:last-of-type { margin-bottom: 2rem; }
summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 2.75rem;
  padding: 0.5rem 0;
  cursor: pointer;
  font-weight: 600;
  list-style: none;
}
summary::-webkit-details-marker { display: none; }
summary::after {
  content: "";
  flex: none;
  width: 14px;
  height: 14px;
  background:
    linear-gradient(var(--timber), var(--timber)) center / 14px 2px no-repeat,
    linear-gradient(var(--timber), var(--timber)) center / 2px 14px no-repeat;
}
details[open] summary::after { background-size: 14px 2px, 2px 0; }
details p { margin: 0 0 1rem; }

/* The footer: back on the wall below one timber threshold, so the eave stays the only heavy band */
.site-footer { background: var(--paper); color: var(--ink-soft); border-top: 4px solid var(--timber); padding: 2rem 0 2.5rem; font-family: var(--font-ui); font-size: 0.875rem; }
.site-footer p { margin: 0 0 0.6rem; }
.site-footer p:first-child { color: var(--ink); }
.site-footer p:last-child { margin: 0.9rem 0 0; padding-top: 1rem; border-top: 1px solid var(--rule); font-size: 0.8125rem; }
.site-footer a { color: var(--ink-soft); display: inline-block; padding: 0.7rem 0.15rem; }
.site-footer a:hover { color: var(--accent); }

.theme { margin: 0; padding: 0; border: 0; min-inline-size: 0; }
.theme legend { float: left; padding: 0; margin-right: 0.35rem; line-height: 2.75rem; }
.theme label {
  position: relative;
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
  padding: 0 0.35rem;
  cursor: pointer;
}
.theme input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; }
.theme label:hover { color: var(--accent); }
.theme label:has(input:checked) {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.35em;
}
.theme label:has(input:focus-visible) { outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 2px; }
@supports not selector(:has(*)) {
  .theme { display: none; }
}

@media (max-width: 29.99rem) {
  .cta { display: flex; }
}

/* Small phones: a shallower eave and a little less space so Home's first button stays on the first screen */
@media (max-width: 24rem) {
  .site-header { padding-top: 1rem; }
  .site-header .name { font-size: 1.5rem; }
  main { padding-top: 2.5rem; }
  h1 { margin-bottom: 0.75rem; }
  .lede { font-size: 1.125rem; }
}

/* Five nav items do not fit one row on a phone: two even rows, never one orphan */
@media (max-width: 26.99rem) {
  .site-nav { display: grid; grid-template-columns: repeat(3, max-content); }
}

@media (min-width: 40rem) {
  :root { --measure: 38rem; }
  h1 { font-size: 2.25rem; }
  .facts tr { display: grid; grid-template-columns: minmax(9.5rem, 34%) 1fr; gap: 1rem; align-items: baseline; }
}

@media (min-width: 40rem) {
  .site-header { padding-top: 2rem; }
  .site-header .name { font-size: 2.125rem; }
}

@media (min-width: 60rem) {
  :root { --measure: 42rem; }
  body { font-size: 1.125rem; }
  .lede { font-size: 1.25rem; }
}

@media (min-width: 72rem) {
  :root { --measure: 66rem; }
  main { padding-top: 3.25rem; }
  main .wrap > :not(.intro) { max-width: 42rem; }
  main .wrap:has(.intro) { display: grid; grid-template-columns: minmax(0, 36.5rem) minmax(20rem, 24rem); column-gap: 3rem; align-content: start; }
  main .wrap:has(.intro) > *, .letter { grid-column: 1; }
  main .wrap:has(.intro) > .cta { justify-self: start; }
  .intro { display: contents; }
  .glance { grid-column: 2; grid-row: 2 / span 12; align-self: start; }
  .glance .facts { margin-top: 0.3rem; }
  .glance .facts tr { display: block; }
  main .wrap > .shelf { max-width: none; display: grid; grid-template-columns: 15rem minmax(0, 42rem); column-gap: 3rem; align-items: start; }
  .shelf h2 { margin-top: 0.9rem; }
  main .wrap > .after-reading { margin-left: 18rem; }
}

@media print {
  :root { --ink: #000000; --ink-soft: #000000; --heading: #000000; --accent: #000000; --paper: #ffffff; --terrazzo: #ffffff; --timber: #ffffff; --timber-ink: #000000; --timber-soft: #000000; --shade: #ffffff; --on-shade: #000000; --on-shade-soft: #000000; }
  body { font-size: 11pt; }
  .skip, .site-nav, .cta, .theme, .site-header::after, .urgent-pointer { display: none; }
  main a[href^="http"]:not(.map)::after { content: " (" attr(href) ")"; font-size: 0.85em; }
}
