
/* V2 site pages. Kept in this file because the CSP is style-src 'self' and
   there is no static asset directory. */
table.sites{border-collapse:collapse;width:100%;margin:0.75rem 0}
table.sites th,table.sites td{border-bottom:1px solid #d8dee9;padding:0.4rem 0.6rem;text-align:left}
table.sites th{font-weight:600}
table.sites td.num{text-align:right;font-variant-numeric:tabular-nums}
/* .numeric and .hint were used 10 and 36 times across the V3 pages and defined
   nowhere — so every amount rendered left-aligned in proportional figures, and
   every explanatory sentence rendered at the weight of body copy. This
   repository writes page text as explanation rather than labels, which only
   works if the explanation looks like one. Found by the V3 UI/UX review. */
td.numeric,th.numeric{text-align:right;font-variant-numeric:tabular-nums}
.hint{color:#4c566a;font-size:.9em}
.inline{display:inline}
/* Terminal, unreversible actions. Rejecting ends a request — a new one has to
   be started and the site-month's number advances — and deleting a draft is
   gone. With default-src 'none' there is no confirm(), so the least a page can
   do is not make them look like Save. */
button.danger{border-color:#b91c1c;color:#b91c1c;font-weight:600}
.inline+.inline{margin-left:.35rem}
.tier{margin:1.25rem 0}
.tier h3{margin:0 0 0.25rem}
.tier p.hint{margin:0 0 0.5rem;color:#4c566a}
.candidate{color:#4c566a;font-style:italic}
.retired{text-decoration:line-through;color:#4c566a}

:root { color-scheme: light; font-family: system-ui, sans-serif; line-height: 1.45; }
body { margin: 0; color: #17202a; background: #f5f7fa; }
header, nav, main, footer { max-width: 76rem; margin: auto; padding: 1rem; }
header { background: #17324d; color: white; max-width: none; }
nav { display: flex; gap: 1rem; flex-wrap: wrap; }
main { background: white; }
a { color: #075985; }
label { display: block; margin-block: .65rem; }
input { width: min(100%, 24rem); box-sizing: border-box; padding: .5rem; }
button { padding: .55rem .85rem; cursor: pointer; }
button[disabled] { cursor: not-allowed; }
fieldset { border: 1px solid #b9c4cf; margin-block: 1rem; padding: 1rem; }
legend { font-weight: 700; }
.notice { border-left: .35rem solid #2563eb; background: #eff6ff; padding: .75rem; }
.warning { border-left-color: #b45309; background: #fffbeb; }
.error { border-left-color: #b91c1c; background: #fef2f2; }
.skip-link { position: absolute; left: -10000px; }
.skip-link:focus { left: 1rem; top: 1rem; background: white; padding: .5rem; z-index: 10; }
.table-wrap { overflow-x: auto; }
a:focus-visible, button:focus-visible, input:focus-visible, .table-wrap:focus {
  outline: .2rem solid #f59e0b; outline-offset: .15rem;
}
table { border-collapse: collapse; width: 100%; }
caption { font-weight: 700; text-align: left; margin-block: .5rem; }
th, td { border: 1px solid #ccd5df; padding: .5rem; text-align: left; vertical-align: top; }
.source-id { overflow-wrap: anywhere; word-break: break-word; }
/* A short standing label, not a status: it says what a row IS, so it
   keeps the body colour and earns its distinction from the border. */
.tag { display: inline-block; border: 1px solid currentColor;
  border-radius: 3px; padding: 0 .35em; font-size: .82em;
  white-space: nowrap; }
.actions { display: flex; gap: .75rem; flex-wrap: wrap; align-items: end; }
dl { display: grid; grid-template-columns: minmax(9rem, 14rem) 1fr; gap: .4rem 1rem; }
dt { font-weight: 700; }
dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 44rem) {
  dl { display: block; }
  dd { margin-bottom: .75rem; }
  th, td { min-width: 8rem; }
}
