/* Palette and type follow the original prototype's portfolio side (reference/legacy-ui/style.css). */
:root {
  --paper: #EEF2EF; --surface: #F8FAF8; --ink: #1D2B3A; --muted: #5B6773;
  --rule: #C9D1CB; --blue: #2F5D9E; --red: #B8322A; --green: #3F7D52; --salmon: #F7E9E4;
  --serif: Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; display: flex; flex-direction: column; background: var(--salmon);
  color: var(--ink); font: 400 1rem/1.5 var(--sans); }
.masthead { display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1rem clamp(1rem, 4vw, 2.5rem); border-bottom: 1px solid var(--rule); }
.brand { font: 600 1.25rem var(--serif); }
main { flex: 1; padding: 2rem clamp(1rem, 4vw, 2.5rem); }
.card { background: var(--surface); border: 1px solid var(--rule); border-radius: 6px; padding: 1.5rem; max-width: 40rem; margin: 0 auto; }
.card.narrow { max-width: 26rem; }
h1 { font: 600 1.56rem var(--serif); margin: 0 0 1rem; }
label { display: block; margin: 0 0 1rem; font-weight: 500; }
input[type=text], input[type=email], input[type=password] { display: block; width: 100%; margin-top: .25rem;
  padding: .55rem .6rem; border: 1px solid var(--rule); border-radius: 4px; font: inherit; background: #fff; }
button, a.button { display: inline-block; padding: .55rem 1rem; border: 0; border-radius: 4px; background: var(--blue);
  color: #fff; font: inherit; font-weight: 500; cursor: pointer; text-decoration: none; }
button.link { background: none; color: var(--blue); padding: 0 .25rem; text-decoration: underline; }
.inline { display: flex; align-items: center; gap: .5rem; margin: 0; }
.error { color: var(--red); font-weight: 500; }
.ok { color: var(--green); font-weight: 500; }
.muted { color: var(--muted); font-size: .9rem; }
code { font-family: var(--mono); }
.qr { display: flex; justify-content: center; margin: 1rem 0; }
.qr svg { max-width: 14rem; height: auto; }
.codes { list-style: none; padding: 0; columns: 2; font-size: 1.05rem; }
.codes li { padding: .2rem 0; }
.notice { padding: 1rem clamp(1rem, 4vw, 2.5rem); font-size: .85rem; color: var(--muted); border-top: 1px solid var(--rule); }

/* ---- signed-in app */
.topnav a, .subnav nav a { margin-right: 1rem; color: var(--blue); text-decoration: none; font-weight: 500; }
.card.wide { max-width: 64rem; margin-bottom: 1.5rem; }
h2 { font: 600 1.25rem var(--serif); margin: 1.5rem 0 .75rem; }
table { width: 100%; border-collapse: collapse; margin: .5rem 0 1rem; font-variant-numeric: tabular-nums; }
th, td { text-align: left; padding: .45rem .5rem; border-bottom: 1px solid var(--rule); vertical-align: top; }
th { font-weight: 600; color: var(--muted); font-size: .85rem; }
td.num, th.num { text-align: right; }
.row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem 1rem; }
.row label { margin: 0; }
.stack > * { margin-bottom: 1rem; }
select { display: block; margin-top: .25rem; padding: .5rem; border: 1px solid var(--rule); border-radius: 4px; font: inherit; background: #fff; }
button.danger { background: #b3261e; color: #fff; border: 1px solid #b3261e; }
button.secondary { background: #fff; color: var(--blue); border: 1px solid var(--blue); }
.subnav h1 { margin-bottom: .25rem; }
.subnav { margin-bottom: 1rem; }
.banner { background: #FFF6DD; border: 1px solid #E2C766; padding: .6rem .8rem; border-radius: 4px; margin: 0 0 1rem; }
.badge { display: inline-block; padding: .05rem .5rem; border-radius: 99px; font-size: .8rem; border: 1px solid var(--rule); background: #fff; }
.totals { display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; margin: 1rem 0 1.5rem; }
.figure { display: block; font: 600 1.56rem var(--serif); }
.figlabel { display: block; color: var(--muted); font-size: .85rem; }
.pos { color: var(--green); } .neg { color: var(--red); }
th a { color: inherit; text-decoration: none; }
th[aria-sort="ascending"] a::after { content: " ▲"; } th[aria-sort="descending"] a::after { content: " ▼"; }
button:disabled { opacity: .5; cursor: not-allowed; }
label.check { font-weight: 400; }
label.check input { display: inline; width: auto; margin-right: .4rem; }
ol li { margin-bottom: .75rem; }
.proposal { border: 1px solid var(--rule); border-radius: 6px; padding: .75rem 1rem; margin: 0 0 1rem; background: #fff; }
.votes { list-style: none; padding: 0; margin: .5rem 0; font-size: .95rem; }
fieldset { border: 1px solid var(--rule); border-radius: 6px; margin: 0 0 1rem; padding: .75rem 1rem; }
legend { font-weight: 600; padding: 0 .4rem; }
textarea { display: block; width: 100%; margin-top: .25rem; padding: .5rem; border: 1px solid var(--rule); border-radius: 4px; font: inherit; background: #fff; }
.mandate-form input[type=text] { width: auto; display: inline-block; }
.mandate-form table input[type=text] { width: 100%; }
dl.facts { display: grid; grid-template-columns: 11rem 1fr; gap: .5rem 1rem; margin: 1rem 0; }
dl.facts dt { color: var(--muted); font-weight: 600; } dl.facts dd { margin: 0; }
.prewrap { white-space: pre-wrap; }
pre.prompt { background: #fff; border: 1px solid var(--rule); border-radius: 6px; padding: 1rem; white-space: pre-wrap; font: .9rem/1.45 var(--mono); }
a.button.secondary-link { background: #fff; color: var(--blue); border: 1px solid var(--blue); }
ul.plain { list-style: none; padding: 0; } ul.plain li { margin: 0 0 .75rem; }
del { background: #F9D9D6; text-decoration: line-through; } ins { background: #D9EDDD; text-decoration: none; }
.banner.ai { background: #FDECEA; border-color: #E4A59F; }
.secnav a { display: inline-block; min-width: 1.8rem; text-align: center; padding: .15rem .4rem; margin: 0 .2rem .4rem 0; border: 1px solid var(--rule); border-radius: 4px; background: #fff; text-decoration: none; color: var(--ink); }
.secnav a.partial, .badge.partial { border-style: dashed; } .secnav a.no-data, .badge.no-data { border-style: dotted; color: var(--muted); }
.badge.res-pass { background: #E3F1E7; } .badge.res-fail { background: #F9D9D6; } .badge.res-partial { background: #FFF6DD; }
.events { list-style: none; padding: 0; } .events li { padding: .15rem 0; }
a.small { font-size: .85rem; margin-left: .4rem; } a.cite { text-decoration: none; font-size: .85em; vertical-align: super; }
ol.sources li { margin-bottom: .4rem; word-break: break-word; }
@media print {
  .topnav, .masthead, .subnav, .noprint, form, .notice { display: none !important; }
  body { background: #fff; } .card { border: 0; padding: 0; max-width: none; } h3 { break-after: avoid; }
}
.gates-panel { border: 1px solid var(--rule); border-radius: 6px; padding: .5rem 1rem; margin: 0 0 1.25rem; background: #fff; }
.sig-now .badge, .sig-tripped .badge, .gmark.sig-now, .gmark.sig-tripped, .badge.alert { background: #F9D9D6; border-color: var(--red); color: var(--red); font-weight: 600; }
.sig-soon .badge, .gmark.sig-soon { background: #FFF1D6; } .sig-near .badge, .gmark.sig-near { background: #FFF9E8; }
.sig-unknown .badge, .gmark.sig-unknown, .sig-manual .badge, .gmark.sig-manual { background: #EEF2EF; color: var(--muted); }
.gmark { font-size: .8rem; padding: 0 .4rem; border-radius: 99px; border: 1px solid var(--rule); margin-left: .35rem; white-space: nowrap; }
