
  :root{
    --paper:#FBFBFC; --ink:#191C22; --ink-soft:#4A505C; --rule:#D8DAE0;
    --structure:#2E4A7D; --remind:#8A5A2B; --remind-bg:#FBF6EF; --remind-rule:#E0CBAE;
    --accent:#1F7A6B; --accent-bg:#F0F7F5; --warn:#9A3B32; --warn-bg:#FCF3F2;
    --why-bg:#F1F4F9; --toc-bg:#F6F7F9; --ahead:#5B4B8A; --deep:#7A3B6B; --deep-bg:#FAF2F7; --deep-rule:#E3CEDC; --ahead-bg:#F4F1F9; --ahead-rule:#D5CCE8;
  }
  *{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%}
  body{margin:0;background:var(--paper);color:var(--ink);
    font-family:'Iowan Old Style','Palatino Linotype',Palatino,'Book Antiqua',Georgia,serif;
    font-size:17px;line-height:1.62;}
  .wrap{max-width:44rem;margin:0 auto;padding:3.5rem 1.4rem 6rem}
  h1{font-size:2.1rem;line-height:1.12;letter-spacing:-.02em;margin:0 0 .4rem;font-weight:600}
  .deck{color:var(--ink-soft);font-size:1.02rem;margin:0 0 2.4rem;font-style:italic}

  .unit-head{margin:4.5rem 0 1.6rem;padding-bottom:.7rem;border-bottom:3px solid var(--structure)}
  .unit-head .eyebrow{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.18em;
    color:var(--structure);font-weight:700;margin-bottom:.3rem}
  .unit-head h2{font-size:1.75rem;margin:0;font-weight:600;letter-spacing:-.015em;border:none;padding:0;text-transform:none;color:var(--ink)}
  .timing{display:inline-block;margin-top:.55rem;font-size:.8rem;color:var(--ink-soft);
    font-style:italic}

  h3{font-size:1.3rem;margin:2.9rem 0 .7rem;font-weight:600;letter-spacing:-.01em}
  h4{font-size:1.04rem;margin:2rem 0 .5rem;font-weight:600}
  h5{font-size:.95rem;margin:1.5rem 0 .4rem;font-weight:600;color:var(--ink-soft)}
  p{margin:0 0 1rem}
  ul,ol{margin:0 0 1.1rem;padding-left:1.3rem}
  li{margin-bottom:.45rem}
  code,.v{font-family:'SF Mono',Menlo,Consolas,'Roboto Mono',monospace;font-size:.92em}

  .eq{margin:1.2rem 0;padding:.8rem 1rem;background:#F3F4F7;border-left:3px solid var(--structure);
    font-family:'SF Mono',Menlo,Consolas,monospace;font-size:.92rem;line-height:1.9;overflow-x:auto}
  .eq.plain{background:none;border-left:none;padding:.25rem 0;text-align:center;font-size:.98rem}

  .why{margin:1.6rem 0;padding:1.05rem 1.2rem;background:var(--why-bg);
    border-left:4px solid var(--structure);border-radius:2px}
  .why .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--structure);font-weight:700;margin-bottom:.5rem}
  .why p:last-child,.why ul:last-child{margin-bottom:0}

  .remind{margin:1.4rem 0;padding:.95rem 1.15rem;background:var(--remind-bg);
    border:1px solid var(--remind-rule);border-left:4px solid var(--remind);border-radius:2px}
  .remind .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--remind);font-weight:700;margin-bottom:.45rem}
  .remind p:last-child,.remind ul:last-child,.remind .eq:last-child{margin-bottom:0}

  .trap{margin:1.4rem 0;padding:.8rem 1rem;border-left:4px solid var(--warn);
    background:var(--warn-bg);border-radius:2px}
  .trap .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--warn);font-weight:700;margin-bottom:.4rem}
  .trap p:last-child{margin-bottom:0}

  .derive{margin:1.5rem 0;padding:1rem 1.15rem;border:1px solid var(--rule);
    border-top:3px solid var(--accent);border-radius:2px;background:#fff}
  .derive .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--accent);font-weight:700;margin-bottom:.5rem}
  .derive p:last-child,.derive .eq:last-child,.derive table:last-child{margin-bottom:0}

  table.steps{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.9rem}
  table.steps td{padding:.55rem .7rem;border-bottom:1px solid var(--rule);vertical-align:top}
  table.steps td:first-child{font-family:'SF Mono',Menlo,Consolas,monospace;
    width:53%;white-space:normal}
  table.steps td:last-child{color:var(--ink-soft);font-size:.86rem;font-style:italic;line-height:1.5}
  table.steps tr:last-child td{border-bottom:none}
  table.steps tr.result td:first-child{font-weight:700;color:var(--accent)}

  table.ref{width:100%;border-collapse:collapse;margin:1.3rem 0;font-size:.92rem}
  table.ref th{text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;
    color:var(--structure);border-bottom:2px solid var(--structure);padding:.4rem .6rem .4rem 0;font-weight:700}
  table.ref td{padding:.42rem .6rem;border-bottom:1px solid var(--rule);vertical-align:top}
  table.ref td:first-child{padding-left:0}

  figure{margin:1.9rem 0;text-align:center}
  figure svg{max-width:100%;height:auto}
  figcaption{font-size:.87rem;color:var(--ink-soft);margin-top:.7rem;text-align:left;line-height:1.55}


  .term{margin:1.1rem 0;padding:.7rem .95rem;background:transparent;
    border:1px dashed var(--rule);border-left:3px solid var(--ink-soft);border-radius:2px;
    font-size:.94rem}
  .term .tag{font-size:.66rem;text-transform:uppercase;letter-spacing:.14em;
    color:var(--ink-soft);font-weight:700;margin-right:.5rem}
  .term p:last-child{margin-bottom:0}

  .ahead{margin:1.5rem 0;padding:.95rem 1.15rem;background:var(--ahead-bg);
    border:1px solid var(--ahead-rule);border-left:4px solid var(--ahead);border-radius:2px}
  .ahead .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--ahead);font-weight:700;margin-bottom:.45rem}
  .ahead p:last-child{margin-bottom:0}

  .sheet{margin:2.6rem 0 1rem;padding:1.3rem 1.4rem;background:#fff;
    border:2px solid var(--structure);border-radius:3px}
  .sheet h4{margin-top:1.3rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;
    color:var(--structure)}
  .sheet h4:first-of-type{margin-top:.4rem}
  .sheet .tag{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.18em;
    color:var(--structure);font-weight:700;margin-bottom:.2rem}
  .sheet .sheet-title{font-size:1.15rem;font-weight:600;margin:0 0 .8rem}
  .sheet ul{margin:.3rem 0 .8rem;padding-left:1.1rem;font-size:.93rem}
  .sheet li{margin-bottom:.3rem}
  .sheet .m{font-family:'SF Mono',Menlo,Consolas,monospace;font-size:.88rem}
  .sheet p:last-child,.sheet ul:last-child{margin-bottom:0}


  .deeper{margin:1.6rem 0;padding:1.05rem 1.2rem;background:var(--deep-bg);
    border:1px solid var(--deep-rule);border-left:4px solid var(--deep);border-radius:2px}
  .deeper .tag{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;
    color:var(--deep);font-weight:700;margin-bottom:.5rem}
  .deeper p:last-child,.deeper ul:last-child,.deeper table:last-child{margin-bottom:0}
  .deeper .eq{border-left-color:var(--deep)}

  #toc{position:fixed;top:0;left:0;width:19rem;height:100vh;overflow-y:auto;
    background:var(--toc-bg);border-right:1px solid var(--rule);padding:1.3rem 1rem;z-index:40}
  .toc-inner{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
  .toc-title{font-size:.62rem;text-transform:uppercase;letter-spacing:.16em;color:var(--structure);
    font-weight:700;margin:0 0 .5rem}
  #toc-filter{width:100%;padding:.35rem .5rem;font-size:.8rem;border:1px solid var(--rule);
    border-radius:3px;background:var(--paper);color:var(--ink);margin-bottom:.7rem;font-family:inherit}
  .toc-list,.toc-list ul{list-style:none;margin:0;padding:0}
  .toc-list a{display:block;text-decoration:none;color:var(--ink-soft);padding:.16rem .3rem;
    border-radius:3px;line-height:1.32}
  .toc-list>li>a{font-size:.79rem;font-weight:600;color:var(--ink);margin-top:.42rem}
  .tn{display:inline-block;min-width:1.15rem;color:var(--structure);font-weight:700}
  .toc-list ul a{font-size:.735rem;padding-left:1.5rem}
  .toc-list a:hover{background:var(--why-bg);color:var(--ink)}
  .toc-list a.here{background:var(--why-bg);color:var(--structure);font-weight:600}
  .toggles{display:flex;flex-direction:column;gap:.22rem;font-size:.75rem;color:var(--ink-soft)}
  .toggles label{display:flex;align-items:center;gap:.4rem;cursor:pointer}
  #toc-btn{display:none;position:fixed;bottom:1rem;right:1rem;z-index:50;
    background:var(--structure);color:#fff;border:none;border-radius:2rem;
    padding:.6rem 1rem;font-size:.85rem;font-family:inherit;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.25)}
  body.hasnav .wrap{margin-left:19rem}
  .hidden-type{display:none !important}
  @media (max-width:1180px){
    #toc{transform:translateX(-100%);transition:transform .22s ease;width:17rem}
    #toc.open{transform:none}
    body.hasnav .wrap{margin-left:0}
    #toc-btn{display:block}
  }
  @media print{#toc,#toc-btn{display:none}body.hasnav .wrap{margin-left:0}}
  hr{border:none;border-top:1px solid var(--rule);margin:3rem 0}

  @media (max-width:600px){
    body{font-size:16px}.wrap{padding:2.2rem 1.05rem 4rem}
    h1{font-size:1.65rem}.unit-head h2{font-size:1.4rem}
    .eq{font-size:.84rem;padding:.65rem .75rem}
    table.steps{font-size:.83rem}
    table.steps td:first-child{width:52%;padding:.5rem .5rem .5rem 0}
    table.steps td:last-child{font-size:.79rem}
  }
  @media (prefers-color-scheme:dark){
    :root{--paper:#15171C;--ink:#E8E9EC;--ink-soft:#9BA1AD;--rule:#2E323B;
      --structure:#8FAEE0;--remind:#D9A566;--remind-bg:#221D16;--remind-rule:#4A3C28;
      --accent:#5FC4AE;--warn:#E08A80;--warn-bg:#251A19;--why-bg:#1A1F29; --toc-bg:#111318;--ahead:#B0A0D8; --deep:#D89BC4; --deep-bg:#241923; --deep-rule:#43303D;--ahead-bg:#1E1A26;--ahead-rule:#3A3348}
    .sheet{background:#191C22}
    .eq{background:#1D2027}.derive{background:#191C22}
  }

/* --- added by build --- */
.hide-why .why{display:none !important}
.hide-remind .remind{display:none !important}
.hide-derive .derive{display:none !important}
.hide-trap .trap{display:none !important}
.hide-deeper .deeper{display:none !important}
.hide-ahead .ahead{display:none !important}
.hide-sheet .sheet{display:none !important}
.hide-check .check{display:none !important}
.toc-list>li.tu>a.here-unit{background:var(--why-bg);color:var(--structure)}

/* Sanity checks are a lighter weight of element than the six boxed types:
   a rule and a marker, no fill. They are one-liners and a box overweights them. */
.check{margin:1.4rem 0;padding:.15rem 0 .15rem .9rem;border-left:2px solid var(--accent)}
.check .tag{display:block;font-size:.64rem;text-transform:uppercase;letter-spacing:.16em;
  color:var(--accent);font-weight:700;margin-bottom:.25rem;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.check .tag::before{content:"✓ ";font-weight:700}
.check p{margin:0 0 .5rem;font-size:.95rem}
.check p:last-child{margin-bottom:0}
.check .eq{border-left-color:var(--accent)}

.drill{margin:3.4rem 0 0;padding:.85rem 1rem;border-left:4px solid var(--accent);
  background:var(--accent-bg);border-radius:2px;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:.86rem}
.drill a{color:var(--accent);font-weight:700;text-decoration:none}
.drill a:hover{text-decoration:underline}
.drill span{color:var(--ink-soft)}
@media print{.drill{display:none}}
.unit-pager{display:flex;justify-content:space-between;gap:1rem;margin:4rem 0 0;
  padding-top:1.2rem;border-top:1px solid var(--rule);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.unit-pager .pg{flex:1;text-decoration:none;color:var(--ink);font-size:.9rem;font-weight:600;
  padding:.5rem .1rem}
.unit-pager .pg.next{text-align:right}
.unit-pager .pg span{display:block;font-size:.62rem;text-transform:uppercase;
  letter-spacing:.16em;color:var(--structure);font-weight:700;margin-bottom:.15rem}
.unit-pager a.pg:hover{color:var(--structure)}
@media print{.unit-pager{display:none}}

.viz{margin:1.8rem 0;padding:.9rem 1rem 1rem;border:1px solid var(--rule);border-radius:3px;
  background:var(--why-bg)}
.viz figcaption{font-size:1rem;font-weight:600;margin-bottom:.6rem}
.viz figcaption .tag{display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.16em;
  color:var(--structure);font-weight:700;margin-bottom:.2rem;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
.viz-stage svg{width:100%;height:auto;display:block;max-width:34rem;margin:0 auto}
.viz .axis{stroke:var(--ink-soft);stroke-width:1}
.viz .curve{fill:none;stroke:var(--structure);stroke-width:2}
.viz .approx{fill:none;stroke:var(--deep);stroke-width:2;stroke-dasharray:4 3}
.viz .secant{stroke:var(--warn);stroke-width:2}
.viz .bar{fill:var(--accent);fill-opacity:.22;stroke:var(--accent);stroke-width:.8}
.viz .dot{fill:var(--warn)}
.viz .lbl{font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:11px;fill:var(--ink-soft)}
.viz-ctl{display:flex;align-items:center;gap:.6rem;margin:.7rem auto 0;max-width:34rem;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:.8rem;color:var(--ink-soft)}
.viz-ctl input[type=range]{flex:1;accent-color:var(--structure)}
.viz-ctl output{font-variant-numeric:tabular-nums;font-weight:700;color:var(--structure);
  min-width:6.5rem;text-align:right}
.viz-cap{font-size:.86rem;color:var(--ink-soft);margin:.7rem 0 0;line-height:1.5}
@media print{.viz-ctl{display:none}.viz{break-inside:avoid}}

