table {
border-collapse: collapse;
}
tr {
padding: 1rem 0 0 0;
}
tr:first-child {
padding: 0;
}
td {
/* Vertical space is the table's line-height (:leading, set on the
by table.py -- the html equivalent of \arraystretch), so no
vertical padding here: it was an html-only extra that kept rows
looser than the pdf's. Horizontal padding is :colsep, the same
value that becomes \tabcolsep; the fallback is for a table that
reaches this rule without the property. */
padding: 0 var(--colsep, 4pt);
vertical-align: top;
}
.vcenter {
vertical-align: middle;
}
/* Edge cells of a table with no outer vertical line (classes emitted by
table.py): the outer padding is dropped so the cell text aligns with
the text margin. With an outer line the padding stays -- text against
a border looks worse than text inset from a margin. The tex
counterpart is @{} in the column spec. */
.Fl {
padding-left: 0;
}
.Fr {
padding-right: 0;
}
.line_top {
border-top: 1px black solid;
}
.line_bottom {
border-bottom: 1px black solid;
}
.pad_top {
padding-top: .3rem;
}
.pad_bottom {
padding-bottom: .3rem;
}
:root {
--cell-border: 1px black solid;
}
/* The space between a rule and the text on either side of it: a cell is
padded on the side that CARRIES the rule, so a row with no rule is
untouched, a partial :hline pads only the cells it crosses, and the
table's outer rules are padded on the inner side alone. The amounts
began as booktabs' defaults (0.4ex above a rule, 0.65ex below one) and
were tuned by eye, 2026-09-20: half of the space below moved above, so
0.725ex above and 0.325ex below, the total unchanged. The tex target's
pair is in table.py (TEX_RULE_ABOVE/_BELOW) and differs on purpose -- a
TeX row and an html row distribute their own height differently around
the text. --rulesep is @table's :rulesep, a multiplier, set on the
by table.py. "ex" is the x-height as RENDERED
(font-size-adjust), so the space tracks the visible type. */
.Bt {
border-top: var(--cell-border);
padding-top: calc(var(--rulesep, 1) * 0.325ex);
}
.Br {
border-right: var(--cell-border);
}
.Bb {
border-bottom: var(--cell-border);
padding-bottom: calc(var(--rulesep, 1) * 0.725ex);
}
.Bl {
border-left: var(--cell-border);
}
.Hl {
text-align: left;
}
.Hc {
text-align: center;
}
.Hr {
text-align: right;
}
/* A cell of a 'fit' column mixed with sized columns: nowrap floors the
column at its widest entry (the tex \widthof semantics). In a
full-width table (fractions/'*') the Wpct 1% width is added -- the
classic shrink idiom, so the column survives surplus distribution and
the extra window width flows to the sized columns. In a content-sized
'fill' table Wpct must NOT be used: a percentage cell blows an
auto-width table up to full width. */
.Wfit {
white-space: nowrap;
}
.Wpct {
width: 1%;
}
.cell_arrow {
padding: 1rem;
font-size: 1.5rem;
color: rgb(25%,25%,25%);
}