/* **************************************** */
/* * Council pages use the site's existing colours and type */
/* **************************************** */
.council-body { background:var(--bg); }
.council-page { width:min(1220px,calc(100% - 40px)); margin:0 auto; padding:24px 0 64px; }
.council-page a:not(.button), .council-page summary { color:var(--brand); }
.council-page a:not(.button):hover { text-decoration:underline; }
.council-page h1 { font-size:clamp(2.1rem,4vw,3.4rem); line-height:1.12; letter-spacing:-.035em; margin:12px 0 20px; }
.council-page h2 { font-size:clamp(1.45rem,2.4vw,2rem); line-height:1.22; margin:0 0 18px; }
.council-page h3 { line-height:1.3; margin:26px 0 12px; }
.council-page p { max-width:86ch; }
.council-breadcrumb { display:flex; flex-wrap:wrap; gap:10px; font-size:.88rem; margin-bottom:28px; }
.council-intro { max-width:920px; margin:20px 0 32px; }
.council-intro>p { font-size:1.16rem; color:var(--muted); }
.council-actions, .council-guide-links, .council-year-links { display:flex; flex-wrap:wrap; gap:12px; margin:20px 0; }
.council-actions .button { display:inline-flex; align-items:center; }
.council-caption { font-size:.88rem; color:var(--muted); }
.council-jump { display:flex; flex-wrap:wrap; gap:8px 24px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:16px 0; margin-bottom:28px; font-weight:700; }
.council-section { background:#fff; border:1px solid var(--line); border-radius:22px; padding:30px; margin:24px 0; scroll-margin-top:24px; }
.council-section-heading { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 24px; align-items:baseline; }
.council-section-heading>a { font-size:.9rem; text-decoration:underline; }
.council-stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; border:1px solid var(--line); background:var(--line); border-radius:18px; overflow:hidden; }
.council-stat-grid>div { padding:22px; background:white; }
.council-stat-grid strong { display:block; font-size:clamp(1.2rem,2.6vw,1.9rem); line-height:1.2; margin-bottom:8px; }
.council-stat-grid span { font-size:.87rem; color:var(--muted); }
.council-notice { background:#f8f0dd; padding:16px 20px; border-left:4px solid #b28129; border-radius:0 12px 12px 0; }
.council-guide-links a, .council-year-links a { border:1px solid var(--line); background:#f2f6f9; border-radius:8px; padding:9px 14px; font-weight:650; }
.council-year-links [aria-current] { background:var(--brand); color:white!important; }
.council-skip { position:absolute; left:-9999px; }
.council-skip:focus { left:20px; top:10px; z-index:10000; background:white; padding:12px; }
.council-page :focus-visible { outline:3px solid #ab7010; outline-offset:3px; }
.council-page [hidden] { display:none!important; }

/* **************************************** */
/* * Tables, searches and expandable records */
/* **************************************** */
.council-filters { display:grid; grid-template-columns:2fr 1fr 1fr; gap:16px; margin:20px 0; }
.council-page label { display:block; font-size:.88rem; font-weight:700; margin-bottom:6px; }
.council-page input, .council-page select { padding:11px 12px; border:1px solid #aabac8; border-radius:8px; background:white; font:inherit; width:100%; color:var(--ink); }
#councilMemberSearch { max-width:480px; }
.council-table-wrap { overflow-x:auto; max-width:100%; }
.council-table { width:100%; border-collapse:collapse; font-size:.93rem; text-align:left; }
.council-table caption { text-align:left; padding:0 0 14px; color:var(--muted); font-size:.85rem; }
.council-table th, .council-table td { border-bottom:1px solid var(--line); padding:13px 14px; vertical-align:top; }
.council-table thead { background:#edf3f7; }
.council-table th { font-weight:650; }
.council-table td { font-variant-numeric:tabular-nums; }
.council-table small, .council-area-grid small { display:block; color:var(--muted); font-size:.78rem; font-weight:400; margin-top:4px; }
.council-table th button { border:0; font:inherit; color:inherit; background:transparent; padding:0; text-align:left; text-decoration:underline; cursor:pointer; }
.council-table tbody tr:hover { background:#f7fafc; }
#councilDirectory { min-width:750px; }
.council-details { border:1px solid var(--line); border-radius:12px; padding:16px 20px; margin:14px 0; }
.council-details summary { cursor:pointer; font-weight:700; }
.council-details summary>span { float:right; font-size:.87rem; font-weight:400; margin-left:16px; }
.council-details[open] summary { margin-bottom:14px; }
.council-contest { border-bottom:1px solid var(--line); }
.council-contest summary { display:flex; justify-content:space-between; align-items:baseline; gap:20px; padding:17px 8px; cursor:pointer; font-weight:700; }
.council-contest summary::before { content:'+'; font-size:1.2rem; }
.council-contest[open] summary::before { content:'−'; }
.council-contest summary>span:first-of-type { flex:1; }
.council-contest summary>span:last-child { font-size:.85rem; font-weight:400; }
.council-contest-content { padding:0 8px 20px; }
.council-members { max-height:580px; overflow:auto; }
.council-members thead { position:sticky; top:0; }
.council-result-summary { display:flex; flex-wrap:wrap; gap:12px 24px; list-style:none; padding:0; }
.council-result-summary strong { font-size:1.3rem; }
.council-source-list { padding-left:22px; }
.council-source-list>li { margin:24px 0; scroll-margin-top:20px; }
.council-source-list a { font-weight:700; }
.council-source-list p { margin:6px 0; }
.council-source-list small { color:var(--muted); }

/* **************************************** */
/* * Seat charts and local areas */
/* **************************************** */
.council-seat-layout { display:grid; grid-template-columns:1.5fr 1fr; gap:36px; margin:24px 0; }
.council-seat-row { display:grid; grid-template-columns:135px 1fr 35px; gap:14px; align-items:center; margin:15px 0; font-size:.9rem; }
.council-seat-row>div { background:#edf3f7; border-radius:4px; height:22px; }
.council-seat-row i { display:block; min-width:2px; height:100%; border-radius:4px; }
.council-seat-row strong { text-align:right; font-variant-numeric:tabular-nums; }
.council-area-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); list-style:none; gap:16px; padding:0; }
.council-area-grid li { padding:12px; background:#f4f7fa; border-radius:8px; }
.council-guide-copy { max-width:86ch; }
.council-guide-copy li { margin:10px 0; }
.council-guide-copy a { text-decoration:underline; }

/* **************************************** */
/* * Full-width text and tables on the council data page */
/* **************************************** */
.council-data-page .council-intro, .council-data-page p { max-width:none; }
.council-data-page>section { margin:36px 0; padding:0; scroll-margin-top:24px; }
.council-data-page>section>h2:not(:first-child) { margin-top:32px; }

/* **************************************** */
/* * Small screens and printed research pages */
/* **************************************** */
@media(max-width:800px) {
    .council-seat-layout { grid-template-columns:1fr; gap:20px; }
    .council-stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .council-filters { grid-template-columns:1fr; }
    .council-area-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .council-section { padding:22px; }
}
@media(max-width:480px) {
    .council-page { width:calc(100% - 24px); }
    .council-section { padding:18px 14px; }
    .council-stat-grid>div { padding:16px; }
    .council-area-grid { grid-template-columns:1fr; }
    .council-seat-row { grid-template-columns:105px 1fr 26px; gap:8px; }
    .council-contest summary { flex-wrap:wrap; gap:8px; }
    .council-contest summary>span:last-child { width:100%; padding-left:20px; }
    .council-details summary>span { float:none; display:block; margin:4px 0 0; }
}
@media print {
    .header, .footer, .council-jump, .council-actions, .council-filters { display:none; }
    .council-page { width:100%; }
    .council-section { break-inside:avoid; border:1px solid #aaa; box-shadow:none; }
    .council-members { max-height:none; }
    .council-table-wrap { overflow:visible; }
}
