
:root{
  --paper:#faf8f3;--ink:#1b1a17;--muted:#5f5a50;--rule:#d8d2c4;--soft:#f0ebdf;
  --accent:#8b1d1d;--accent-ink:#ffffff;--good:#1d4d2b;
  --serif:Charter,"Bitstream Charter","Iowan Old Style","Sitka Text",Georgia,Cambria,"Times New Roman",serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){
  :root{--paper:#141311;--ink:#ebe6dc;--muted:#a59f92;--rule:#39352e;--soft:#1e1c19;
    --accent:#e2745f;--accent-ink:#141311;--good:#8fc79f;}
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:1.0625rem/1.6 var(--serif);
  overflow-wrap:break-word;word-wrap:break-word}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{text-decoration-thickness:2px}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.wrap{max-width:46rem;margin:0 auto;padding:0 16px}
.wide{max-width:66rem}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:8px;background:var(--paper);padding:4px 8px}

/* masthead */
.mast{border-bottom:1px solid var(--rule);margin-bottom:2rem}
.mast .wrap{padding-top:1.25rem;padding-bottom:.75rem;text-align:center}
.mark{display:inline-block;font:900 clamp(2rem,9vw,3.25rem)/1 var(--serif);letter-spacing:.14em;
  text-decoration:none;border-top:4px solid var(--ink);border-bottom:1px solid var(--ink);padding:.35rem 0 .3rem .14em}
.tagline{margin:.55rem 0 0;font:italic .98rem/1.4 var(--serif);color:var(--muted)}
.nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem 1.25rem;margin:.9rem 0 0;padding:0;list-style:none;
  font:600 .78rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.nav a{text-decoration:none;padding:.35rem 0;display:inline-block}
.nav a[aria-current]{border-bottom:2px solid var(--accent)}

/* the thesis */
.thesis{margin:0 0 2.2rem;font:1.15rem/1.55 var(--serif)}
.thesis span{display:block}
.thesis .t-last{margin-top:.55rem;font-weight:700;font-style:italic}
main .wrap>.thesis:first-child{text-align:center}

/* type */
h1{font:700 clamp(1.7rem,5.5vw,2.4rem)/1.15 var(--serif);margin:.2rem 0 .6rem;letter-spacing:-.01em}
h2{font:700 1.4rem/1.25 var(--serif);margin:2.2rem 0 .6rem}
h3{font:700 1.1rem/1.3 var(--serif);margin:1.6rem 0 .4rem}
.kicker{font:600 .75rem/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0}
.dek{font-size:1.15rem;color:var(--muted);margin:.2rem 0 1rem}
.meta{font:.85rem/1.5 var(--sans);color:var(--muted)}
.section-head{font:700 .8rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  border-top:3px double var(--ink);padding-top:.6rem;margin:2.6rem 0 1rem}
blockquote{margin:1rem 0;padding:0 0 0 1rem;border-left:3px solid var(--rule);color:var(--ink)}
code{font:.9em var(--mono);background:var(--soft);padding:0 .25em}
.empty{font-style:italic;color:var(--muted);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:1.2rem 0}

/* the notice */
.notice{font:.88rem/1.5 var(--sans);border:1px solid var(--rule);border-left:4px solid var(--ink);
  background:var(--soft);padding:.7rem .9rem;margin:1.2rem 0 1.6rem}

/* grade badges */
.grade{display:inline-flex;align-items:center;justify-content:center;flex:none;width:2.3rem;height:2.3rem;
  font:900 1.45rem/1 var(--serif);border:2px solid var(--ink);color:var(--ink);background:transparent}
.grade-a,.grade-b{color:var(--good);border-color:var(--good)}
.grade-c{background:var(--soft)}
.grade-d,.grade-f{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.grade-none{border-style:dashed;color:var(--muted);border-color:var(--muted);font-size:1rem}

/* front page */
.case-item{border-top:1px solid var(--rule);padding:1.3rem 0}
.case-item:first-of-type{border-top:3px double var(--ink)}
.case-item h2{margin:.25rem 0 .4rem;font-size:1.45rem}
.case-item h2 a{text-decoration:none}.case-item h2 a:hover{text-decoration:underline}
.case-item .summary{margin:0 0 .8rem}
.badges{display:flex;flex-wrap:wrap;gap:.6rem .9rem;list-style:none;margin:.4rem 0 0;padding:0}
.badges li{display:flex;align-items:center;gap:.45rem;font:.82rem/1.2 var(--sans);max-width:11rem}
.badges .grade{width:1.9rem;height:1.9rem;font-size:1.15rem}

/* the memo */
.memo h2{font-size:1.3rem;border-top:1px solid var(--rule);padding-top:1.1rem}
.memo h2:first-child{border-top:0;padding-top:0;margin-top:1rem}
.memo ul,.memo ol{padding-left:1.3rem}
.memo li{margin:.25rem 0}

/* the coverage table */
.coverage{width:100%;border-collapse:collapse;font:.92rem/1.5 var(--sans)}
.coverage th{text-align:left;font:700 .72rem/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);border-bottom:2px solid var(--ink);padding:.5rem .6rem .5rem 0}
.coverage td{vertical-align:top;border-bottom:1px solid var(--rule);padding:.8rem .8rem .8rem 0}
.coverage .c-grade{width:9rem}
.coverage .c-outlet{width:11rem}
.outlet-name{font-weight:700;display:block}
.lean{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.headline{display:block;margin-top:.2rem;font-family:var(--serif)}
.right-list,.issue-list{margin:0;padding:0;list-style:none}
.right-list li{margin:0 0 .45rem;padding-left:1.1rem;position:relative}
.right-list li::before{content:"\2713";position:absolute;left:0;color:var(--good)}
.issue{margin:0 0 1rem}
.issue:last-child{margin-bottom:0}
.issue-kind{font:700 .7rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.issue blockquote{margin:.3rem 0;font-family:var(--serif);font-style:italic}
.issue .fix{margin:.2rem 0}
.issue .cite,.issue .tag{font-size:.8rem;color:var(--muted)}
.none{color:var(--muted);font-style:italic}
.grade-summary{display:block;margin:.35rem 0 0;color:var(--muted);font-size:.85rem}
@media (max-width:760px){
  .coverage,.coverage tbody,.coverage tr,.coverage td{display:block;width:100%}
  .coverage thead{position:absolute;left:-9999px}
  .coverage tr{border-top:2px solid var(--ink);padding:.6rem 0 .2rem}
  .coverage td{border:0;padding:.35rem 0}
  .coverage td.c-grade{display:flex;align-items:center;gap:.6rem;width:auto}
  .coverage td[data-label]::before{content:attr(data-label);display:block;font:700 .7rem/1.6 var(--sans);
    letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
  .coverage td.c-grade::before{display:none}
}

/* lists of things */
.filings{padding-left:1.4rem}.filings li{margin:.35rem 0}
.plain-list{list-style:none;padding:0}.section-head+.plain-list>li:first-child{border-top:0;padding-top:0}.plain-list>li{border-top:1px solid var(--rule);padding:1rem 0}
.cat h2{margin-top:0;font-size:1.25rem}
.examples{font:.92rem/1.5 var(--sans);padding-left:1.1rem}
.examples li{margin:.4rem 0}

/* forms */
form.report label{display:block;font:700 .8rem/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;margin:1rem 0 .3rem}
form.report input[type=text],form.report input[type=email],form.report input[type=url],form.report textarea{
  width:100%;font:1rem/1.4 var(--sans);padding:.6rem;border:1px solid var(--muted);background:var(--paper);color:var(--ink);border-radius:0}
form.report textarea{min-height:10rem}
.hint{font:.82rem/1.4 var(--sans);color:var(--muted);margin:.25rem 0 0}
fieldset.types{border:0;margin:1rem 0 0;padding:0}
fieldset.types legend{font:700 .8rem/1.4 var(--sans);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .4rem;padding:0}
form.report label.choice{display:flex;gap:.6rem;align-items:flex-start;font:1rem/1.4 var(--sans);letter-spacing:0;text-transform:none;
  margin:0;padding:.55rem .2rem;border-top:1px solid var(--rule);cursor:pointer}
form.report label.choice input{margin-top:.25rem;flex:none}
form.report label.choice .hint{display:block;margin:.1rem 0 0}
form.report input[type=url]{margin:0 0 .4rem}
details.hint summary{cursor:pointer}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
button{font:700 .85rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:.8rem 1.3rem;margin-top:1.2rem;
  background:var(--ink);color:var(--paper);border:0;cursor:pointer}

/* today */
.today .cand h2{margin:.2rem 0 .3rem;font-size:1.2rem}
.subs{list-style:none;padding:0;margin:.6rem 0 0}
.subs li{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.35rem 0;font:.92rem/1.4 var(--sans)}
.subs .note{flex-basis:100%;color:var(--muted);font-size:.85rem}
.pending{font-size:.78rem;color:var(--accent)}
.tag{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.vote,.vote-count{font:700 .8rem/1 var(--sans);padding:.35rem .5rem;border:1px solid var(--rule);background:var(--paper);color:var(--ink);margin:0}
.vote{cursor:pointer}.vote[disabled]{color:var(--good);border-color:var(--good);cursor:default}
form.inline{display:inline;margin:0}
button.link{background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer;letter-spacing:0;text-transform:none}
details.suggest{margin:.8rem 0 0}details.suggest summary{cursor:pointer;font:.9rem/1.4 var(--sans)}
a.button{display:inline-block;font:700 .85rem/1 var(--sans);letter-spacing:.06em;padding:.8rem 1.2rem;background:var(--ink);color:var(--paper);text-decoration:none}

/* foot */
.foot{border-top:1px solid var(--rule);margin-top:3.5rem;padding:1.4rem 0 2.5rem;font:.82rem/1.6 var(--sans);color:var(--muted)}
.foot p{margin:.2rem 0}

.flow{list-style:none;margin:1.2rem 0;padding:0;counter-reset:step}
.flow li{position:relative;border:1px solid var(--rule);border-left:4px solid var(--ink);background:var(--paper);
  padding:.75rem .9rem;margin:0 0 1.6rem;counter-increment:step}
.flow li:not(:last-child)::after{content:"";position:absolute;left:1.6rem;bottom:-1.6rem;height:1.6rem;border-left:2px solid var(--muted)}
.flow li:not(:last-child)::before{content:"";position:absolute;left:calc(1.6rem - 5px);bottom:calc(-1.6rem + 1px);
  border:6px solid transparent;border-top-color:var(--muted);border-bottom:0;z-index:1}
.flow .step{font:700 1.05rem/1.3 var(--serif);display:block}
.flow .step::before{content:counter(step) ". ";color:var(--muted)}
.flow .tool{display:inline-block;font:600 .72rem/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);margin:.15rem 0 .35rem}
.flow p{margin:0;font-size:.95rem}
.flow li.human{border-left-color:var(--accent);background:var(--soft)}
.status{display:inline-block;font:700 .66rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  padding:.3rem .45rem;border:1px solid currentColor;vertical-align:middle;margin-left:.4rem}
.status-run{color:var(--good)}.status-build{color:var(--ink)}.status-plan{color:var(--muted);border-style:dashed}
.lessons dt{font-weight:700;margin-top:1rem}.lessons dd{margin:.2rem 0 0}
.costs{width:100%;border-collapse:collapse;font:.92rem/1.5 var(--sans);margin:1rem 0}
.costs th{text-align:left;font:700 .72rem/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);border-bottom:2px solid var(--ink);padding:.5rem .6rem .5rem 0}
.costs td{border-bottom:1px solid var(--rule);padding:.6rem .6rem .6rem 0;vertical-align:top}
.video{position:relative;width:100%;aspect-ratio:16/9;background:#000;margin:1rem 0 .4rem}
.video video{position:absolute;inset:0;width:100%;height:100%}
.video.soon{display:flex;align-items:center;justify-content:center;background:var(--soft);border:1px dashed var(--muted)}
.video.soon p{font:italic 1rem/1.4 var(--serif);color:var(--muted);text-align:center;padding:0 16px;margin:0}
.chapters{font:.9rem/1.5 var(--sans);columns:2 14rem;padding-left:1.3rem;margin:.8rem 0 0}
.chapters li{break-inside:avoid;margin:.15rem 0}
.ts{font:600 .72rem/1 var(--mono);color:var(--muted);margin-left:.4rem;text-decoration:none;white-space:nowrap}
.ts:hover{text-decoration:underline}
.flow.arch{margin:.6rem 0 0}
.next{text-align:center;color:var(--muted);font:1.4rem/1 var(--sans);margin:.2rem 0}
.tools tr.group th{font:700 .72rem/1.2 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);
  padding:1.1rem 0 .4rem;border-bottom:1px solid var(--ink);text-align:left}
.train-status{margin:.4rem 0 1rem}.train-status .status{margin-left:0}
.costs td.num,.costs th.num{text-align:right;padding-right:0;white-space:nowrap}
