/* The Assembly (assembly.<domain>): a modern parliament website. Members, bills with their stages, votes, committees,
   the official report and the returns of elections. Old journal pages (cached) keep their class names; all are styled here. */
.st-assembly { --st-font: 'Source Sans 3', 'Helvetica Neue', Arial, sans-serif; --st-head: 'Source Serif 4', Georgia, serif;
  --st-brand: #0c4a36; --st-brand-light: #d7ebe2; --st-feedback-bg: #0c4a36; --link: #0b6b4f; --link-hover: #06402f; font-size: 1.08rem; }
.st-assembly :is(h1, h2) { font-weight: 600; letter-spacing: -.005em; }

/* party colours */
.p-reed-party { --pc: #2f7d4a; } .p-assembly-union { --pc: #2b4f8f; } .p-continuity-party { --pc: #b08a1e; }
.p-workers-front { --pc: #b3261e; } .p-marsh-league { --pc: #3f8f84; } .p-vacant, .p-independent { --pc: #b1b4b6; }
.swatch { display: inline-block; width: .8rem; height: .8rem; border-radius: 50%; background: var(--pc, #999); margin-right: .45rem; vertical-align: -.05em; }

/* ---------- chrome ---------- */
.as-header { background: #0c4a36; color: #fff; font-family: var(--st-font); }
.as-header-in { display: flex; justify-content: space-between; align-items: center; gap: 1rem 2rem; flex-wrap: wrap; padding-top: 1rem; padding-bottom: 1rem; }
.as-brand { display: inline-flex; align-items: center; gap: .8rem; color: #fff !important; text-decoration: none !important; }
.as-portcullis { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; border: 2px solid rgba(255,255,255,.85); flex: none; }
.as-portcullis svg { width: 26px; height: 26px; fill: #fff; }
.as-brand-text b { display: block; font: 600 1.55rem/1 'Source Serif 4', Georgia, serif; letter-spacing: -.01em; }
.as-brand-text small { display: block; font-size: .92rem; opacity: .85; margin-top: .2rem; letter-spacing: .02em; }
.as-brand:hover b { text-decoration: underline; text-underline-offset: 4px; }
.as-search { display: flex; flex: 0 1 24rem; min-width: min(100%, 16rem); }
.as-search input { flex: 1; min-width: 0; font: 1rem/1.3 var(--st-font); padding: .55rem .8rem; border: 0; border-radius: 3px 0 0 3px; background: #fff; color: #0b0c0c; -webkit-appearance: none; }
.as-search button { width: 2.9rem; border: 0; border-radius: 0 3px 3px 0; background: #e8b64c; color: #0b0c0c; display: grid; place-items: center; cursor: pointer; }
.as-search svg { width: 20px; height: 20px; }
.as-nav { background: #083828; }
.as-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.7rem; }
.as-nav li { margin: 0; }
.as-nav a { display: block; padding: .75rem 0 .65rem; color: #fff !important; text-decoration: none !important; font-weight: 600; font-size: 1rem; border-bottom: 4px solid transparent; }
.as-nav a:hover { border-bottom-color: #e8b64c; }
.as-footer { background: #0c4a36; color: #fff; font: .95rem/1.5 var(--st-font); padding: 2.4rem 0 2rem; }
.as-footer a { color: #fff !important; }
.as-foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 1.6rem 2.4rem; }
.as-foot-grid h2 { font: 700 1rem/1.3 var(--st-font); margin: 0 0 .7rem; letter-spacing: 0; }
.as-foot-grid ul { list-style: none; margin: 0; padding: 0; }
.as-foot-grid li { margin: 0 0 .5rem; }
.as-foot-brand { display: flex; gap: .9rem; align-items: flex-start; }
.as-foot-brand p { margin: 0; opacity: .9; }
.as-foot-brand b { display: block; font: 600 1.15rem/1.3 'Source Serif 4', Georgia, serif; margin-bottom: .2rem; opacity: 1; }
.as-foot-legal { border-top: 1px solid rgba(255,255,255,.3); margin: 1.8rem 0 0; padding-top: 1.1rem; opacity: .9; max-width: 70ch; }
@media (max-width: 860px) { .as-foot-grid { grid-template-columns: 1fr 1fr; } .as-foot-brand { grid-column: 1 / -1; } }
@media (max-width: 560px) { .as-nav ul { gap: 0 1.1rem; } .as-nav a { font-size: .95rem; padding: .55rem 0 .45rem; } .as-brand-text b { font-size: 1.3rem; } .as-search { flex-basis: 100%; } }

/* ---------- home ---------- */
.as-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 1.5rem 3rem; align-items: center;
  background: #e9f3ee; box-shadow: 0 0 0 100vmax #e9f3ee; clip-path: inset(0 -100vmax); padding: 2rem 0 2.2rem; margin: -1.2rem 0 1.8rem; }
.as-hero h1 { font-size: 3rem; margin: .1rem 0 .7rem; }
.as-hero .lede { font-size: 1.2rem; }
.as-btn { background: #0c4a36; box-shadow: 0 2px 0 #031f16; }
.as-btn:hover { background: #083828; }
.as-chamber { margin: 0; }
.hemicycle { display: block; width: 100%; max-width: 460px; height: auto; margin: 0 auto; }
.hemicycle .seat { fill: var(--pc, #b1b4b6); stroke: #fff; stroke-width: .8; }
.hemicycle .hemi-n { font: 700 17px/1 'Source Serif 4', Georgia, serif; fill: #0b0c0c; }
.hemicycle .hemi-l { font: 7px/1 'Source Sans 3', Arial, sans-serif; fill: #505a5f; letter-spacing: .08em; text-transform: uppercase; }
.party-legend { list-style: none; padding: 0; margin: .8rem auto 0; display: flex; flex-wrap: wrap; justify-content: center; gap: .3rem 1.1rem; font-size: .92rem; max-width: 460px; }
.party-legend li { margin: 0; }
.party-legend b { margin-left: .2rem; }
@media (max-width: 860px) { .as-hero { grid-template-columns: 1fr; } .as-hero h1 { font-size: 2.2rem; } }

.bill-list { list-style: none; padding: 0; margin: 0 0 1.4rem; border-top: 1px solid var(--rule-soft); }
.bill-row { display: flex; justify-content: space-between; align-items: flex-start; gap: .4rem 1.5rem; padding: .9rem 0; border-bottom: 1px solid var(--rule-soft); margin: 0; max-width: none !important; flex-wrap: wrap; }
.bill-row > div { flex: 1 1 24rem; }
.bill-row .bill-title { font: 600 1.15rem/1.3 var(--st-head); }
.bill-row .meta { margin: .2rem 0 0; font-size: .95rem; }
.bill-row ol.stages { margin: .6rem 0 0; max-width: 34rem; }

/* ---------- the chamber pages (home, session, election, transcript) ---------- */
.shell-assembly { --panel: #f3f6f4; }
.chamber { max-width: 1120px; margin: 0 auto; }
.chamber header.banner { border-bottom: 1px solid var(--rule); padding-bottom: 1.1rem; margin-bottom: 1.4rem; display: grid; grid-template-columns: 1fr auto; gap: 1rem 2rem; align-items: end; }
.chamber header.banner h1 { font-variant: normal; letter-spacing: -.005em; font-size: 2.4rem; margin: .1rem 0 .5rem; }
.chamber header.banner .seatcount { text-align: center; font-size: .9rem; color: var(--muted); background: var(--panel); padding: .7rem 1.1rem; min-width: 7rem; }
.chamber header.banner .seatcount b { display: block; font: 700 2.2rem/1 var(--st-head); color: var(--st-brand); }
.chamber h2 { font-variant: normal; letter-spacing: -.005em; font-size: 1.6rem; border-bottom: 0; padding-bottom: 0; }
.chamber h3 { font-size: 1.15rem; }
.chamber .officers { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin: 0 0 1.6rem; }
.chamber .officer { border-top: 4px solid var(--st-brand); padding: .8rem 0 0; }
.chamber .officer .kicker { margin-bottom: .15rem; font-size: .95rem; }
.chamber .officer b { font-size: 1.15rem; font-weight: 700; display: block; }
.chamber .officer.person-card { grid-template-columns: 5rem 1fr; }
.chamber .first-business .sum { font: 700 1.5rem/1.2 var(--st-head); font-variant: normal; margin: .2rem 0 .4rem; }
.chamber table.seats td:last-child, .chamber table.seats th:last-child { text-align: right; }
.chamber .bar, .chamber-bar { display: flex; height: 18px; border: 0; margin: .6rem 0 1.2rem; background: #eee; border-radius: 3px; overflow: hidden; gap: 2px; }
.chamber .bar span { display: block; height: 100%; background: var(--pc, #999); }
.chamber .regions { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: .6rem 2rem; }
.chamber .region { border-top: 4px solid var(--st-brand); padding: .6rem 0; }
.chamber .region h3 { margin: 0 0 .4rem; font-size: 1.1rem; }
.chamber .region ul { margin: 0; padding-left: 0; list-style: none; font-size: .95rem; }
.chamber .region li { margin: 0 0 .25rem; }
.chamber .region li span { color: var(--muted); font-size: .88rem; }
.chamber .results td, .chamber .results th { font-size: .95rem; }
.chamber .results tr.region-row th { background: var(--panel); font-weight: 700; padding-left: .6rem; border-bottom-color: var(--rule); }
.chamber .results tr.region-row th .meta { font-weight: 400; margin-left: .4rem; }
.chamber .elections ol { columns: 3 14rem; column-gap: 2rem; padding-left: 1.6rem; font-size: 1rem; }
.chamber .elections li { break-inside: avoid; }
.chamber .decades .decade { display: grid; grid-template-columns: 5.5rem 1fr; gap: .5rem; border-top: 1px solid var(--rule-soft); padding: .5rem 0; font-size: .98rem; }
.chamber .decades .decade b { font-variant: normal; font-weight: 700; }
.chamber .decades .decade a { margin-right: .7rem; display: inline-block; }
.chamber .decades .decade p { max-width: none; margin: 0; }
.chamber .acts td.date { white-space: nowrap; color: var(--muted); width: 11rem; }
.chamber .acts a.small { font-size: .85rem; margin-left: .3rem; }
.chamber .summary { font-size: 1.2rem; border-left: 5px solid var(--st-brand); padding-left: 1rem; }
.chamber .members-returned { columns: 3 15rem; column-gap: 2rem; font-size: .95rem; list-style: none; padding: 0; }
.chamber .members-returned li { break-inside: avoid; margin-bottom: .35rem; }
.chamber .members-returned h3 { break-after: avoid; }
.chamber .members-returned ul { margin: 0 0 .8rem; padding-left: 1.1rem; break-inside: avoid; }
@media (max-width: 760px) {
  .chamber .officers { grid-template-columns: 1fr; }
  .chamber header.banner { grid-template-columns: 1fr; } .chamber header.banner .seatcount { text-align: left; justify-self: start; }
  .chamber header.banner h1 { font-size: 1.8rem; }
  .chamber .decades .decade { grid-template-columns: 1fr; }
}

/* ---------- the official report: a debate, verbatim ---------- */
.chamber.transcript .sitting { font-style: italic; color: var(--muted); }
.chamber .hansard { border: 0; padding: 0; margin: 1.4rem 0; }
.chamber .hansard .turn { margin: 0 0 1.1rem; max-width: 46rem; }
.chamber .hansard .turn b { font-weight: 700; display: block; margin-bottom: .1rem; }
.chamber .hansard .turn .who { color: var(--muted); font-size: .9rem; }
.chamber .hansard .turn.chair { font-variant: normal; letter-spacing: 0; color: var(--st-brand); font-style: italic; }
.chamber .hansard .turn.indirect { font-style: italic; color: var(--muted); }
.chamber .hansard .interj { color: var(--muted); font-size: .9rem; font-style: italic; }
.chamber .hansard .division { border: 0; border-left: 5px solid var(--st-brand); padding: .7rem 1rem; margin: 1rem 0; max-width: 24rem; background: var(--panel); }
.chamber .hansard .division table { margin: 0; }
.chamber .hansard .division td:last-child { text-align: right; font: 700 1.3rem/1 var(--st-head); }
.chamber ol.clauses li { margin: .4rem 0; }
.chamber .hansard.document { padding-bottom: 1.8rem; max-width: 50rem; }
.chamber .hansard.document .turn { max-width: none; }
.chamber .hansard.document .turn.chair { color: #3a4b3f; }
.chamber .hansard.document .division { background: rgba(120,100,60,.06); border-left-color: #8a7a55; }
.chamber .hansard.document .division td:last-child { font-family: var(--doc-font); }
.hansard-head { text-align: center; }
.hansard-head p { margin: 0 auto .3rem; }
.hansard-head .col-ref { font: .8rem/1.4 'Courier Prime', monospace; color: #6d6353; }

/* ---------- members directory ---------- */
.member-filter { position: sticky; top: 0; z-index: 2; background: #fff; padding: .6rem 0; margin: 0 0 1rem; border-bottom: 1px solid var(--rule-soft); }
.member-filter .pill-nav { margin: 0; }
.member-region { margin: 0 0 2rem; scroll-margin-top: 4rem; }
.member-region > h2 { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; flex-wrap: wrap; border-bottom: 1px solid var(--rule); padding-bottom: .4rem; }
.member-region > h2 .meta { font: 400 1rem var(--st-font); }
.member-grid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15.5rem), 1fr)); gap: 1rem; }
.member-card { margin: 0; max-width: none !important; }
.member-card a.mc { display: grid; grid-template-columns: 4.8rem 1fr; gap: .9rem; align-items: center; padding: .7rem; border: 1px solid var(--rule-soft); border-left: 6px solid var(--pc, #b1b4b6); background: #fff; text-decoration: none !important; color: var(--ink) !important; height: 100%; }
.member-card a.mc:hover { border-color: var(--rule); border-left-color: var(--pc); box-shadow: 0 4px 14px -8px rgba(0,0,0,.35); }
.member-card img { width: 4.8rem; height: 4.8rem; object-fit: cover; object-position: 50% 20%; border-radius: 50%; background: #e5e7e6; box-shadow: 0 0 0 3px var(--pc, #b1b4b6); }
.member-card b { display: block; font-size: 1.05rem; color: var(--link); text-decoration: underline; text-underline-offset: .15em; }
.member-card a.mc:hover b { text-decoration-thickness: 3px; }
.member-card span { display: block; font-size: .9rem; color: var(--muted); }
.member-card .party { color: var(--ink); font-weight: 600; }

/* ---------- bills ---------- */
.bill-head { border-bottom: 1px solid var(--rule); margin: 0 0 1.4rem; padding-bottom: 1rem; }
.bill-head h1 { margin-bottom: .5rem; }
.bill-type { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 0 0 .8rem; }
.stage-panel { background: var(--panel); padding: 1rem 1.2rem; margin: 0 0 1.6rem; }
.stage-panel h2 { font-size: 1.15rem; margin: 0 0 .2rem; }
.vote-bar { display: flex; height: 14px; border-radius: 3px; overflow: hidden; gap: 2px; margin: .4rem 0 .6rem; min-width: 8rem; }
.vote-bar .aye { background: #2f7d4a; } .vote-bar .no { background: #b3261e; }
.division-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 1rem 0 1.6rem; max-width: 34rem; }
.division-card > div { padding: .9rem 1rem; background: var(--panel); border-top: 5px solid #2f7d4a; }
.division-card > div.noes { border-top-color: #b3261e; }
.division-card b { display: block; font: 700 2.4rem/1 var(--st-head); }
.division-card span { color: var(--muted); }
table.divisions td.vote { min-width: 9rem; }
table.divisions .result { font-weight: 700; }
.speaker-list { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: .8rem; }
.speaker-list li { margin: 0; }

/* ---------- committees ---------- */
.committee-grid { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr)); gap: 1.2rem; }
.committee-grid li { margin: 0; max-width: none; }
.committee-grid a.cc { display: block; height: 100%; padding: 1rem 1.1rem; border: 1px solid var(--rule-soft); border-top: 5px solid var(--st-brand); text-decoration: none !important; color: var(--ink) !important; }
.committee-grid a.cc b { display: block; font: 600 1.2rem/1.3 var(--st-head); color: var(--link); text-decoration: underline; text-underline-offset: .15em; margin-bottom: .3rem; }
.committee-grid a.cc:hover b { text-decoration-thickness: 3px; }
.committee-grid a.cc span { display: block; color: var(--muted); font-size: .95rem; }
.committee-chair { margin: 0 0 1.4rem; }
.party-legend.as-legend-left { justify-content: flex-start; margin: 0 0 1rem; max-width: none; }
.gv-leader { grid-template-columns: 6rem 1fr; margin: 0 0 1.4rem; }
.gv-leader img { width: 6rem; height: 6rem; }
.gv-leader b { font-size: 1.2rem; }
.gv-table-wrap { overflow-x: auto; }
.bill-side { text-align: right; }
.bill-side .meta { margin: .4rem 0 0; font-size: .9rem; }
.stage-panel ol.stages a { display: block; font-size: .8rem; }
@media (max-width: 640px) { .bill-side { text-align: left; } }

/* ---------- petitions and letters to members ---------- */
.pt-list { list-style: none; padding: 0; margin: 0 0 1.6rem; display: grid; gap: 1rem; }
.pt-card { border: 1px solid var(--rule); border-left: 5px solid var(--st-brand); padding: .9rem 1.1rem; background: #fff; }
.pt-list.closed .pt-card { border-left-color: var(--rule); }
.pt-card h3 { margin: 0 0 .35rem; font-size: 1.15rem; }
.pt-card p { margin: 0 0 .5rem; }
.pt-count { font-size: .95rem; color: var(--muted); margin: .4rem 0 0 !important; }
.pt-count b { color: var(--ink); }
.pt-bar { height: .6rem; background: var(--rule-soft); max-width: 36rem; overflow: hidden; }
.pt-bar span { display: block; height: 100%; background: var(--st-brand); min-width: 2px; }
.pt-bar.big { height: 1rem; margin: .4rem 0 .5rem; }
.pt-total { font-size: 1.1rem; margin: 1.2rem 0 0; }
.pt-total b { font: 700 2.6rem/1 var(--head-font); display: inline-block; margin-right: .3rem; }
.as-petition-form, .as-write-form { border-top: 5px solid var(--st-brand); padding-top: 1rem; }
.as-write-form textarea { font: 400 1.05rem/1.4 var(--st-font); padding: .45rem .5rem; border: 2px solid #0b0c0c; width: 100%; max-width: 36rem; }
.as-letter { background: #fff; border: 1px solid var(--rule); box-shadow: 0 10px 30px -18px rgba(0,0,0,.35); padding: 2rem 2.2rem; max-width: 46rem; margin: 1rem 0 2rem; font-family: 'Source Serif 4', Georgia, serif; font-size: 1.05rem; line-height: 1.6; }
.as-letter-head { display: flex; gap: 1rem; align-items: center; border-bottom: 3px solid var(--st-brand); padding-bottom: .9rem; margin-bottom: .8rem; font-family: var(--st-font); }
.as-letter-head img { border-radius: 50%; object-fit: cover; }
.as-letter-head h1 { font-size: 1.6rem; margin: 0; }
.as-letter-head p { margin: 0; }
.as-letter-meta { font: .9rem/1.4 var(--st-font); color: var(--muted); }
.as-letter-sign { margin-top: 1.4rem; }
@media (max-width: 640px) { .as-letter { padding: 1.2rem 1rem; } .as-letter-head h1 { font-size: 1.3rem; } .pt-total b { font-size: 2rem; } }
@media print { .as-letter { box-shadow: none; border: 0; } }
/* divisions on a phone: one card per bill */
@media (max-width: 640px) {
  table.divisions thead { display: none; }
  table.divisions, table.divisions tbody { display: block; }
  table.divisions tr { display: grid; grid-template-columns: auto auto minmax(0, 1fr); column-gap: .9rem; row-gap: .15rem; align-items: baseline; padding: .7rem 0; border-bottom: 1px solid #d8dcd6; }
  table.divisions td { display: block; padding: 0; border: 0; }
  table.divisions td:nth-child(2) { grid-area: 1 / 1 / 2 / 4; }
  table.divisions td.date { grid-area: 2 / 1 / 3 / 4; font-size: .88rem; }
  table.divisions td:nth-child(3) { grid-area: 3 / 1; } table.divisions td:nth-child(3)::after { content: " ayes"; }
  table.divisions td:nth-child(4) { grid-area: 3 / 2; } table.divisions td:nth-child(4)::after { content: " noes"; }
  table.divisions td.result { grid-area: 3 / 3; text-align: right; }
  table.divisions td.vote { grid-area: 4 / 1 / 5 / 4; min-width: 0; }
  table.divisions td.none { display: none; }
  table.divisions td.result { grid-column: 1 / 4; text-align: left; }
  table.divisions td.num:not(.none) ~ td.result { grid-column: 3; text-align: right; }
}
