*,*::before,*::after{box-sizing:border-box}
:root{
  --paper:#fbfaf6; --ink:#14171a; --rule:#ded8ca; --rule-soft:#ece7db;
  --accent:#0a5c46; --accent-ink:#07422f; --muted:#6b6456; --flag:#a8431f;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 var(--sans);
  font-feature-settings:"tnum" 1;}
a{color:var(--accent-ink);text-underline-offset:2px;text-decoration-thickness:1px}
a:hover{color:var(--flag)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:#fff;padding:8px;border:1px solid var(--ink);z-index:10}

/* shell */
.shell{display:flex;min-height:100vh}
.side{width:252px;flex:0 0 252px;border-right:1px solid var(--rule);padding:26px 20px 40px;
  position:sticky;top:0;height:100vh;overflow-y:auto;background:#f7f5ef}
.main{flex:1;min-width:0;padding:26px 32px 64px;max-width:860px}

/* brand */
.brand{display:block;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--rule);
  padding-bottom:14px;margin-bottom:18px}
.brand b{display:block;font-size:19px;letter-spacing:-.02em;font-weight:700}
.brand span{display:block;font:11px/1.4 var(--mono);color:var(--muted);text-transform:uppercase;
  letter-spacing:.09em;margin-top:5px}
.navgroup{margin-bottom:20px}
.navgroup>a.h{display:block;font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;
  color:var(--muted);text-decoration:none;padding-bottom:7px;border-bottom:1px solid var(--rule-soft);margin-bottom:7px}
.navgroup>a.h:hover{color:var(--accent-ink)}
.navgroup ul{list-style:none;margin:0;padding:0}
.navgroup li a{display:block;padding:4px 0;font-size:13.5px;line-height:1.35;text-decoration:none;color:#3a3630}
.navgroup li a:hover{color:var(--accent-ink);text-decoration:underline}
.navgroup li a[aria-current]{color:var(--accent);font-weight:600}
.sidefoot{font:11px/1.6 var(--mono);color:var(--muted);border-top:1px solid var(--rule-soft);padding-top:12px}
.sidefoot a{color:var(--muted);text-decoration:none}
.sidefoot a:hover{text-decoration:underline}

/* page head */
.eyebrow{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--flag);margin:0 0 12px}
h1{font-size:clamp(28px,4.2vw,40px);line-height:1.12;letter-spacing:-.025em;margin:0 0 14px;font-weight:700;max-width:19ch}
.lead{font-size:18.5px;line-height:1.55;color:#3d3931;margin:0 0 26px;max-width:60ch}
.rule{height:0;border:0;border-top:1px solid var(--rule);margin:0 0 26px}

/* body */
.prose{max-width:70ch}
.prose h2{font-size:19px;letter-spacing:-.01em;margin:38px 0 12px;padding-top:14px;
  border-top:1px solid var(--rule);font-weight:700}
.prose h3{font-size:16px;margin:26px 0 8px;font-weight:700}
.prose p{margin:0 0 16px}
.prose ul,.prose ol{margin:0 0 18px;padding-left:0;list-style:none}
.prose ul li{position:relative;padding-left:20px;margin-bottom:9px}
.prose ul li::before{content:"";position:absolute;left:4px;top:11px;width:6px;height:1px;background:var(--flag)}
.prose ol{counter-reset:step}
.prose ol li{position:relative;padding-left:34px;margin-bottom:11px;counter-increment:step}
.prose ol li::before{content:counter(step,decimal-leading-zero);position:absolute;left:0;top:2px;
  font:11px/1.5 var(--mono);color:var(--flag);letter-spacing:.06em}
.prose blockquote{margin:24px 0;padding:14px 0 14px 16px;border-left:2px solid var(--accent);
  background:#f2efe6}
.prose blockquote p{margin:0;font-size:15.5px}
.tablewrap{overflow-x:auto;margin:0 0 22px}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:8px 12px 8px 0;border-bottom:1px solid var(--rule-soft);vertical-align:top}
th{font:11px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);
  border-bottom:1px solid var(--rule);padding-bottom:7px}
a.ext{color:var(--flag)}

/* on this page */
.onthis{border:1px solid var(--rule);padding:14px 16px;margin:0 0 30px;max-width:70ch;background:#f7f5ef}
.onthis p{font:11px/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0 0 9px}
.onthis ol{list-style:none;margin:0;padding:0;counter-reset:t;
  columns:2;column-gap:26px}
.onthis li{counter-increment:t;font-size:13.5px;margin-bottom:5px;break-inside:avoid}
.onthis li a{text-decoration:none;color:#3a3630}
.onthis li a::before{content:counter(t,decimal-leading-zero) "  ";font:10px var(--mono);color:var(--flag)}
.onthis li a:hover{color:var(--accent-ink);text-decoration:underline}

/* index listings */
.rows{margin:0 0 8px;border-top:1px solid var(--rule)}
.row{display:flex;gap:18px;padding:15px 0;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit}
.row:hover{background:#f4f1e8}
.row .num{flex:0 0 34px;font:11px/1.8 var(--mono);color:var(--flag);letter-spacing:.06em}
.row .txt{min-width:0}
.row .t{font-weight:650;font-size:15.5px;letter-spacing:-.01em;margin-bottom:3px}
.row:hover .t{color:var(--accent-ink)}
.row .d{font-size:13.5px;color:var(--muted);line-height:1.5}

/* home */
.stage{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--rule);margin:0 0 34px}
.stage div{padding:16px 18px;border-right:1px solid var(--rule-soft)}
.stage div:last-child{border-right:0}
.stage b{display:block;font:11px/1 var(--mono);color:var(--flag);letter-spacing:.1em;margin-bottom:8px}
.stage p{margin:0;font-size:14px;line-height:1.5;color:#3d3931}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin:34px 0 10px}
.sec-head h2{font-size:13px;font:12px/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);margin:0}
.sec-head a{font-size:12.5px;text-decoration:none}
.sec-head a:hover{text-decoration:underline}

footer.foot{border-top:1px solid var(--rule);margin-top:52px;padding-top:16px;
  font:12px/1.7 var(--mono);color:var(--muted);display:flex;flex-wrap:wrap;gap:18px}
footer.foot a{color:var(--muted);text-decoration:none}
footer.foot a:hover{color:var(--accent-ink);text-decoration:underline}

@media (max-width:900px){
  .shell{display:block}
  .side{width:auto;height:auto;position:static;border-right:0;border-bottom:1px solid var(--rule);
    padding:18px 20px 20px}
  .navgroup{margin-bottom:14px}
  .navgroup ul{columns:2;column-gap:20px}
  .main{padding:22px 20px 48px;max-width:none}
  .stage{grid-template-columns:1fr}
  .stage div{border-right:0;border-bottom:1px solid var(--rule-soft)}
  .onthis ol{columns:1}
}
@media print{.side{display:none}}