  :root{
    --ground:#EDEEE9; --surface:#F6F7F3; --surface-2:#E4E6DE;
    --ink:#1A1E1B; --ink-2:#4C544E; --ink-3:#79817A;
    --rule:#D3D6CD; --rule-strong:#B9BEB2;
    --accent:#65761B; --accent-ink:#4E5C14; --accent-soft:#DDE4BF;
    --cold:#3F5563; --cold-soft:#D6DDE2;
    --shadow:0 1px 2px rgba(26,30,27,.05), 0 8px 24px -12px rgba(26,30,27,.18);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --ground:#111412; --surface:#181C19; --surface-2:#222724;
      --ink:#E7EAE2; --ink-2:#A8B0A7; --ink-3:#7B837B;
      --rule:#2A2F2B; --rule-strong:#3A413B;
      --accent:#AAC04B; --accent-ink:#BDD067; --accent-soft:#2B3318;
      --cold:#93AEBE; --cold-soft:#1C2931;
      --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
    }
  }
  :root[data-theme="dark"]{
    --ground:#111412; --surface:#181C19; --surface-2:#222724;
    --ink:#E7EAE2; --ink-2:#A8B0A7; --ink-3:#7B837B;
    --rule:#2A2F2B; --rule-strong:#3A413B;
    --accent:#AAC04B; --accent-ink:#BDD067; --accent-soft:#2B3318;
    --cold:#93AEBE; --cold-soft:#1C2931;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  }

  *{box-sizing:border-box}
  body{
    background:var(--ground); color:var(--ink);
    font-family:"Newsreader",Georgia,"Times New Roman",serif;
    font-size:1.0625rem; line-height:1.65; font-weight:380;
    -webkit-font-smoothing:antialiased;
  }
  .wrap{max-width:80rem;margin:0 auto;padding:0 clamp(1.1rem,4vw,3rem) 6rem}

  /* ---- masthead ---- */
  .mast{padding:clamp(3rem,9vw,6.5rem) 0 2.25rem;border-bottom:1px solid var(--rule)}
  .mark{
    font-family:"Cinzel",Georgia,serif;font-weight:600;
    font-size:clamp(2.6rem,9vw,5rem);letter-spacing:.16em;
    margin:0 0 .1em;line-height:1;text-indent:.16em;
  }
  .thesis{
    font-size:clamp(1.15rem,2.6vw,1.5rem);line-height:1.4;font-weight:400;
    max-width:30ch;margin:0 0 1.75rem;color:var(--ink);text-wrap:balance;
  }
  .thesis em{font-style:italic;color:var(--accent-ink)}
  .metaline{
    display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center;
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.7rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);
  }

  /* ---- sections ---- */
  section{
    display:grid;grid-template-columns:8.5rem minmax(0,68ch);
    gap:0 2.75rem;padding:3.25rem 0 .5rem;border-bottom:1px solid var(--rule);
  }
  section:last-of-type{border-bottom:0}
  .rail{
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
    color:var(--ink-3);display:flex;flex-direction:column;gap:.5rem;
    align-items:flex-start;padding-top:.65rem;
  }
  .rail .num{font-family:"Cinzel",Georgia,serif;font-size:1.05rem;letter-spacing:.1em;color:var(--ink-2)}
  .body>*+*{margin-top:1.1em}
  .body>h2{margin-top:0}

  h2{
    font-size:clamp(1.5rem,3.4vw,2rem);font-weight:500;line-height:1.2;
    letter-spacing:-.012em;margin:0 0 .9rem;text-wrap:balance;
  }
  h3{
    font-size:1.08rem;font-weight:600;margin:2rem 0 .55rem;letter-spacing:-.005em;
  }
  p{margin:0}
  strong{font-weight:600}
  a{color:var(--accent-ink)}

  .chip{
    display:inline-block;padding:.22em .6em;border-radius:2px;
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;
    border:1px solid currentColor;line-height:1.4;
  }
  .chip.locked{color:var(--accent-ink)}
  .chip.open{color:var(--cold)}

  .lede{font-size:1.2rem;line-height:1.55;color:var(--ink-2);font-weight:350}

  /* ---- pull ---- */
  .pull{
    border-left:2px solid var(--accent);padding:.15rem 0 .15rem 1.4rem;
    font-size:1.3rem;line-height:1.4;font-weight:400;font-style:italic;
    color:var(--ink);text-wrap:balance;
  }

  /* ---- table ---- */
  .tablewrap{overflow-x:auto;margin-top:1.6rem}
  table{border-collapse:collapse;width:100%;min-width:26rem;font-size:.95rem}
  caption{
    caption-side:top;text-align:left;
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;
    color:var(--ink-3);padding-bottom:.7rem;
  }
  th,td{text-align:left;padding:.6rem .9rem .6rem 0;border-bottom:1px solid var(--rule)}
  thead th{
    font-family:"IBM Plex Mono",ui-monospace,monospace;font-weight:500;
    font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);
    border-bottom:1px solid var(--rule-strong);
  }
  td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
  tr.us td{color:var(--accent-ink);font-weight:500}

  /* ---- diagram ---- */
  .diagram{
    margin-top:1.8rem;border:1px solid var(--rule);border-radius:3px;
    background:var(--surface);padding:clamp(1.1rem,3vw,1.9rem);
  }
  .drawers{display:grid;grid-template-columns:1fr auto 1fr;gap:0 clamp(.7rem,2.5vw,1.6rem);align-items:stretch}
  .box{border:1px solid var(--rule-strong);border-radius:3px;padding:1rem 1.05rem;background:var(--ground)}
  .box.warm{border-color:var(--accent);background:var(--accent-soft)}
  .box.coldbox{border-color:var(--cold);background:var(--cold-soft)}
  .box .label{
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.65rem;letter-spacing:.13em;text-transform:uppercase;
    margin-bottom:.5rem;display:block;
  }
  .box.warm .label{color:var(--accent-ink)}
  .box.coldbox .label{color:var(--cold)}
  .box .big{font-size:1.02rem;font-weight:600;line-height:1.25;display:block;margin-bottom:.35rem}
  .box .small{font-size:.86rem;line-height:1.45;color:var(--ink-2);display:block}
  .flows{display:flex;flex-direction:column;justify-content:center;gap:1.1rem;padding:.4rem 0}
  .flow{
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;
    color:var(--ink-3);text-align:center;line-height:1.5;white-space:nowrap;
  }
  .flow .arrow{display:block;font-size:1rem;color:var(--ink-2);letter-spacing:0}
  .diagram .foot{
    margin-top:1.15rem;padding-top:.9rem;border-top:1px solid var(--rule);
    font-size:.9rem;color:var(--ink-2);
  }
  .diagram .foot b{color:var(--ink);font-weight:600}

  /* ---- decisions ---- */
  .decisions{display:flex;flex-direction:column;gap:0;margin-top:1.5rem}
  .dec{padding:1.15rem 0;border-top:1px solid var(--rule);display:grid;gap:.45rem}
  .dec:last-child{border-bottom:1px solid var(--rule)}
  .dec .q{
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);
  }
  .dec .a{font-size:1.12rem;font-weight:600;line-height:1.3}
  .dec .why{font-size:.96rem;color:var(--ink-2);line-height:1.55}

  /* ---- guarantees ---- */
  ol.guar{list-style:none;padding:0;margin:1.4rem 0 0;counter-reset:g;display:flex;flex-direction:column;gap:1rem}
  ol.guar li{
    counter-increment:g;display:grid;grid-template-columns:1.9rem 1fr;gap:.9rem;
    align-items:baseline;
  }
  ol.guar li::before{
    content:counter(g);font-family:"Cinzel",Georgia,serif;font-size:1.05rem;
    color:var(--accent-ink);
  }
  ol.guar b{font-weight:600}
  ol.guar span{display:block;color:var(--ink-2);font-size:.96rem;margin-top:.15rem}

  /* ---- open questions ---- */
  ul.open{list-style:none;padding:0;margin:1.3rem 0 0;display:flex;flex-direction:column;gap:.85rem}
  ul.open li{padding-left:1.2rem;position:relative;color:var(--ink-2);font-size:.99rem}
  ul.open li::before{content:"";position:absolute;left:0;top:.62em;width:.45rem;height:1px;background:var(--cold)}
  ul.open b{color:var(--ink);font-weight:600}

  /* ---- roadmap ---- */
  ol.road{list-style:none;padding:0;margin:1.4rem 0 0;counter-reset:r;display:flex;flex-direction:column;gap:0}
  ol.road li{
    counter-increment:r;display:grid;grid-template-columns:3.4rem 1fr;gap:1rem;
    padding:1rem 0;border-top:1px solid var(--rule);
  }
  ol.road li:last-child{border-bottom:1px solid var(--rule)}
  ol.road li::before{
    content:"É" counter(r);font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.66rem;letter-spacing:.1em;color:var(--ink-3);padding-top:.35em;
  }
  ol.road li.done::before{color:var(--accent-ink)}
  ol.road b{font-weight:600;display:block;margin-bottom:.15rem}
  ol.road .state{
    font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.6rem;
    letter-spacing:.13em;text-transform:uppercase;color:var(--accent-ink);
    border:1px solid currentColor;border-radius:2px;padding:.15em .5em;
    margin-left:.6rem;vertical-align:.15em;white-space:nowrap;
  }
  ol.road span{color:var(--ink-2);font-size:.96rem}

  .note{
    margin-top:1.6rem;border:1px solid var(--rule);border-left:2px solid var(--cold);
    border-radius:0 3px 3px 0;background:var(--surface);padding:1.1rem 1.25rem;
    font-size:.95rem;color:var(--ink-2);line-height:1.6;
  }
  .note b{color:var(--ink)}
  .note .tag{
    font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.62rem;
    letter-spacing:.13em;text-transform:uppercase;color:var(--cold);
    display:block;margin-bottom:.5rem;
  }

  footer{
    margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--rule);
    font-family:"IBM Plex Mono",ui-monospace,monospace;
    font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);
    display:flex;flex-wrap:wrap;gap:.4rem 1.5rem;
  }

  @media (max-width:820px){
    section{grid-template-columns:minmax(0,1fr);gap:1rem;padding-top:2.5rem}
    .rail{flex-direction:row;align-items:center;gap:.85rem;padding-top:0}
    .drawers{grid-template-columns:1fr}
    .flows{flex-direction:row;justify-content:space-around;padding:.9rem 0}
    .flow{white-space:normal}
  }
  @media (prefers-reduced-motion:no-preference){
    a{transition:color .15s ease}
  }
  :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}

  /* Spacing that used to sit in a style attribute. The site
     forbids those, and a rule that is silently dropped is worse
     than a rule that is written down. */
  .push-sm{margin-top:.8rem}
  .push-md{margin-top:1.6rem}
