/* Curran Core styles. Loaded on every CiviCRM page by the add-on. */
:root {
  --curran-navy: #181C62;
  --curran-red: #B52F18;
  --curran-yellow: #FEBD3B;
  --curran-sky: #C7DFF4;
  --curran-mist: #EEF5FC;
}

/* Top bar: thin yellow stripe, yellow underline on hover */
#civicrm-menu { border-bottom: 3px solid var(--curran-yellow); }
#civicrm-menu > li > a:hover,
#civicrm-menu > li > a.highlighted { box-shadow: inset 0 -3px 0 var(--curran-yellow); }

/* Populus-style layout: navy sidebar + white main area */
.curran-shell { display: flex; min-height: 70vh; max-width: 100%; }
.curran-side { flex: 0 0 125px; background: var(--curran-navy); display: flex; flex-direction: column; }
.curran-side-head { color: var(--curran-yellow); font-size: 11px; font-weight: bold; text-transform: uppercase; letter-spacing: .05em; padding: 12px 8px 4px; text-align: center; }
.curran-side a { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 6px; color: #FFFFFF !important; text-decoration: none !important; text-align: center; font-size: 13px; line-height: 1.2; border-bottom: 1px solid rgba(255,255,255,0.2); }
.curran-side a i.crm-i { font-size: 22px; }
.curran-side a:hover, .curran-side a.curran-active { background: var(--curran-yellow); color: var(--curran-navy) !important; }
.curran-main { flex: 1; min-width: 0; overflow-x: auto; background: #FFFFFF; padding: 16px 20px; }

/* Headings, intros, panels, forms */
.curran-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.curran-head h2 { margin: 0 0 6px; color: var(--curran-navy); font-size: 24px; border: 0; background: none; padding: 0; }
.curran-intro, .curran-help { color: var(--curran-navy); opacity: .8; font-size: 13px; margin: 4px 0 12px; }
.curran-empty { color: var(--curran-navy); opacity: .7; font-style: italic; padding: 12px 0; }
/* v1.124.0: who to call when unsure (Data entry start page). Navy on pale yellow; the number is big enough to tap. */
.curran-callhelp { background: #FFF4D6; color: #181C62; border: 2px solid #FEBD3B; border-left-width: 6px; border-radius: 6px; padding: 10px 14px; margin: 0 0 14px; font-size: 17px; font-weight: 700; }
.curran-callhelp a { color: #181C62; text-decoration: underline; white-space: nowrap; display: inline-block; padding: 6px 2px; min-height: 44px; line-height: 32px; font-size: 20px; }
.curran-callhelp a:hover, .curran-callhelp a:focus { background: #FEBD3B; color: #181C62; outline: 2px solid #181C62; }
.curran-panel { background: var(--curran-mist); border: 1px solid var(--curran-sky); padding: 14px 20px; margin: 0 0 14px; }
.curran-panel h3 { margin-top: 0; color: var(--curran-navy); background: none; border: 0; padding: 0; }
.curran-form-row { display: flex; align-items: flex-start; gap: 14px; margin: 8px 0; }
.curran-form-row > label { flex: 0 0 170px; text-align: right; font-weight: bold; padding-top: 4px; color: var(--curran-navy); }
.curran-form-row select[multiple] { min-width: 260px; }
.curran-inline-form { display: inline-flex; gap: 4px; align-items: center; flex-wrap: wrap; margin: 0; }
.curran-cat { color: var(--curran-red); margin: 18px 0 6px; border: 0; background: none; padding: 0; }
.curran-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.curran-card { display: block; background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 12px; color: var(--curran-navy) !important; text-decoration: none !important; }
.curran-card:hover { border-color: var(--curran-yellow); box-shadow: inset 4px 0 0 var(--curran-yellow); }
.curran-card strong { display: block; margin-bottom: 4px; }
.curran-card span { font-size: 12px; opacity: .8; }
.curran-details > div { margin: 3px 0; }

/* Tiles */
.curran-tiles { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin-bottom: 18px; }
.curran-tile { background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 14px; text-align: center; }
.curran-tile-wide { grid-column: span 2; }
.curran-tile-title { color: var(--curran-red); font-weight: bold; font-size: 13px; margin-bottom: 10px; text-transform: uppercase; }
.curran-tile-body { display: flex !important; align-items: center; justify-content: center; gap: 16px; }
.curran-tile-body > i.crm-i { font-size: 34px; color: var(--curran-red); }
.curran-big { font-size: 28px; font-weight: bold; color: var(--curran-navy); }
.curran-sub { font-size: 12px; color: var(--curran-navy); opacity: .8; }
.curran-tile ul { list-style: none !important; margin: 0 !important; padding: 0 !important; }
.curran-tile li { font-size: 34px; font-weight: bold; color: var(--curran-navy); }
.curran-week { gap: 50px; }
.curran-week-label { display: block; font-size: 13px; font-weight: bold; color: var(--curran-navy); }

/* Progress bars and bar charts */
.curran-bar { background: var(--curran-mist); border: 1px solid var(--curran-sky); height: 12px; min-width: 110px; margin-top: 6px; }
.curran-bar span { display: block; height: 100%; background: var(--curran-red); }
.curran-chart { background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 14px; margin-bottom: 16px; max-width: 900px; }
.curran-chart-title { font-weight: bold; color: var(--curran-navy); margin-bottom: 8px; }
.curran-chart-row { display: flex; align-items: center; gap: 10px; margin: 4px 0; }
.curran-chart-label { flex: 0 0 200px; text-align: right; font-size: 13px; }
.curran-chart-track { flex: 1; background: var(--curran-mist); height: 20px; }
.curran-chart-fill { display: block; height: 100%; background: var(--curran-red); }
.curran-chart-value { flex: 0 0 70px; font-weight: bold; color: var(--curran-navy); }

/* Tables */
.curran-table-wrap { overflow-x: auto; margin-bottom: 16px; }
table.curran-table { border-collapse: collapse; width: 100%; font-size: 13px; background: #FFFFFF; }
table.curran-table th { background: var(--curran-navy); color: #FFFFFF; text-align: left; padding: 6px 8px; position: sticky; top: 0; white-space: nowrap; }
table.curran-table td { padding: 5px 8px; border-bottom: 1px solid var(--curran-sky); vertical-align: top; }
table.curran-table tbody tr:nth-child(even) td { background: var(--curran-mist); }
table.curran-table tfoot td { font-weight: bold; border-top: 2px solid var(--curran-navy); }
table.curran-table .num { text-align: right; white-space: nowrap; }
.curran-tick { color: #1B7F3B; font-weight: bold; }
.curran-box { display: inline-block; width: 14px; height: 14px; border: 1px solid var(--curran-navy); }
.curran-boxes { white-space: nowrap; font-size: 12px; }
.curran-writein { display: inline-block; min-width: 160px; border-bottom: 1px solid var(--curran-navy); height: 14px; }
.curran-thumb { max-width: 90px; max-height: 90px; border: 1px solid var(--curran-sky); }
/* v1.104.3: literature pieces show every page and a PDF link. */
.curran-lit-pages { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; max-width: 290px; }
.curran-lit-pages .curran-thumb { max-width: 64px; max-height: 64px; }
.curran-lit-pdf { display: inline-block; font-weight: bold; white-space: nowrap; padding: 2px 6px; border: 1px solid var(--curran-sky); border-radius: 3px; text-decoration: none; }

/* Map */
.curran-map-controls { margin: 8px 0; display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.curran-map { height: 620px; border: 1px solid var(--curran-sky); }
.curran-legend { margin: 8px 0; font-size: 13px; }
.curran-legend-item { display: inline-flex; align-items: center; gap: 4px; margin-right: 12px; }
.curran-swatch { display: inline-block; width: 16px; height: 16px; border: 1px solid var(--curran-navy); }
.leaflet-tooltip.curran-map-label { background: transparent; border: 0; box-shadow: none; font-size: 10px; font-weight: bold; color: var(--curran-navy); }

/* Find page (from earlier) */
.curran-find-panel { background: var(--curran-mist); border: 1px solid var(--curran-sky); padding: 14px 20px; margin-bottom: 14px; }
.curran-find-panel af-field, .curran-find-panel af-field > div { display: flex !important; align-items: center; gap: 14px; margin: 6px 0; }
.curran-find-panel af-field > div { flex: 1; margin: 0; }
.curran-find-panel af-field label { flex: 0 0 140px; text-align: right; margin: 0 !important; font-weight: bold; }
.curran-find-panel af-field input { flex: 1 1 auto; max-width: 520px; width: auto !important; display: block !important; }

/* Home page (from earlier) */
.curran-welcome { font-size: 32px; margin: 0 0 14px; color: var(--curran-navy); }
.curran-sections { display: flex !important; flex-direction: column; gap: 12px; max-width: 950px; }
.curran-section { background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 14px 18px; display: flex !important; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.curran-section-head { display: flex !important; align-items: center; gap: 16px; }
.curran-section-head > i.crm-i { font-size: 44px; color: var(--curran-sky); }
.curran-section-head h3 { margin: 0 !important; padding: 0 !important; background: none !important; border: 0 !important; font-size: 22px; color: var(--curran-navy); }
.curran-section-head span { color: var(--curran-navy); opacity: .7; font-size: 14px; }
.curran-actions { display: flex !important; gap: 22px; flex-wrap: wrap; }
.curran-action { display: flex !important; flex-direction: column; align-items: center; gap: 6px; min-width: 90px; font-size: 12px; font-weight: bold; text-align: center; color: var(--curran-red) !important; text-decoration: none !important; }
.curran-action i.crm-i { font-size: 30px; color: var(--curran-red); }
.curran-action:hover, .curran-action:hover i.crm-i { color: var(--curran-navy) !important; }

/* Forms built with Form Builder */
.curran-form .af-layout-inline { gap: 12px; }


/* Dashboards: big picker buttons, then tabs (Populus style) */
.curran-dash-picker { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 16px; }
.curran-dash-btn { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 8px; background: var(--curran-mist); border: 1px solid var(--curran-sky); color: var(--curran-navy) !important; text-decoration: none !important; font-weight: bold; font-size: 15px; }
.curran-dash-btn i.crm-i { font-size: 26px; color: var(--curran-red); }
.curran-dash-btn:hover { border-color: var(--curran-yellow); }
.curran-dash-btn.curran-dash-active { background: var(--curran-navy); color: #FFFFFF !important; border-color: var(--curran-navy); box-shadow: inset 0 -4px 0 var(--curran-yellow); }
.curran-dash-btn.curran-dash-active i.crm-i { color: var(--curran-yellow); }
.curran-tabs { display: flex; flex-wrap: wrap; gap: 2px 16px; border-bottom: 1px solid var(--curran-sky); margin: 4px 0 14px; padding-bottom: 2px; }
.curran-tabs a { padding: 6px 2px; color: var(--curran-navy) !important; text-decoration: none !important; font-size: 13px; border-bottom: 3px solid transparent; }
.curran-tabs a:hover { border-bottom-color: var(--curran-sky); }
.curran-tabs a.curran-tab-active { border-bottom-color: var(--curran-red); color: var(--curran-red) !important; font-weight: bold; }
.curran-board .curran-head h2 { font-size: 20px; }

/* Map legend dots for voting locations */
.curran-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--curran-navy); background: #FFFFFF; }
.curran-dot-adv { background: var(--curran-yellow); }


/* v1.2: extra maps and dots */
.curran-map-short { height: 460px; }
.curran-map-walk { height: 360px; margin-bottom: 12px; }
.curran-dot-red { background: var(--curran-red); border-color: #FFFFFF; box-shadow: 0 0 0 1px var(--curran-navy); }
.curran-dot-navy { background: var(--curran-navy); border-color: #FFFFFF; box-shadow: 0 0 0 1px var(--curran-navy); }
.curran-dot-approx { background: var(--curran-red); border: 2px dashed #555; }
table.curran-table .curran-swatch { vertical-align: middle; }
table.curran-table select[multiple] { min-width: 180px; }


/* v1.4: building sheets and the building info page of printed packets */
.curran-building-section { margin-top: 24px; }
.curran-building-section > h2 { color: var(--curran-navy); border-bottom: 3px solid var(--curran-yellow); padding-bottom: 4px; }
.curran-building-card { background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 12px 16px; margin: 0 0 14px; }
.curran-building-card h3 { margin: 0 0 8px; color: var(--curran-red); background: none; border: 0; padding: 0; }
.curran-building-card h4 { margin: 12px 0 4px; color: var(--curran-navy); }
table.curran-facts { border-collapse: collapse; }
table.curran-facts th { text-align: left; padding: 3px 12px 3px 0; color: var(--curran-navy); white-space: nowrap; vertical-align: top; }
table.curran-facts td { padding: 3px 0; vertical-align: top; }
ul.curran-history { margin: 0; padding-left: 18px; }
ul.curran-history li { margin: 4px 0; }
pre.curran-code { white-space: pre-wrap; word-break: break-all; background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 8px; font-size: 12px; }

/* v1.5: emergency and past results */
.curran-danger { border-color: #B52F18; background: #FBE9E5; }
.curran-danger-btn, .button.curran-danger-btn { background: #B52F18 !important; color: #FFFFFF !important; border-color: #8E2210 !important; font-weight: bold; }
.curran-subdash { margin-top: -6px; }

.curran-code-big { font-family: monospace; font-size: 20px; font-weight: bold; letter-spacing: 2px; color: var(--curran-navy); background: #FFFFFF; border: 1px solid var(--curran-sky); padding: 2px 8px; }
.curran-error { color: #8E2210; }

.curran-el-pick { min-width: 320px; max-width: 100%; font-size: 14px; }

table.curran-table tbody tr.curran-row-hit td { background: var(--curran-yellow) !important; }

/* Printing: hide menus and sidebars, one poll per page */
@media print {
  #civicrm-menu, #civicrm-menu-nav, .curran-side, .curran-noprint, .crm-status-box-outer, #crm-notification-container { display: none !important; }
  .curran-main { padding: 0; }
  .curran-print-section { page-break-after: always; }
  .curran-building-section { page-break-before: always; }
  .curran-building-card { page-break-inside: avoid; }
  table.curran-table th { position: static; color: #000; background: #DDD; }
  .curran-map, .curran-map-walk { height: 420px !important; page-break-inside: avoid; }
  body { background: #FFFFFF !important; }
}

/* Find: folded Advanced name search box, right under the search panel (v1.9.7) */
details.curran-name-search { display: block; margin-top: -6px; }
details.curran-name-search > summary { cursor: pointer; color: var(--curran-navy, #181C62); font-weight: bold; font-size: 15px; list-style: none; display: flex; align-items: center; gap: 8px; }
details.curran-name-search > summary::-webkit-details-marker { display: none; }
details.curran-name-search > summary::before { content: "\25B8"; display: inline-block; width: 12px; transition: transform .15s; }
details.curran-name-search[open] > summary::before { transform: rotate(90deg); }
details.curran-name-search[open] > summary { margin-bottom: 8px; }

/* v1.9.9: search boxes for polls, buildings and streets */
.curran-pick { max-width: 540px; }
.curran-pick-q { width: 100%; box-sizing: border-box; padding: 7px 10px; border: 1px solid var(--curran-navy); font-size: 14px; background: #FFFFFF; }
.curran-pick-q:focus { outline: 3px solid var(--curran-yellow); outline-offset: 0; }
.curran-pick-list { max-height: 230px; overflow-y: auto; border: 1px solid var(--curran-sky); border-top: 0; background: #FFFFFF; }
.curran-pick-list[hidden] { display: none; }
.curran-pick-row { display: flex !important; gap: 8px; align-items: center; margin: 0 !important; padding: 5px 10px; cursor: pointer; font-weight: normal !important; color: var(--curran-navy); border-bottom: 1px solid var(--curran-mist); text-align: left !important; }
.curran-pick-row:hover { background: var(--curran-mist); }
.curran-pick-row.curran-on { background: #FFF6DC; font-weight: bold !important; }
.curran-pick-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 4px; }
.curran-pick-chips:empty { display: none; }
.curran-chip { background: var(--curran-navy); color: #FFFFFF; border: 0; padding: 3px 9px; font-size: 12px; cursor: pointer; line-height: 1.4; }
.curran-chip::after { content: "\00a0\00d7"; color: var(--curran-yellow); font-weight: bold; }
.curran-chip:hover, .curran-chip:focus { background: var(--curran-red); }
.curran-pick-one .curran-chip { font-size: 14px; padding: 6px 10px; }
.curran-pick-note { font-size: 12px; color: var(--curran-navy); opacity: .8; margin-top: 3px; }
.curran-pick-note:empty { display: none; }

/* v1.9.9: Customize this canvass sheet */
details.curran-custom { border-top: 1px solid var(--curran-sky); border-bottom: 1px solid var(--curran-sky); margin: 12px 0; }
details.curran-custom > summary { cursor: pointer; padding: 10px 0; font-weight: bold; color: var(--curran-navy); font-size: 15px; }
details.curran-custom > summary:hover { color: var(--curran-red); }
details.curran-custom[open] > summary { border-bottom: 1px dashed var(--curran-sky); margin-bottom: 4px; }
.curran-custom-body h4 { color: var(--curran-red); margin: 14px 0 4px 184px; font-size: 13px; border: 0; background: none; padding: 0; }
.curran-plan-buttons .button { margin-right: 10px; }
.curran-cut-group { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.curran-cut-button { background: var(--curran-yellow) !important; color: var(--curran-navy) !important; border: 1px solid var(--curran-navy) !important; font-weight: bold; }
.curran-cut-button:hover { background: var(--curran-navy) !important; color: #FFFFFF !important; }
.curran-team { font-weight: bold; color: var(--curran-navy); }
.curran-team select { margin-left: 4px; }
.curran-turf-part { margin: 2px 0; font-size: 12.5px; }
@media (max-width: 700px) {
  .curran-custom-body h4 { margin-left: 0; }
}

/* v1.9.9: poll search with the map beside it */
.curran-poll-pick { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.curran-poll-pick-list { flex: 1 1 300px; max-width: 460px; min-width: 260px; }
.curran-poll-map { flex: 1 1 360px; height: 380px; min-width: 280px; }
.curran-form-row > div:has(> .curran-poll-pick) { flex: 1 1 auto; min-width: 0; }
.curran-poll-pick { width: 100%; }
@media (min-width: 900px) { .curran-poll-pick { flex-wrap: nowrap; } }
/* v1.10.1: tick box sitting right beside its words */
.curran-inline-check { display: inline-flex !important; align-items: center; gap: 8px; font-weight: bold; color: var(--curran-navy); cursor: pointer; margin: 0; }
.curran-inline-check input { margin: 0; width: 18px; height: 18px; }

/* v1.11.0 */
.curran-eday-banner { display: flex; align-items: center; gap: 18px; background: #181C62; color: #FFFFFF; border-bottom: 4px solid #FEBD3B; border-radius: 6px; padding: 12px 20px; margin: 0 0 16px; }
.curran-eday-big { font-size: 44px; font-weight: 800; line-height: 1; color: #FEBD3B; letter-spacing: 1px; white-space: nowrap; }
.curran-eday-text { display: flex; flex-direction: column; font-size: 16px; }
.curran-eday-text strong { font-size: 20px; color: #FFFFFF; }
.curran-day { margin: 18px 0 6px; padding-bottom: 3px; border-bottom: 2px solid #FEBD3B; color: #181C62; }
.curran-linkbtn { background: none; border: 0; padding: 0; color: #21409A; text-decoration: underline; cursor: pointer; font: inherit; }
.button.curran-button-quiet, button.curran-button-quiet { background: #FFFFFF !important; color: #8E2210 !important; border: 1px solid #B52F18 !important; }
.curran-bigbutton { font-size: 17px !important; padding: 10px 18px !important; }
.curran-ready .curran-help { margin-top: 8px; }
.curran-dnc { color: #8E2210; }
.curran-existing { margin: 6px 0 12px; }

/* v1.12.0: tabs across the top of Log a canvass and Manage canvasses */
.curran-toptabs { margin: 0 0 14px; gap: 2px 22px; }
.curran-toptabs a { font-size: 15px; padding: 8px 2px; }

/* v1.12.0: readable buttons. The theme drew navy buttons with grey-blue words. */
.curran-main a.button:not(.curran-button-quiet):not(.curran-danger-btn):not(.curran-cut-button),
.curran-main button.button:not(.curran-button-quiet):not(.curran-danger-btn):not(.curran-cut-button),
.curran-main a.button:not(.curran-button-quiet):not(.curran-danger-btn):not(.curran-cut-button) span {
  background: var(--curran-navy) !important; color: #FFFFFF !important; border: 1px solid var(--curran-navy) !important;
  text-decoration: none !important; opacity: 1 !important; text-shadow: none !important;
}
.curran-main a.button:not(.curran-button-quiet):not(.curran-danger-btn):not(.curran-cut-button):hover,
.curran-main button.button:not(.curran-button-quiet):not(.curran-danger-btn):not(.curran-cut-button):hover {
  background: var(--curran-red) !important; border-color: var(--curran-red) !important;
}
.curran-existing a.button { display: inline-block; padding: 7px 14px !important; background: var(--curran-yellow) !important; color: var(--curran-navy) !important; border-color: var(--curran-navy) !important; font-weight: bold; }
.curran-existing a.button:hover { background: var(--curran-navy) !important; color: #FFFFFF !important; }

/* v1.12.0: days that fold open and closed */
details.curran-fold { border: 1px solid var(--curran-sky); margin: 0 0 8px; background: #FFFFFF; }
details.curran-fold > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: var(--curran-mist); color: var(--curran-navy); font-weight: bold; font-size: 15px; border-left: 5px solid var(--curran-yellow); }
details.curran-fold > summary::-webkit-details-marker { display: none; }
details.curran-fold > summary::before { content: "\25B8"; display: inline-block; width: 12px; transition: transform .15s; }
details.curran-fold[open] > summary::before { transform: rotate(90deg); }
details.curran-fold > summary:hover { background: #FFF6DC; }
details.curran-fold > summary:focus-visible { outline: 3px solid var(--curran-yellow); }
.curran-fold-count { background: var(--curran-navy); color: #FFFFFF; border-radius: 999px; padding: 0 9px; font-size: 12px; line-height: 20px; }
.curran-fold-body { padding: 8px 10px 2px; }
/* v1.51.1: a poll's turfs, folded inside a group planned together */
details.curran-poll-fold > summary { font-size: 13.5px; padding: 6px 10px; border-left-width: 4px; }
details.curran-poll-fold .curran-fold-count { font-weight: normal; }
.curran-poll-fold-bar { margin: 4px 0 6px; }
.curran-fold-body .curran-table-wrap { margin-bottom: 8px; }
.curran-fold-controls { margin: 4px 0 8px; font-size: 13px; }
a.curran-sheetid { font-weight: bold; font-size: 14px; white-space: nowrap; }
@media (prefers-reduced-motion: reduce) { details.curran-fold > summary::before { transition: none; } }
@media print { details.curran-fold > summary::before { display: none; } }

/* v1.12.0: Polls or Buildings, side by side on a wide screen */
.curran-area-split { display: flex; flex-direction: column; gap: 10px; margin: 8px 0 12px; }
.curran-area-col { min-width: 0; }
.curran-area-head { margin: 0 0 6px; color: var(--curran-navy); font-size: 15px; border: 0; background: none; padding: 0; }
.curran-area-or { display: flex; align-items: center; justify-content: center; color: var(--curran-red); font-weight: bold; font-size: 15px; }
.curran-area-or span { background: #FFFFFF; border: 2px solid var(--curran-red); border-radius: 999px; padding: 2px 12px; }
.curran-area-split .curran-poll-pick { flex-wrap: wrap !important; }
.curran-area-split .curran-poll-pick-list { max-width: none; flex: 1 1 100%; }
.curran-area-split .curran-poll-map { flex: 1 1 100%; height: 340px; }
.curran-area-split .curran-pick { max-width: none; }
@media (min-width: 1100px) {
  .curran-area-split { flex-direction: row; align-items: stretch; }
  .curran-area-polls { flex: 3 1 0; }
  .curran-area-buildings { flex: 2 1 0; }
  .curran-area-or { flex: 0 0 46px; flex-direction: column; }
  .curran-area-or::before, .curran-area-or::after { content: ""; flex: 1; width: 2px; background: var(--curran-sky); }
  .curran-area-or span { margin: 8px 0; }
}

/* v1.12.0: Contact merge (Populus style) */
.curran-merge-cards { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 1000px) { .curran-merge-cards { grid-template-columns: 1fr 1fr; } }
.curran-merge-card { background: #FFFFFF; border: 1px solid var(--curran-sky); box-shadow: 0 1px 3px rgba(24,28,98,.12); padding: 14px 16px; }
.curran-merge-top { display: flex; align-items: flex-start; gap: 12px; }
.curran-merge-letter { flex: 0 0 44px; height: 44px; display: flex; align-items: center; justify-content: center; font-size: 28px; font-weight: bold; color: #FFFFFF; }
.curran-merge-p { background: #3D6FE0; }
.curran-merge-d { background: var(--curran-yellow); color: #FFFFFF; }
.curran-merge-top h3 { margin: 0 0 6px !important; font-size: 19px; color: var(--curran-navy); background: none; border: 0; padding: 0; }
.curran-merge-ok { margin-left: auto; color: #1B7F3B; font-size: 30px; }
.curran-merge-facts { background: var(--curran-mist); margin-top: 10px; padding: 10px 14px; }
.curran-merge-facts table { border-collapse: collapse; }
.curran-merge-facts th { text-align: right; padding: 5px 16px 5px 0; color: var(--curran-navy); vertical-align: top; white-space: nowrap; }
.curran-merge-facts td { padding: 5px 0; vertical-align: top; }
.curran-merge-arrow { text-align: center; font-size: 30px; color: var(--curran-navy); margin: 10px 0; }
.curran-merge-go { max-width: 780px; margin: 0 auto; background: #FFFFFF; border: 1px solid var(--curran-sky); box-shadow: 0 1px 3px rgba(24,28,98,.12); padding: 14px 16px; display: flex; gap: 12px; align-items: flex-start; }
.curran-merge-go-icon { flex: 0 0 44px; height: 44px; background: var(--curran-red); color: #FFFFFF; display: flex; align-items: center; justify-content: center; font-size: 22px; }
.curran-merge-go h3 { margin: 0 0 4px !important; color: var(--curran-navy); font-size: 19px; background: none; border: 0; padding: 0; }
.curran-merge-find { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-top: 4px; }
.curran-merge-find input[type=text] { min-width: 260px; padding: 6px 8px; }

/* v1.12.0: Do Not Contact reason */
.curran-dnc-hostile { background: #8E2210; color: #FFFFFF; padding: 0 5px; font-weight: bold; }
select.curran-dnc-reason { margin-top: 4px; }

/* v1.12.0: bug and feature button at the bottom of every page */
.curran-feedback-bar { margin: 28px 0 10px; padding: 14px 0 6px; border-top: 1px solid var(--curran-sky); text-align: center; }
.curran-feedback-bar a.curran-feedback-btn { display: inline-flex; align-items: center; gap: 8px; background: #FFFFFF !important; color: var(--curran-navy) !important; border: 2px solid var(--curran-navy) !important; padding: 7px 16px; font-weight: bold; text-decoration: none !important; border-radius: 4px; }
.curran-feedback-bar a.curran-feedback-btn:hover, .curran-feedback-bar a.curran-feedback-btn:focus { background: var(--curran-yellow) !important; }
.curran-feedback-bar .curran-help { margin: 6px 0 0; }
@media print { .curran-feedback-bar { display: none !important; } }

/* v1.12.1: List Builder: Create a list, charts and saving */
a.curran-create-hero { display: flex; align-items: center; gap: 16px; max-width: 760px; margin: 4px 0 18px; padding: 16px 20px; background: var(--curran-navy); color: #FFFFFF !important; text-decoration: none !important; border-left: 8px solid var(--curran-yellow); border-radius: 6px; }
a.curran-create-hero > i.crm-i { font-size: 40px; color: var(--curran-yellow); }
a.curran-create-hero strong { display: block; font-size: 22px; color: #FFFFFF; }
a.curran-create-hero span span { display: block; font-size: 14px; opacity: .9; margin-top: 2px; }
a.curran-create-hero:hover, a.curran-create-hero:focus { background: var(--curran-red); }
.curran-list-result { border-top: 3px solid var(--curran-yellow); padding-top: 10px; margin-top: 10px; }
.curran-list-charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 14px; margin: 10px 0 14px; }
.curran-list-charts .curran-chart { max-width: none; margin: 0; }
.curran-pie-row { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
svg.curran-pie { width: 190px; height: 190px; flex: 0 0 190px; }
ul.curran-pie-legend { list-style: none; margin: 0; padding: 0; font-size: 13px; }
ul.curran-pie-legend li { display: flex; align-items: center; gap: 6px; margin: 3px 0; }
.curran-list-save { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; margin: 14px 0; }
.curran-list-save .curran-panel { margin: 0; }
@media print { .curran-list-charts { display: block; } }

/* v1.13.0: advance voting line under the Election Day countdown */
.curran-advance-banner { display: flex; align-items: center; gap: 14px; background: #FFF6E0; color: #181C62; border-left: 6px solid #FEBD3B; border-radius: 6px; padding: 10px 18px; margin: -8px 0 16px; }
.curran-advance-banner > .crm-i { font-size: 26px; color: #B52F18; }
.curran-advance-banner div { display: flex; flex-direction: column; font-size: 15px; }
.curran-advance-banner strong { font-size: 18px; }
.curran-advance-banner a { color: #181C62; text-decoration: underline; }

/* v1.14.0: List Builder target criteria (Populus-style groups) */
.curran-crit { margin: 6px 0 12px; }
.curran-crit-group { border: 2px solid #181C62; border-radius: 6px; margin: 6px 0; background: #FFFFFF; }
.curran-crit-head { display: flex; align-items: center; gap: 10px; background: #181C62; color: #FFFFFF; padding: 6px 10px; border-radius: 3px 3px 0 0; }
.curran-crit-head select { min-width: 140px; }
.curran-crit-head span { flex: 1; }
.curran-crit-xall, .curran-crit-xany { border-color: #B52F18; }
.curran-crit-xall > .curran-crit-head, .curran-crit-xany > .curran-crit-head { background: repeating-linear-gradient(135deg, #B52F18, #B52F18 12px, #C9452E 12px, #C9452E 24px); }
.curran-crit-nested { margin: 6px 0 6px 18px; }
.curran-crit-body { padding: 8px 10px; }
.curran-crit-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px; background: #F3F5FA; border-radius: 4px; padding: 6px 8px; }
.curran-crit-empty { background: #FDECE8; }
.curran-crit-type { min-width: 220px; }
.curran-crit-op { min-width: 150px; }
.curran-crit-val { flex: 1; min-width: 220px; }
.curran-crit-val input[type="text"], .curran-crit-val select { width: 100%; box-sizing: border-box; }
.curran-crit-glue { font-size: 11px; font-weight: bold; color: #5A6075; margin: 3px 4px; }
.curran-crit-x { background: none; border: 0; color: inherit; font-size: 20px; line-height: 1; cursor: pointer; padding: 0 4px; }
.curran-crit-row .curran-crit-x { color: #B52F18; margin-left: auto; }
/* v1.83.2: the theme paints buttons red, so a red x on it vanished. Every remove (x) button: red box, white x. */
.curran-crit .curran-crit-x, .curran-crit .curran-crit-x:hover, .curran-crit .curran-crit-x:focus { background: #B52F18 !important; color: #FFFFFF !important; border: 0 !important; border-radius: 3px; font-size: 20px !important; font-weight: 700; line-height: 1 !important; min-width: 32px; padding: 4px 8px !important; text-shadow: none !important; }
.curran-crit .curran-crit-x:hover { background: #8E2210 !important; }
.curran-crit-add { margin-top: 8px; display: flex; gap: 14px; }
.curran-crit-addbtn { background: none; border: 0; color: #181C62; font-weight: bold; cursor: pointer; padding: 2px 0; }
.curran-crit-addbtn:hover, .curran-crit-addbtn:focus { text-decoration: underline; }
.curran-crit-join { margin: 4px 0; }
.curran-crit-addtop { margin-top: 6px; }

/* v1.15.1: Find shows a badge right after each name: this campaign's mark (or the newest past mark, grey) and DNC. */
.curran-mk-wrap { display: inline-flex; gap: 5px; margin-left: 10px; vertical-align: middle; }
.curran-mk-badge { display: inline-block; min-width: 26px; padding: 1px 7px; border-radius: 10px; font-size: 13px; font-weight: bold; line-height: 18px; text-align: center; color: #FFFFFF; background: #6B6F9A; white-space: nowrap; }
.curran-mk-badge.mk-1 { background: #1E7B34; }
.curran-mk-badge.mk-2 { background: #5FA35C; }
.curran-mk-badge.mk-3 { background: #FEBD3B; color: #181C62; }
.curran-mk-badge.mk-4 { background: #B52F18; }
.curran-mk-badge.mk-ws { background: #4F6FB5; }
.curran-mk-badge.mk-nv, .curran-mk-badge.mk-iv, .curran-mk-badge.mk-other { background: #8A8A8A; }
.curran-mk-badge.mk-dnc { background: #000000; box-shadow: inset 0 0 0 2px #B52F18; }
.curran-mk-badge.mk-past { background: transparent; color: #4A4F7A; border: 2px solid #C7D9F0; font-weight: normal; line-height: 14px; }

/* v1.15.0: home page "Waiting on us" lists */
.curran-todo { margin: 18px 0 8px; }
.curran-todo > h2 { color: #181C62; margin: 0 0 10px; }
.curran-todo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 14px; }
.curran-todo-box { background: #FFFFFF; border: 1px solid #C7D9F0; border-top: 5px solid #181C62; border-radius: 6px; padding: 10px 14px; }
.curran-todo-box h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; font-size: 17px; color: #181C62; }
.curran-todo-box h3 .curran-todo-n { margin-left: auto; background: #B52F18; color: #FFFFFF; border-radius: 12px; padding: 1px 10px; font-size: 14px; }
.curran-todo-box h3 .curran-todo-n.zero { background: #C7D9F0; color: #181C62; }
.curran-todo-box table { width: 100%; border-collapse: collapse; font-size: 14px; }
.curran-todo-box td { padding: 4px 6px; border-top: 1px solid #EEF2F8; vertical-align: top; }
.curran-todo-box .curran-todo-more { margin: 8px 0 0; font-size: 14px; }
.curran-todo-box .curran-empty { margin: 4px 0; }

/* v1.15.2: home page number tiles are links */
.curran-tile-link { cursor: pointer; transition: box-shadow .15s ease, transform .15s ease; }
.curran-tile-link:hover, .curran-tile-link:focus { box-shadow: 0 3px 12px rgba(24, 28, 98, .25); transform: translateY(-1px); outline: none; }
.curran-tile-link:focus-visible { outline: 3px solid #FEBD3B; outline-offset: 2px; }

/* v1.15.5: Roti call lists on the home page (same cards as Roti's dashboard) */
.curran-calllists { margin: 18px 0 8px; }
.curran-calllists-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.curran-calllists-head h2 { color: #181C62; margin: 0 0 10px; }
.curran-calllists-more { color: #C2410C; }
.curran-calllists-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 18px; }
.curran-callcard { background: #FFFFFF; border-radius: 6px; padding: 16px 20px; }
.curran-callcard h3 { margin: 0 0 10px; padding-bottom: 10px; border-bottom: 1px solid #DDE3EE; color: #181C62; font-size: 20px; }
.curran-callcard-n { font-weight: normal; color: #5B6170; margin-left: 6px; }
.curran-callcard p { margin: 0 0 12px; color: #181C62; }
.curran-callcard-row { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
a.curran-callbtn { display: inline-block; padding: 9px 16px; border-radius: 4px; background: #D95D16; color: #FFFFFF !important; font-weight: bold; text-decoration: none; border: 1px solid #D95D16; }
a.curran-callbtn.is-quiet { background: #FFFFFF; color: #181C62 !important; border-color: #D6DBE4; }
a.curran-callbtn:hover, a.curran-callbtn:focus { filter: brightness(0.95); }
a.curran-callcard-link { color: #C2410C; }

/* v1.21.3 (restored in 1.24.1): Donations box on the home page is wider so the amount fits */
.curran-tile-money { min-width: 340px; flex-grow: 2; overflow: hidden; }
.curran-tile-money .curran-money-amount { white-space: nowrap; }

/* v1.28.0: canvasses planned together */
.curran-batch { border-left: 4px solid #181C62; padding: 2px 0 2px 12px; margin: 12px 0 18px; }
.curran-batch-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 6px 0 8px; color: #181C62; }

/* ==================================================================
 * v1.30.0: phones and narrow screens.
 * Main rule: nothing may be wider than the screen. A too-wide table or row of buttons made phones
 * zoom the whole page out (tiny text, white strips at the sides). Wide tables now scroll sideways
 * inside their own box instead, rows of buttons wrap, and side-by-side layouts stack.
 * ================================================================== */
@media (max-width: 760px) {
  html, body { max-width: 100%; overflow-x: hidden; overflow-x: clip; }
  img, iframe, video, canvas, svg, select, input, textarea { max-width: 100%; }
  #crm-container { min-width: 0 !important; }

  /* Curran pages: the navy menu goes across the top and scrolls sideways. */
  .curran-shell { flex-direction: column; }
  .curran-side { flex: 0 0 auto; flex-direction: row; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .curran-side-head { display: none; }
  .curran-side a { flex: 0 0 auto; min-width: 76px; padding: 8px 6px; font-size: 11.5px; border-bottom: 0; border-right: 1px solid rgba(255,255,255,0.2); }
  .curran-side a i.crm-i { font-size: 18px; }
  .curran-main { padding: 12px 10px; overflow-x: visible; }
  .curran-head h2 { font-size: 20px; }
  .curran-panel { padding: 10px 12px; }

  /* Tables scroll sideways in their own box. */
  .curran-table, .curran-main table, #crm-container table.selector, #crm-container table.dataTable,
  #crm-container table.crm-sortable-table, #crm-container table.row-highlight {
    display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch;
  }
  .curran-table th, .curran-table td { white-space: normal; min-width: 70px; }
  #crm-container .dataTables_wrapper, #crm-container .crm-search-results, #crm-container .crm-results-block { max-width: 100%; overflow-x: auto; }

  /* Rows of buttons, tabs and pills wrap instead of running off the screen. */
  .curran-tabs, .curran-toptabs, .curran-map-controls, .curran-head, .curran-inline-form,
  .curran-main [class*="tabs"], .curran-main [class*="pills"], .curran-main [class*="buttons"], .curran-main [class*="filters"] {
    flex-wrap: wrap !important; max-width: 100%;
  }
  .curran-tabs { gap: 2px 12px; }

  /* Forms: label above the box. */
  .curran-form-row { flex-direction: column; gap: 4px; }
  .curran-form-row > label { flex: 0 0 auto; text-align: left; padding-top: 0; }
  .curran-form-row > div { width: 100%; min-width: 0; }
  .curran-form-row select[multiple] { min-width: 0; width: 100%; }
  .curran-form-row input[type="text"], .curran-form-row input[type="password"], .curran-form-row input[type="email"], .curran-main textarea { width: 100% !important; box-sizing: border-box; }

  /* Number tiles: two across, the Donations box across the top. */
  .curran-tiles { grid-template-columns: 1fr 1fr; gap: 8px; }
  .curran-tile { padding: 10px 6px; min-width: 0; }
  .curran-tile-wide, .curran-tile-money { grid-column: 1 / -1 !important; }
  .curran-tile-money { min-width: 0 !important; }
  .curran-tile li { font-size: 26px; }
  .curran-tile-body { gap: 8px; }
  .curran-tile-body > i.crm-i { font-size: 24px; }
  .curran-week { gap: 24px; }
  .curran-cards { grid-template-columns: 1fr; }

  /* Maps and charts fit the screen. */
  .curran-map { height: 360px; }
  .curran-chart { max-width: 100% !important; }
  .curran-main svg[viewBox]:not(.leaflet-zoom-animated) { max-width: 100% !important; height: auto; }
  .curran-batch { padding-left: 8px; }

  /* CiviCRM contact page: tabs go across the top (with their names), details use the full width. */
  #mainTabContainer { display: block !important; }
  #mainTabContainer > ul.ui-tabs-nav { float: none !important; width: 100% !important; display: flex !important; flex-wrap: wrap; gap: 4px; height: auto !important; border-right: 0 !important; }
  #mainTabContainer > ul.ui-tabs-nav > li { float: none !important; width: auto !important; flex: 1 1 46%; margin: 0 !important; }
  #mainTabContainer > ul.ui-tabs-nav > li > a { display: flex !important; align-items: center; gap: 6px; width: 100% !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #mainTabContainer > ul.ui-tabs-nav > li > a span, #mainTabContainer > ul.ui-tabs-nav > li > a .tab-label { display: inline !important; }
  #mainTabContainer > ul.ui-tabs-nav > li > a em, #mainTabContainer > ul.ui-tabs-nav > li > a .badge { flex: 0 0 auto !important; width: auto !important; min-width: 1.8em; margin-left: auto; text-align: center; }
  #mainTabContainer > .ui-tabs-panel { float: none !important; width: 100% !important; margin-left: 0 !important; box-sizing: border-box; }
  #contact-summary .contactCardLeft, #contact-summary .contactCardRight,
  #contact-summary .contact_panel > div, .crm-summary-contactinfo-block, .crm-summary-demographic-block {
    float: none !important; width: 100% !important; max-width: 100% !important; box-sizing: border-box;
  }
  #contact-summary .contact_panel { display: block !important; }
  #crm-container .crm-summary-row { display: block !important; }
  #crm-container .crm-summary-row .crm-label, #crm-container .crm-summary-row .crm-content { float: none !important; width: auto !important; display: block !important; text-align: left !important; }
  #crm-container .crm-summary-block, #crm-container .crm-summary-block .crm-content { word-break: normal; overflow-wrap: anywhere; }
  #crm-container .crm-summary-contactname-block { flex-wrap: wrap; }
  #crm-container .crm-actions-ribbon, #crm-container #actions { display: flex; flex-wrap: wrap; gap: 4px; }
}

/* v1.33.0: phone campaign generator */
.curran-pc-rules { list-style: none; margin: 0; padding: 0; }
.curran-pc-rules li { margin: 6px 0; }
.curran-pc-rules input[disabled] + * , .curran-pc-rules label:has(input[disabled]) { color: #6b6b6b; }
.curran-pc-rules input[type="number"] { margin: 0 4px; }

/* v1.36.0 Trends dashboard charts. */
.curran-ch { margin: 6px 0 4px; max-width: 980px; }
.curran-ch-wrap { position: relative; }
.curran-ch-svg { display: block; overflow: visible; }
.curran-ch-tip { position: absolute; top: 6px; z-index: 5; background: #FFFFFF; border: 1px solid var(--curran-sky); box-shadow: 0 2px 8px rgba(24, 28, 98, .18); padding: 8px 10px; font-size: 13px; line-height: 1.45; color: var(--curran-navy); pointer-events: none; max-width: 340px; white-space: nowrap; }
.curran-ch-tip .curran-swatch { vertical-align: -1px; }
.curran-ch-legend a.curran-legend-item { color: var(--curran-navy); text-decoration: none; cursor: pointer; }
.curran-ch-legend a.curran-ch-off { opacity: .4; text-decoration: line-through; }
#ctm-kinds label { display: inline-flex; align-items: center; gap: 4px; }
@media print { .curran-ch-tip { display: none !important; } }
@media (max-width: 760px) { .curran-ch-tip { white-space: normal; max-width: 230px; font-size: 12px; } }

/* v1.37.0 Election night simulator. */
.curran-sim { margin-top: 32px; border-top: 3px solid var(--curran-yellow); padding-top: 14px; }
.curran-sim .curran-panel h3 { margin: 0 0 8px; }
.curran-sim .sim-row > label { flex-basis: 230px; }

.curran-sim .sim-trip input { margin: 0 2px; }
.curran-sim .sim-table input { padding: 1px 3px; text-align: right; }
.curran-sim .sim-table th a { color: inherit; text-decoration: none; }
.curran-sim #sim-dials { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 560px), 1fr)); gap: 0 14px; }
/* v1.98.1: settings never spill out of their panel: rows wrap, each box keeps its word, narrow panels put labels on top. */
.curran-sim #sim-dials .curran-panel { min-width: 0; container-type: inline-size; overflow-wrap: anywhere; }
.curran-sim .sim-row { flex-wrap: wrap; }
.curran-sim .sim-row > label { flex: 0 0 190px; }
.curran-sim .sim-row > div { flex: 1 1 240px; min-width: 0; }
.curran-sim .sim-trip { display: inline-flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; white-space: normal !important; }
.curran-sim .sim-trip-part { white-space: nowrap; }
.curran-sim #sim-dials select { max-width: 100%; }
@container (max-width: 520px) {
  .curran-sim .sim-row { flex-direction: column; gap: 4px; }
  .curran-sim .sim-row > label { flex: 0 0 auto; text-align: left; padding-top: 0; }
  .curran-sim .sim-row > div { width: 100%; flex: 1 1 auto; }
}
.curran-sim #sim-paste { font-family: monospace; }
/* v1.97.0 Quick setup. */
.curran-sim .sim-quick { border-left: 4px solid var(--curran-yellow); }
.curran-sim .sim-quick h3 { margin: 0 0 4px; }
.curran-sim .sim-q-step { margin: 12px 0 4px; }
.curran-sim .sim-q-table { width: auto; max-width: 100%; }
.curran-sim .sim-q-table input[type=text] { max-width: 100%; }
@media (max-width: 600px) { .curran-sim .sim-q-table input[type=text] { width: 8.5em; } .curran-sim .sim-q-table input[type=number] { width: 52px !important; } .curran-sim .sim-q-table select { max-width: 9.5em; } .curran-sim .sim-q-table td, .curran-sim .sim-q-table th { padding-left: 4px; padding-right: 4px; } }
.curran-sim .sim-q-pick select { max-width: 100%; }
.curran-sim .sim-reads { margin-top: 10px; }
/* v1.99.0 Simple box. */
.curran-sim .sim-simple { border-left: 4px solid var(--curran-yellow); }
.curran-sim .sim-simple h3 { margin: 0 0 4px; }
.curran-sim .sim-s-table td { padding: 3px 12px 3px 0; vertical-align: middle; }
.curran-sim .sim-s-table input[type=text] { max-width: 100%; }
.curran-sim .sim-s-row { margin: 8px 0; }
.curran-sim .sim-s-row select { max-width: 100%; }
.curran-sim .sim-s-answer { font-size: 1.1em; margin: 10px 0 0; }
/* v1.99.1 "Who wins?" sources side by side. */
.curran-sim .sim-b-table { width: auto; min-width: 100%; }
.curran-sim .sim-b-table th, .curran-sim .sim-b-table td { vertical-align: middle; }
.curran-sim .sim-b-table input[type=number] { width: 64px; text-align: right; }
.curran-sim .sim-b-table thead input[type=text] { width: 9em; color: #181C62; }
.curran-sim .sim-b-delpoll { color: #FFFFFF; margin-left: 4px; text-decoration: none; font-weight: bold; }
.curran-sim .sim-b-weights td { background: #FFF6DE; font-size: 0.9em; white-space: nowrap; }
.curran-sim .sim-b-weights input[type=range] { accent-color: #181C62; }
.curran-sim .sim-b-w { display: inline-block; min-width: 2.6em; text-align: right; font-weight: bold; }
.curran-sim .sim-b-wctl { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 4px; max-width: 150px; }
.curran-sim .sim-b-wctl input[type=range] { flex: 1 0 100%; width: 100%; margin: 0; }
.curran-sim .sim-b-weights input.sim-b-wnum { width: 52px; text-align: right; font-weight: bold; }
.curran-sim .sim-b-lock { font-size: 0.85em; margin-left: 4px; cursor: pointer; }
.curran-sim .sim-b-weights input:disabled { opacity: 0.55; }
.curran-sim .sim-b-res { min-width: 200px; }
.curran-sim .sim-b-weights td { white-space: normal; }
.curran-sim .sim-b-bar { display: flex; align-items: center; gap: 8px; }
.curran-sim .sim-b-bar span { display: block; height: 18px; background: #C9CCD8; border-radius: 2px; transition: width .25s; }
.curran-sim .sim-b-bar span.sim-b-curran { background: #1E7B34; }
.curran-sim .sim-b-bar span.sim-b-lead { background: #181C62; }
.curran-sim .sim-b-how { margin: 6px 0 10px; }
.curran-sim .sim-b-links a { margin-right: 14px; }
.curran-sim .sim-b-big { font-size: 1.35em; font-weight: bold; }
.curran-sim .sim-b-lens-title { font-weight: bold; margin: 12px 0 6px; }
.curran-sim .sim-b-lens-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; }
.curran-sim .sim-b-lens-card { background: #FFFFFF; border: 1px solid #DCE3F2; padding: 8px 10px; text-align: center; }
.curran-sim .sim-b-lens-you { border: 2px solid #181C62; }
.curran-sim .sim-b-lens-num { font-size: 1.6em; font-weight: bold; }
.curran-sim .sim-b-date { font-size: 0.85em; margin-top: 3px; width: 9.5em; color: #181C62; }
.curran-sim .sim-b-fresh { margin: 2px 0 8px; }
.curran-sim .sim-b-histfold { margin-top: 14px; border-top: 1px solid #DCE3F2; padding-top: 8px; }
.curran-sim .sim-b-histfold > summary { cursor: pointer; font-weight: bold; color: var(--curran-navy); }
.curran-sim .sim-b-hist-win { margin: 6px 0; }
.curran-sim .sim-warn { background: #FBE9E5; border-left: 4px solid #B52F18; padding: 8px 12px; margin: 8px 0; }
.curran-sim .sim-q-meta td { background: #F4F6FB; font-size: 0.92em; }
.curran-sim .sim-reads h3 { margin: 0 0 4px; }
.curran-sim #sim-dials select { max-width: 100%; }
.curran-sim .sim-q-local { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: flex-start; padding: 8px 0; border-top: 1px solid #DCE3F2; }
.curran-sim .sim-q-local select[multiple] { min-width: 220px; max-width: 100%; }
@media (max-width: 760px) { .curran-sim #sim-dials { grid-template-columns: 1fr; } }

/* v1.38.0 Trends: thin data greyed out. */
table.curran-table tr.curran-row-thin td { color: #9A9EB0; }
.curran-trend-warn { border-left: 4px solid #B5B9C9; background: #F4F5F8; }
.curran-trend-list { margin: 6px 0; padding-left: 18px; list-style: none; }
.curran-trend-list li { margin: 3px 0; }

/* v1.39.0: dashboard sections that fold open and closed (Universe builder, election night simulator) */
.curran-fold-bar { display: flex; justify-content: flex-end; gap: 16px; margin: 0 0 6px; font-size: 13px; }
details.curran-section-fold { margin: 0 0 10px; }
details.curran-section-fold > .curran-fold-body { padding: 12px 12px 4px; overflow-x: auto; }
/* Closed sections take no room in every browser, so maps and charts inside size themselves when opened. */
details.curran-section-fold:not([open]) > .curran-fold-body { display: none; }
details.curran-section-fold > .curran-fold-body > .curran-panel:last-child { margin-bottom: 8px; }
details.curran-section-fold > summary .curran-fold-count { font-weight: normal; }
details.curran-section-fold > summary .curran-fold-count:empty { display: none; }
@media print {
  details.curran-section-fold { border: 0; }
  details.curran-section-fold > summary { background: none; border-left: 0; padding: 8px 0 4px; font-size: 16px; }
  details.curran-section-fold > summary .curran-fold-count { display: none; }
}

/* v1.40.0: maps shaped like the ward (Toronto Centre is about as tall as it is wide), as tall as the screen allows,
   with their controls and key in a column beside them. On phones the controls and key sit above the map. */
.curran-map-split { --curran-map-h: clamp(440px, calc(100vh - 200px), 860px); display: flex; align-items: flex-start; gap: 12px 22px; margin: 8px 0 14px; }
.curran-map-split-compact { --curran-map-h: clamp(380px, calc(100vh - 320px), 600px); }
.curran-map-split > .curran-map-main { flex: 0 1 calc(var(--curran-map-h) * 1.1); min-width: 0; container-type: inline-size; }
/* Never much taller than it is wide, so a narrow map doesn't leave empty space above and below the ward. */
.curran-map-split .curran-map { height: var(--curran-map-h); height: min(var(--curran-map-h), 97cqw); margin: 0; }
.curran-map-split > .curran-map-side { flex: 1 0 220px; max-width: 520px; }
.curran-map-side .curran-map-controls { flex-direction: column; align-items: flex-start; gap: 10px; margin: 0 0 14px; }
.curran-map-side .curran-legend { margin: 0 0 12px; display: flex; flex-direction: column; align-items: flex-start; gap: 7px; }
.curran-map-side .curran-legend-item { margin: 0; }
.curran-map-side .curran-help { margin-top: 0; }
@media (max-width: 760px) {
  .curran-map-split { flex-direction: column; align-items: stretch; }
  .curran-map-split > .curran-map-side { order: -1; flex: none; max-width: none; }
  .curran-map-split > .curran-map-main { flex: none; width: 100%; }
  .curran-map-side .curran-map-controls, .curran-map-side .curran-legend { flex-direction: row; flex-wrap: wrap; align-items: center; }
}
@media print {
  .curran-map-split { display: block; }
  .curran-map-split .curran-map { height: 520px !important; }
}

/* v1.45.0: click a heading to sort (js/curran-sort.js) */
table.curran-table thead th { cursor: pointer; user-select: none; }
table.curran-table thead th:hover { text-decoration: underline; }
table.curran-table thead th.curran-sort-asc::after { content: " \25B2"; font-size: .7em; }
table.curran-table thead th.curran-sort-desc::after { content: " \25BC"; font-size: .7em; }

/* v1.45.0: Bigger map (js/curran-mapbig.js) */
.curran-map-bigbar { margin: 0 0 6px; text-align: right; }
.curran-map-split.curran-map-big { flex-direction: column; align-items: stretch; --curran-map-h: clamp(560px, calc(100vh - 150px), 1300px); }
.curran-map-split.curran-map-big > .curran-map-main { flex: none; width: 100%; }
.curran-map-split.curran-map-big .curran-map { height: var(--curran-map-h); height: min(var(--curran-map-h), 97cqw); }
.curran-map-split.curran-map-big > .curran-map-side { order: 1; flex: none; max-width: none; display: flex; flex-wrap: wrap; gap: 10px 28px; align-items: flex-start; margin-top: 10px; }
.curran-map-split.curran-map-big .curran-map-side .curran-legend { flex-direction: row; flex-wrap: wrap; gap: 8px 16px; }

/* v1.45.2: poll labels that would overlap are hidden (biggest polls win); they return on zoom or hover */
.leaflet-tooltip.curran-map-label.curran-map-label-hidden { visibility: hidden; }
.leaflet-tooltip.curran-map-label.curran-map-label-hidden.curran-map-label-hover { visibility: visible; }
.leaflet-tooltip.curran-map-label { padding: 0 2px; text-shadow: 0 0 3px #fff, 0 0 3px #fff, 0 0 3px #fff; }

/* v1.45.3: the home page in the same dress as Roti: cards with a navy header bar and the yellow line,
   soft shadows, rounded corners, number tiles that lift on hover */
.curran-eday-banner { border-radius: 12px; }
.curran-tile-link { border-radius: 12px !important; box-shadow: 0 1px 2px rgba(11,37,69,.08), 0 6px 18px rgba(11,37,69,.05); transition: transform .12s ease, box-shadow .12s ease; }
.curran-tile-link:hover { transform: translateY(-2px); box-shadow: 0 2px 4px rgba(11,37,69,.12), 0 10px 24px rgba(11,37,69,.10); }
.curran-todo-box { border: 0; border-top: 0; border-radius: 12px; padding: 0 14px 12px; overflow: hidden; box-shadow: 0 1px 2px rgba(11,37,69,.08), 0 6px 18px rgba(11,37,69,.05); }
.curran-todo-box h3 { margin: 0 -14px 10px; padding: 10px 14px; background: #181C62; color: #FFFFFF; border-bottom: 4px solid #FEBD3B; font-size: 16px; }
.curran-todo-box h3 .curran-todo-n { background: #FEBD3B; color: #181C62; font-weight: 700; }
.curran-todo-box h3 .curran-todo-n.zero { background: rgba(255,255,255,.18); color: #FFFFFF; }
.curran-callcard { border-radius: 12px; padding: 0 20px 16px; overflow: hidden; box-shadow: 0 1px 2px rgba(11,37,69,.08), 0 6px 18px rgba(11,37,69,.05); }
.curran-callcard h3 { margin: 0 -20px 12px; padding: 12px 20px; background: #181C62; color: #FFFFFF; border-bottom: 4px solid #FEBD3B; font-size: 18px; }
.curran-callcard-n { display: inline-block; min-width: 1.8em; padding: 1px 9px; border-radius: 999px; background: #FEBD3B; color: #181C62; font-weight: 700; font-size: 14px; text-align: center; }
.curran-callbtn { border-radius: 10px; }
@media (prefers-reduced-motion: reduce) { .curran-tile-link { transition: none; } .curran-tile-link:hover { transform: none; } }

/* v1.48.0: small line under a sidebar link ("After a canvass"), debrief tick boxes on Log a canvass. */
.curran-side a .curran-side-sub { display: block; font-size: 10.5px; font-weight: normal; opacity: 0.85; margin-top: 2px; }
.curran-checks { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.curran-checks label { font-weight: normal; white-space: nowrap; }
.curran-ready-wrap { margin-bottom: 26px; padding-bottom: 8px; border-bottom: 3px solid var(--curran-yellow); }

/* v1.48.1: Safety buildings reasons edit in place: plain text until clicked. */
.curran-note-edit { display: flex; align-items: center; gap: 6px; margin: 0; min-width: 260px; }
.curran-note-edit input[type="text"] { flex: 1; min-width: 0; border: 1px solid transparent; background: transparent; padding: 3px 5px; border-radius: 4px; font: inherit; color: inherit; }
.curran-note-edit input[type="text"]:hover { border-color: #C9CEDD; cursor: text; }
.curran-note-edit input[type="text"]:focus { border-color: var(--curran-navy); background: #FFFFFF; outline: none; }
.curran-note-edit .button { padding: 3px 10px; }
.curran-note-state { font-size: 12px; color: #2E7D32; white-space: nowrap; }
@media print { .curran-note-edit input[type="text"] { border: 0; } }

/* v1.50.0: bulk tag and list pickers on Create a list */
.curran-bulk-pick{display:inline-block;min-width:280px;vertical-align:middle;margin-right:8px}

/* v1.55.0: neighbourhood editor */
.curran-hood-tools { font-size: 13px; color: var(--curran-navy); }
.curran-hood-choose { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 8px; max-height: 340px; overflow-y: auto; }
.curran-hood-choice { display: flex !important; align-items: center; gap: 7px; margin: 0 !important; padding: 5px 8px; border: 1px solid var(--curran-mist); cursor: pointer; font-weight: normal !important; }
.curran-hood-choice:hover { background: var(--curran-mist); }
.curran-hood-choice.curran-on { border-color: var(--curran-navy); background: #FFF6DC; font-weight: bold !important; }
.curran-hood-choice input { margin: 0; }
.curran-hood-n { margin-left: auto; font-size: 12px; opacity: .75; }
.curran-hood-note { font-weight: bold; min-height: 1em; margin: 4px 0; }
.curran-hood-dirty { color: var(--curran-red); font-weight: bold; margin: 4px 0; }
.curran-hood-dirty[hidden] { display: none; }
.curran-hood-card { border: 1px solid var(--curran-mist); padding: 10px 12px; margin: 0 0 10px; background: #FFFFFF; }
.curran-hood-card[data-hood-new] { border-style: dashed; }
.curran-hood-card-top { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; margin-bottom: 8px; }
.curran-hood-card-top label { font-weight: bold; display: inline-flex; align-items: center; gap: 6px; }
.curran-hood-card .curran-pick { max-width: none; }
.curran-hood-remove { font-weight: normal !important; margin-left: auto; }
/* The poll list only opens while you're using that card's search box. */
.curran-hood-card .curran-pick:not(:focus-within) .curran-pick-list,
.curran-hood-card .curran-pick:not(:focus-within) .curran-pick-note { display: none; }
/* v1.55.2: where a map click goes, right above the map */
.curran-hood-bar { border: 3px solid var(--curran-navy); background: #FFFFFF; padding: 8px 10px; margin: 0 0 6px; color: var(--curran-navy); }
.curran-hood-bar-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; font-size: 15px; }
.curran-hood-bar-swatch { width: 26px; height: 26px; border: 1px solid var(--curran-navy); flex: none; }
.curran-hood-bar select { font-size: 15px; font-weight: bold; padding: 4px 6px; max-width: 100%; }
.curran-hood-bar-note { margin-top: 5px; font-size: 13px; }
.curran-hood-hint { background: #FFFFFF; color: var(--curran-navy); border: 2px solid var(--curran-navy); padding: 6px 9px; font-size: 13px; font-weight: bold; max-width: 260px; box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.curran-hood-card-active { border: 3px solid var(--curran-navy); }
.curran-hood-card-active::before { content: "Map clicks go here"; display: inline-block; background: var(--curran-navy); color: #FFFFFF; font-size: 12px; font-weight: bold; padding: 2px 8px; margin: -4px 0 8px; }

/* v1.61.0: no grey theme buttons anywhere in CiviCRM, ever (Ben's rule). Any button the theme would draw grey
   is Curran navy with white words, red when you point at it. Buttons with their own Curran look keep it. */
html body .crm-container a.button:not([class*="curran-"]):not([class*="cs-"]),
html body .crm-container a.button:not([class*="curran-"]):not([class*="cs-"]):link,
html body .crm-container a.button:not([class*="curran-"]):not([class*="cs-"]):visited,
html body .crm-container button.button:not([class*="curran-"]):not([class*="cs-"]),
html body .crm-container input.crm-form-submit:not([class*="curran-"]),
html body .crm-container button.crm-button:not([class*="curran-"]),
html body .ui-dialog .ui-dialog-buttonpane button {
  background: var(--curran-navy) !important; background-image: none !important; color: #FFFFFF !important;
  border: 1px solid var(--curran-navy) !important; text-shadow: none !important; opacity: 1 !important; text-decoration: none !important;
}
html body .crm-container a.button:not([class*="curran-"]):not([class*="cs-"]) span,
html body .crm-container button.crm-button:not([class*="curran-"]) span { color: #FFFFFF !important; background: transparent !important; }
html body .crm-container a.button:not([class*="curran-"]):not([class*="cs-"]):hover,
html body .crm-container button.button:not([class*="curran-"]):not([class*="cs-"]):hover,
html body .crm-container input.crm-form-submit:not([class*="curran-"]):hover,
html body .crm-container button.crm-button:not([class*="curran-"]):hover,
html body .ui-dialog .ui-dialog-buttonpane button:hover {
  background: var(--curran-red) !important; border-color: var(--curran-red) !important; color: #FFFFFF !important;
}
/* v1.61.0: Signs dashboard note */
.curran-signs-note { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; background: #FFFFFF; border-left: 6px solid var(--curran-yellow); border-radius: 8px; padding: 12px 16px; margin: 0 0 14px; }
.curran-signs-note p { margin: 0; max-width: 62ch; }
.curran-signs-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin: 6px 0 14px; }
.curran-signs-card { background: #FFFFFF; border: 1px solid #DFE6F2; border-top: 4px solid var(--curran-navy); border-radius: 8px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.curran-signs-card h3 { margin: 0; color: var(--curran-navy); font-size: 17px; }
.curran-signs-card h3 i { color: var(--curran-red); margin-right: 6px; }
.curran-signs-card p { margin: 0; color: #4A5170; }
.curran-signs-card ul { list-style: none; margin: 0; padding: 0; }
.curran-signs-card li { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border-bottom: 1px solid #EEF3FA; }
.curran-signs-card li b { color: var(--curran-navy); font-size: 16px; }
.curran-signs-card .button { align-self: flex-start; margin-top: auto; }

/* v1.63.0: Signs by type, under the Sign map. */
.curran-signs-bytype { margin-top: 18px; }
.curran-signs-bytype table { max-width: 760px; }

/* v1.64.0: number tiles under the Sign map that filter it. v1.64.1: firm against the theme's own styles. */
.curran-sign-tiles { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)) !important; gap: 10px !important; margin: 14px 0 4px !important; align-items: stretch; }
.curran-sign-tiles .curran-sign-tile { display: flex !important; flex-direction: column !important; align-items: flex-start !important; justify-content: flex-start !important; gap: 2px; height: auto !important; min-height: 0 !important; margin: 0 !important; text-align: left !important; background: #FFFFFF !important; border: 1px solid #DFE6F2 !important; border-top: 4px solid var(--curran-yellow) !important; border-radius: 8px !important; padding: 10px 14px !important; cursor: pointer; font: inherit; color: var(--curran-navy) !important; text-decoration: none !important; box-shadow: none; text-transform: none !important; }
.curran-sign-tiles .curran-sign-tile:hover, .curran-sign-tiles .curran-sign-tile:focus { box-shadow: 0 3px 12px rgba(24, 28, 98, .2); outline: none; }
.curran-sign-tiles .curran-sign-tile:focus-visible { outline: 3px solid var(--curran-yellow); outline-offset: 2px; }
.curran-sign-tiles .curran-sign-tile.is-active { background: var(--curran-navy) !important; color: #FFFFFF !important; border-color: var(--curran-navy) !important; border-top-color: var(--curran-red) !important; }
.curran-sign-tiles .curran-sign-tile-n { display: block; font-size: 28px; font-weight: 800; line-height: 1.1; color: inherit; background: none; }
.curran-sign-tiles .curran-sign-tile-l { display: block; color: #4A5170; font-size: 15px; line-height: 1.3; white-space: normal; }
.curran-sign-tiles .curran-sign-tile.is-active .curran-sign-tile-l { color: #FFFFFF; }
.curran-sign-tiles .curran-sign-tile-go { border-top-color: var(--curran-sky) !important; }
.curran-sign-tiles-help { font-size: 13px; margin: 2px 0 10px; color: #4A5170; }
.curran-ring-window { box-shadow: 0 0 0 3px #7A4FB3; }
.curran-ring-public { box-shadow: 0 0 0 3px #FFC72C; }

/* v1.65.3: no "CiviCRM » Home" trail and no CiviCRM page title above the page on any staff page.
 * Pages carry their own title inside their content (Curran pages, Curran Signs, CallRiot...), so CiviCRM's
 * copy above it is not shown. Public pages (sign-up forms) are unchanged. Replaces 1.65.1 and 1.65.2. */
html.crm-standalone #crm-container > nav.breadcrumb { display: none !important; }
html.crm-standalone #crm-container:not(.crm-public) > .crm-page-title-wrapper { display: none !important; }
html.crm-standalone #crm-container:not(.crm-public) { padding-top: 16px; }

/* v1.74.0: List Builder robocall follow-up, and "How this list was built" */
.curran-robo { background: #FFF8E6; border: 2px solid var(--curran-yellow); border-radius: 6px; padding: 12px 16px; margin: 14px 0; }
.curran-robo.curran-robo-flash { box-shadow: 0 0 0 4px var(--curran-red); }
.curran-robo h3 { margin: 0 0 4px; color: var(--curran-navy); }
.curran-robo select { min-width: 280px; max-width: 100%; }
.curran-robo .curran-robo-skip label { display: block; font-weight: normal; margin: 2px 0; }
.curran-steps { margin: 18px 0; border-top: 3px solid var(--curran-yellow); padding-top: 8px; }
.curran-steps h3 { color: var(--curran-navy); margin: 0 0 4px; }
table.curran-steps-table { border-collapse: collapse; width: 100%; max-width: 1100px; }
table.curran-steps-table th, table.curran-steps-table td { padding: 6px 10px; border-bottom: 1px solid var(--curran-sky); text-align: left; vertical-align: top; color: var(--curran-navy); }
table.curran-steps-table th { background: var(--curran-navy); color: #FFFFFF; }
table.curran-steps-table td.curran-steps-n { width: 24px; font-weight: bold; }
table.curran-steps-table .curran-steps-num { text-align: right; white-space: nowrap; }
table.curran-steps-table tr.curran-steps-base td { background: var(--curran-mist); font-style: italic; }
.curran-steps-add { color: #1E6B34; font-weight: bold; }
.curran-steps-remove { color: var(--curran-red); font-weight: bold; }
.curran-steps-ok { color: #1E6B34; font-weight: bold; margin: 8px 0; }
.curran-steps-bad { color: var(--curran-red); font-weight: bold; margin: 8px 0; }
.curran-steps .curran-scroll { overflow-x: auto; }
@media (max-width: 700px) { table.curran-steps-table th, table.curran-steps-table td { padding: 5px 6px; font-size: 13px; } table.curran-steps-table .curran-steps-own { display: none; } }


/* v1.85.0: Ben's rule again: no grey theme buttons anywhere. Also covers the page buttons under CiviCRM's
   own lists (<< First, < Previous, Next >, Last >>), SearchKit's page numbers, and the theme's
   default / secondary / light buttons and plain submit buttons: Curran navy with white words, red when you
   point at them. The page you're on is yellow. Add-ons with their own button look (Roti, CallRiot, the
   contact banner, curran- buttons) keep it. */
html body .crm-container .crm-pager a, html body .crm-container .crm-pager a:link, html body .crm-container .crm-pager a:visited,
html body .crm-container .crm-pager-nav a, html body .crm-container .crm-pager-nav a:link, html body .crm-container .crm-pager-nav a:visited,
html body .crm-container .pagination > li > a, html body .crm-container .pagination > li > button,
html body .crm-container .pager li > a,
html body .crm-container .btn-default:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .crm-container .btn-secondary:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .crm-container .btn-light:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .crm-container input[type="submit"]:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .crm-container input[type="button"]:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .crm-container input[type="reset"]:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]),
html body .ui-dialog .ui-dialog-buttonpane .ui-button, html body .crm-container .ui-button:not(.ui-dialog-titlebar-close) {
  background: var(--curran-navy) !important; background-image: none !important; color: #FFFFFF !important;
  border: 1px solid var(--curran-navy) !important; text-shadow: none !important; opacity: 1 !important; text-decoration: none !important;
  box-shadow: none !important; filter: none !important;
}
html body .crm-container .crm-pager a *, html body .crm-container .crm-pager-nav a *, html body .crm-container .pagination > li > a *,
html body .crm-container .btn-default:not([class*="curran-"]) *, html body .crm-container .btn-secondary:not([class*="curran-"]) * { color: #FFFFFF !important; }
html body .crm-container .crm-pager a:hover, html body .crm-container .crm-pager a:focus,
html body .crm-container .crm-pager-nav a:hover, html body .crm-container .crm-pager-nav a:focus,
html body .crm-container .pagination > li > a:hover, html body .crm-container .pagination > li > a:focus,
html body .crm-container .pager li > a:hover,
html body .crm-container .btn-default:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]):hover,
html body .crm-container .btn-secondary:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]):hover,
html body .crm-container .btn-light:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]):hover,
html body .crm-container input[type="submit"]:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]):hover,
html body .crm-container input[type="button"]:not([class*="curran-"]):not([class*="agnes"]):not([class*="cb-"]):hover,
html body .ui-dialog .ui-dialog-buttonpane .ui-button:hover, html body .crm-container .ui-button:not(.ui-dialog-titlebar-close):hover {
  background: var(--curran-red) !important; border-color: var(--curran-red) !important; color: #FFFFFF !important;
}
html body .crm-container .pagination > .active > a, html body .crm-container .pagination > .active > span,
html body .crm-container .pagination > li.active > a:hover {
  background: var(--curran-yellow) !important; color: var(--curran-navy) !important; border-color: var(--curran-navy) !important; font-weight: bold;
}
/* Greyed-out page buttons (no earlier or later page): the same navy, faded, never grey. */
html body .crm-container .pagination > .disabled > a, html body .crm-container .pagination > .disabled > span,
html body .crm-container .btn-default:disabled, html body .crm-container .btn-secondary:disabled, html body .crm-container input[type="submit"]:disabled {
  background: var(--curran-navy) !important; color: #FFFFFF !important; border-color: var(--curran-navy) !important; opacity: .45 !important;
}

/* v1.93.0: Each mark by day: views switched with buttons, no script. v1.94.0: Each day / Running total, plus a time range (js/curran-marklines.js). */
.curran-mlines .curran-mlines-r { position: absolute; opacity: 0; width: 1px; height: 1px; }
.curran-mlines .curran-mlines-b { display: inline-block; margin: 6px 6px 2px 0; padding: 4px 12px; border: 1px solid #C9CEDA; border-radius: 14px; font-size: 13px; cursor: pointer; background: #FFF; color: var(--curran-navy); font-family: inherit; line-height: 1.4; }
.curran-mlines .curran-mlines-r:checked + .curran-mlines-b, .curran-mlines .curran-mlines-b.is-on { background: var(--curran-navy); border-color: var(--curran-navy); color: #FFF; }
.curran-mlines .curran-mlines-r:focus-visible + .curran-mlines-b { outline: 2px solid var(--curran-navy); outline-offset: 2px; }
.curran-mlines .curran-mlines-range { display: flex; flex-wrap: wrap; align-items: center; gap: 0 2px; margin-top: 4px; }
.curran-mlines .curran-mlines-range[hidden] { display: none; }
.curran-mlines .curran-mlines-shelp { font-size: 12.5px; color: #5A6275; margin-left: 6px; }   /* v1.100.0: Smooth */
.curran-mlines .curran-mlines-range .curran-mlines-b { padding: 2px 10px; font-size: 12px; }
.curran-mlines .curran-mlines-rl { font-size: 13px; margin-right: 6px; color: var(--curran-navy); }
.curran-mlines .curran-mlines-dates { font-size: 13px; margin-left: 8px; color: var(--curran-navy); white-space: nowrap; }
.curran-mlines .curran-mlines-dates input { font: inherit; padding: 1px 4px; border: 1px solid #C9CEDA; border-radius: 4px; }
.curran-mlines .curran-mlines-pane { display: none; }
#curran-mlines-each:checked ~ .curran-mlines-pane-each,
#curran-mlines-total:checked ~ .curran-mlines-pane-total { display: block; }
/* v1.95.0: the time slider under Each mark by day. */
.curran-mlines .curran-mlines-slider { margin: 2px 0 4px; }
.curran-mlines .curran-mlines-slider[hidden] { display: none; }
.curran-mlines .curran-mlines-sl { user-select: none; -webkit-user-select: none; }
.curran-mlines .curran-mlines-sl.is-dragging, .curran-mlines .curran-mlines-sl.is-dragging [data-sl="win"] { cursor: grabbing !important; }
.curran-mlines .curran-mlines-sl g[data-sl]:focus .curran-mlines-h { fill: #FEBD3B; }

/* No blue-on-red buttons (Oct 12 2026): the theme paints plain buttons red; link-style buttons stay see-through */
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button),
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):hover,
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):focus,
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):active,
html body .curran-linkbtn,
html body .curran-linkbtn:hover,
html body .curran-linkbtn:focus,
html body .curran-linkbtn:active,
html body .curran-crit-addbtn,
html body .curran-crit-addbtn:hover,
html body .curran-crit-addbtn:focus,
html body .curran-crit-addbtn:active,
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x),
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):hover,
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):focus,
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):active { background: transparent !important; background-image: none !important; box-shadow: none !important; text-shadow: none !important; }

/* v1.104.4: see-through buttons never keep the theme's white text (white on light blue was invisible). Each gets its own dark colour. */
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button),
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):hover,
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):focus,
html body .crm-container button[class*="link"]:not(.btn):not(.crm-button):not(.button):active,
html body .curran-linkbtn,
html body .curran-linkbtn:hover,
html body .curran-linkbtn:focus,
html body .curran-linkbtn:active { color: #21409A !important; }
html body .curran-crit-addbtn,
html body .curran-crit-addbtn:hover,
html body .curran-crit-addbtn:focus,
html body .curran-crit-addbtn:active,
html body .curran-crit-addbtn span { color: #181C62 !important; }
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x),
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):hover,
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):focus,
html body .curran-crit-row .curran-crit-x:not(.curran-crit .curran-crit-x):active { color: #B52F18 !important; }

/* v1.100.0: the time slider under the Marks over time chart. Two range inputs on one track; only the handles take clicks. */
.curran-tslider { position: relative; max-width: 900px; margin: 6px 0 4px; padding-bottom: 20px; }
.curran-tslider[hidden] { display: none; }
.curran-tslider input[type=range] { position: absolute; left: 6.67%; width: 91.1%; top: 0; height: 34px; margin: 0; background: transparent !important;
  pointer-events: none; -webkit-appearance: none; appearance: none; border: 0 !important; box-shadow: none !important; }
.curran-tslider input[type=range]::-webkit-slider-runnable-track { background: transparent; height: 34px; }
.curran-tslider input[type=range]::-moz-range-track { background: transparent; }
.curran-tslider input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; pointer-events: auto; width: 12px; height: 34px; border-radius: 4px; background: #181C62; border: 2px solid #FFF; cursor: ew-resize; }
.curran-tslider input[type=range]::-moz-range-thumb { pointer-events: auto; width: 10px; height: 32px; border-radius: 4px; background: #181C62; border: 2px solid #FFF; cursor: ew-resize; }
.curran-tslider input[type=range]:focus-visible::-webkit-slider-thumb { outline: 3px solid #FEBD3B; }
.curran-tslider .curran-tslider-help { margin: 2px 0 0 6.67%; font-size: 12.5px; }

/* sign map rings: brighter (Oct 2026) */
.curran-dot.curran-ring-window{border:3px solid #00C2FF !important;box-shadow:none !important;}
.curran-dot.curran-ring-public{border:3px solid #FFD60A !important;box-shadow:none !important;}

/* v1.104.0: Find — the Contact Banner drops down under a person (js/curran-find.js). */
/* v1.104.2: a small chevron, not a big button. The strong selectors beat CiviCRM's theme button sizes. */
button.curran-dd-btn, .crm-container button.curran-dd-btn, #crm-container button.curran-dd-btn {
  display: inline-flex !important; align-items: center; justify-content: center;
  width: 22px !important; height: 22px !important; min-width: 0 !important; min-height: 0 !important;
  margin: 0 6px 0 0 !important; padding: 0 !important; border: 0 !important; border-radius: 4px !important;
  background: transparent !important; color: var(--curran-navy) !important; box-shadow: none !important; text-shadow: none !important;
  font-size: 0 !important; line-height: 1 !important; cursor: pointer; vertical-align: middle; transition: background .15s;
}
button.curran-dd-btn::before {
  content: ''; display: block; width: 7px; height: 7px; margin-left: -2px;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: rotate(-45deg); transition: transform .15s;
}
button.curran-dd-btn[aria-expanded="true"]::before { transform: rotate(45deg); margin: -3px 0 0 0; }
button.curran-dd-btn:hover, .crm-container button.curran-dd-btn:hover, #crm-container button.curran-dd-btn:hover { background: var(--curran-sky) !important; }
button.curran-dd-btn[aria-expanded="true"], .crm-container button.curran-dd-btn[aria-expanded="true"], #crm-container button.curran-dd-btn[aria-expanded="true"] { background: var(--curran-yellow) !important; }
button.curran-dd-btn:focus-visible { outline: 2px solid var(--curran-yellow); outline-offset: 1px; }
tr.curran-dd-row[hidden] { display: none !important; }
tr.curran-dd-row > td { background: var(--curran-mist) !important; border-left: 4px solid var(--curran-yellow); padding: 0 !important; }
.curran-dd { padding: 10px 14px 14px; color: var(--curran-navy); }
.curran-dd-top { display: flex; justify-content: flex-end; margin-bottom: 8px; }
a.curran-dd-open { background: var(--curran-navy) !important; color: #FFFFFF !important; padding: 6px 14px; border-radius: 6px; font-weight: bold; text-decoration: none !important; }
a.curran-dd-open:hover, a.curran-dd-open:focus-visible { background: var(--curran-yellow) !important; color: var(--curran-navy) !important; }
.curran-dd-banner .curran-banner { margin: 0; }
.curran-dd-none { margin: 0; padding: 10px 14px; font-style: italic; opacity: .75; }

/* v1.112.0: Colour by (Waiting or up / Kind of sign) above the Sign map. Divs acting as buttons, so the theme's button look doesn't take over. */
.curran-sign-colourby { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 4px 0 8px; }
.curran-sign-colourby-l { font-size: 14px; color: var(--curran-navy); font-weight: 700; margin-right: 4px; }
.curran-sign-colourby .curran-sign-cb { display: inline-block; padding: 5px 14px; border: 2px solid var(--curran-navy); border-radius: 16px; background: #FFFFFF; color: var(--curran-navy); font-size: 14px; font-weight: 700; cursor: pointer; user-select: none; }
.curran-sign-colourby .curran-sign-cb:focus-visible { outline: 3px solid var(--curran-yellow); outline-offset: 2px; }
.curran-sign-colourby .curran-sign-cb.is-active { background: var(--curran-navy); color: #FFFFFF; }

/* v1.112.1: households beside the people count in List Builder. */
.curran-list-result .curran-list-hh { font-weight: 600; color: #4A5170; font-size: .8em; }

/* v1.117.0: Ben's rule: no grey menus with blue words anywhere. Every drop-down menu CiviCRM draws
   (Event Links, Find Participants, contact Actions, "more" menus, SearchKit and Riverlea menus, autocomplete
   lists) is white with navy words and a navy edge; the item under the pointer is yellow with navy words. */
html body .crm-container .ac_results,
html body .crm-container .ac_results .crm-event-links-list-inner,
html body .crm-container .crm-event-links-list-inner,
html body .crm-container ul.panel,
html body .crm-container .crm-contact-actions-list,
html body .crm-container .crm-contact-actions-list-inner,
html body .crm-container .dropdown-menu,
html body .crm-container .btn-group .dropdown-menu,
html body ul.ui-menu.ui-autocomplete {
  background: #FFFFFF !important;
  background-image: none !important;
  color: var(--curran-navy) !important;
  border: 1px solid var(--curran-navy) !important;
  box-shadow: 0 4px 12px rgba(24, 28, 98, 0.18) !important;
}
html body .crm-container .ac_results ul,
html body .crm-container .ac_results li,
html body .crm-container ul.panel li,
html body .crm-container .crm-contact-actions-list li,
html body .crm-container .dropdown-menu li {
  background: transparent !important;
  background-image: none !important;
}
html body .crm-container .ac_results a,
html body .crm-container .ac_results a:link,
html body .crm-container .ac_results a:visited,
html body .crm-container ul.panel a,
html body .crm-container ul.panel a:link,
html body .crm-container ul.panel a:visited,
html body .crm-container .crm-contact-actions-list a,
html body .crm-container .dropdown-menu a,
html body .crm-container .dropdown-menu > li > a,
html body .crm-container .dropdown-menu .dropdown-item,
html body ul.ui-menu.ui-autocomplete a,
html body ul.ui-menu.ui-autocomplete .ui-menu-item-wrapper {
  background: transparent !important;
  background-image: none !important;
  color: var(--curran-navy) !important;
  text-decoration: none !important;
}
html body .crm-container .ac_results a:hover,
html body .crm-container .ac_results a:focus,
html body .crm-container .ac_results li.ac_over,
html body .crm-container ul.panel a:hover,
html body .crm-container ul.panel a:focus,
html body .crm-container .crm-contact-actions-list a:hover,
html body .crm-container .dropdown-menu a:hover,
html body .crm-container .dropdown-menu a:focus,
html body .crm-container .dropdown-menu .dropdown-item:hover,
html body .crm-container .dropdown-menu .dropdown-item.active,
html body ul.ui-menu.ui-autocomplete .ui-state-active,
html body ul.ui-menu.ui-autocomplete .ui-menu-item-wrapper:hover {
  background: var(--curran-yellow) !important;
  color: var(--curran-navy) !important;
  border-color: transparent !important;
}
/* Headings and dividers inside menus stay readable. */
html body .crm-container .dropdown-menu .dropdown-header,
html body .crm-container ul.panel li.crm-contact-actions-heading,
html body .crm-container .ac_results .crm-event-links-list-inner strong {
  color: var(--curran-red) !important;
  background: transparent !important;
}
html body .crm-container .dropdown-menu .divider,
html body .crm-container .dropdown-menu .dropdown-divider { background: var(--curran-sky) !important; border-color: var(--curran-sky) !important; }
html body .crm-container .ac_results ul { list-style: none !important; margin: 0 !important; padding: 4px 0 !important; }
html body .crm-container .ac_results li a { display: block; padding: 5px 12px !important; }

/* v1.125.0: the hover box for chart dots, bars and days (js/curran-tips.js). Navy on white. */
.curran-ctip { position: fixed; z-index: 100000; display: none; max-width: 320px; padding: 6px 9px; background: #FFFFFF; color: #181C62;
  border: 1px solid #181C62; border-radius: 6px; box-shadow: 0 2px 8px rgba(24, 28, 98, .18); font-size: 13px; line-height: 1.35;
  white-space: pre-line; pointer-events: none; }
@media print { .curran-ctip { display: none !important; } }

/* v1.126.0: Marks by neighbourhood over time. */
.curran-hl-wrap { display: flex; gap: 16px; align-items: flex-start; }
.curran-hl-chart { flex: 1 1 auto; min-width: 0; }
.curran-hl-side { flex: 0 0 290px; }
.curran-hl-sort select { margin-left: 4px; }
.curran-hl-quick { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.curran-hl-quick .button { margin: 0; padding: 3px 10px; }
.curran-hl-list { list-style: none; margin: 0; padding: 0; max-height: 360px; overflow-y: auto; border: 1px solid #DCE3F0; border-radius: 6px; background: #FFFFFF; }
.curran-hl-list li { padding: 5px 8px; border-bottom: 1px solid #EEF3FA; color: #181C62; }
.curran-hl-list li:last-child { border-bottom: 0; }
.curran-hl-list li.off { color: #4A5170; }
.curran-hl-list li.off .curran-swatch { opacity: .35; }
.curran-hl-list li:hover { background: #FFF6DD; }
.curran-hl-list label { display: flex; align-items: center; gap: 6px; cursor: pointer; font-weight: 700; margin: 0; }
.curran-hl-meta { display: block; margin-left: 22px; font-size: 12px; color: #4A5170; }
@media (max-width: 800px) { .curran-hl-wrap { flex-direction: column; } .curran-hl-side { flex: none; width: 100%; } }
@media print { .curran-hl-list { max-height: none; overflow: visible; } .curran-hl-list li.off { display: none; } }

/* v1.128.0: the neighbourhood chart's time slider and quick buttons (same look as Marks by day's). */
.curran-hl-slider { margin: 2px 0 4px; }
.curran-hl-sl { user-select: none; -webkit-user-select: none; }
.curran-hl-time { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 4px; margin: 0 0 6px; }
.curran-hl-tl { font-weight: bold; color: var(--curran-navy); margin-right: 4px; font-size: 13px; }
.curran-hl-b { display: inline-block; padding: 2px 10px; border: 1px solid #C9CEDA; border-radius: 14px; font-size: 12px; cursor: pointer; background: #FFF; color: var(--curran-navy); font-family: inherit; line-height: 1.4; }
.curran-hl-b.is-on { background: var(--curran-navy); border-color: var(--curran-navy); color: #FFF; }
.curran-hl-b:hover:not(.is-on) { background: #FFF6DD; }
.curran-hl-span { margin-left: 8px; font-size: 12px; color: #4A5170; }

/* v1.136.0: Curran tiers by neighbourhood */
.curran-ct-hoodbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 6px 0 10px; }
.curran-ct-hoodbar select, .curran-ct-hoodctl select { margin-left: 4px; }
.curran-ct-hoodnow { background: #FDF0E6; color: #3B2410; border-left: 4px solid #E3772B; padding: 4px 10px; border-radius: 3px; }
.curran-ct-hoodnow a { color: #8E2210; font-weight: 600; }
.curran-ct-hoodctl { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0 0 8px; }
.curran-ct-hoods td, .curran-ct-hoods th { white-space: nowrap; }
.curran-ct-hoods td { color: #1d1d1d; }
.curran-ct-hoods tr.curran-ct-hoodrow-on td { font-weight: 700; }
.curran-ct-hoods .curran-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: middle; }

/* v1.137.0: number and % in each tier cell */
.curran-ct-hoods .ct-n, .curran-ct-hoods .ct-p { display: block; }
.curran-ct-hoods .ct-p { font-size: .82em; color: #3B2410; }
.curran-ct-hoods.show-both .ct-n { font-weight: 600; }
.curran-ct-hoods.show-n .ct-p { display: none; }
.curran-ct-hoods.show-p .ct-n { display: none; }
.curran-ct-hoods.show-p .ct-p { font-size: 1em; }

/* v1.137.0: how much where someone lives counts */
.curran-ct-place { margin: 18px 0; }
.curran-ct-keep { border: 1px solid #D9DEEA; border-radius: 6px; padding: 6px 10px 8px; margin: 10px 0; display: flex; flex-wrap: wrap; gap: 4px 16px; }
.curran-ct-keep legend { font-weight: 600; padding: 0 4px; }
.curran-ct-keep label { white-space: nowrap; }
.curran-ct-move { font-size: .85em; font-weight: 700; margin-left: 4px; }
.curran-ct-move.up { color: #1E6B30; }
.curran-ct-move.down { color: #8E2210; }
.curran-ct-trade { margin: 8px 0 6px 18px; padding: 0; }

/* v1.140.0: Stretched polls (Dashboards > Maps). */
.curran-st-ctl { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; margin: 4px 0 8px; }
.curran-st-ctl select { margin-left: 4px; }
.curran-st-ctl input[type=range] { vertical-align: middle; width: 140px; }
.curran-st-wrap { background: #FFFFFF; border: 1px solid #D9D4CC; border-radius: 6px; padding: 8px; }
.curran-st-map { display: block; width: 100%; height: auto; max-height: 82vh; }
.curran-st-polls path { stroke: #2B2B2B; stroke-width: 0.8; stroke-linejoin: round; cursor: default; }
.curran-st-polls path:hover { stroke-width: 2.2; }
.curran-st-ghost path { fill: none; stroke: #9A938A; stroke-width: 0.8; stroke-dasharray: 3 3; }
.curran-st-labels text { font-size: 11px; font-weight: 700; fill: #1d1d1d; text-anchor: middle; dominant-baseline: middle; paint-order: stroke; stroke: #FFFFFF; stroke-width: 3px; pointer-events: none; }
.curran-st-legend { margin-top: 8px; }
@media print { .curran-st-map { max-height: none; } }
/* v1.158.0: total above the cartogram. */
.curran-st-total { margin: 0 0 6px; font-size: 18px; font-weight: 700; color: #1d1d1d; text-align: center; }
.curran-st-total:empty { display: none; }
.curran-st-hexes path { stroke: #FFFFFF; stroke-width: 0.6; stroke-linejoin: round; }
.curran-st-hexes path:hover { stroke: #1d1d1d; stroke-width: 1.6; }
.curran-st-hexborders path { fill: none; stroke: #1d1d1d; stroke-width: 1.8; stroke-linecap: round; pointer-events: none; }
/* v1.145.0: cartogram lines only where polls or neighbourhoods meet; mark and list pickers. */
.curran-st-fill path { stroke-width: 0.8; }
.curran-st-fill path:hover { stroke-width: 0.8; filter: brightness(0.92); }
.curran-st-borders { fill: none; stroke: #1d1d1d; stroke-width: 1.4; stroke-linejoin: round; stroke-linecap: round; pointer-events: none; }
.curran-st-pick { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin: 0 0 8px; padding: 6px 10px; background: #FBF7F2; border: 1px solid #E5DED4; border-radius: 6px; }
.curran-st-pick[hidden] { display: none; }
.curran-st-mlabel { font-weight: 700; }
.curran-st-mark { white-space: nowrap; }
.curran-st-labels .curran-st-count { font-weight: 800; font-size: 12px; }
/* v1.147.0: Flyers dropped bars (green = dropped, light = not dropped; dark words on both). */
.curran-fl-bar { display: flex; width: 220px; height: 18px; border: 1px solid #9AA3B5; border-radius: 4px; overflow: hidden; background: #FFFFFF; }
.curran-fl-bar.curran-fl-big { width: 100%; max-width: 900px; height: 28px; margin: 6px 0 12px; }
.curran-fl-bar span { display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; white-space: nowrap; overflow: hidden; }
.curran-fl-big span { font-size: 13px; }
.curran-fl-yes { background: #6DB37E; color: #102A16; }
.curran-fl-no { background: #ECEEF3; color: #1d1d1d; }
.curran-fl-key { margin-left: 10px; white-space: nowrap; }
.curran-fl-sw { display: inline-block; width: 12px; height: 12px; vertical-align: -1px; margin: 0 4px 0 8px; border: 1px solid #9AA3B5; }

/* v1.160.0: Election night count (E-Day > Count entry and Results night). */
.curran-count-bar { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; margin: 6px 0 10px; }
.curran-count-bar input[type=search] { width: 12em; }
.curran-count-progress { font-weight: 700; color: #1d1d1d; }
.cc-scroll { overflow-x: auto; }
.cc-table { border-collapse: collapse; font-size: 14px; }
.cc-table th, .cc-table td { padding: 3px 4px; border-bottom: 1px solid #E2DED8; text-align: center; vertical-align: top; }
.cc-table thead th { position: sticky; top: 0; background: #FFFFFF; color: #1d1d1d; font-size: 12px; }
.cc-table .cc-poll { text-align: left; white-space: nowrap; color: #1d1d1d; }
.cc-table input { width: 4.2em; padding: 3px 4px; text-align: right; font-size: 15px; }
.cc-table input.cc-bad { outline: 2px solid #B3261E; }
.cc-table td.cc-status { text-align: left; min-width: 14em; font-size: 12.5px; color: #1d1d1d; }
.cc-table tr.cc-done { background: #EEF7EF; }
.cc-table tr.cc-check { background: #FFF1D0; }
.cc-table tr.cc-special .cc-poll { font-style: italic; }
.cc-flag { color: #8A1C14; font-weight: 700; }
.cc-unsaved { color: #6B4E00; font-weight: 700; }
.cc-hist div { margin-top: 3px; }
.cc-headline { border-radius: 8px; padding: 12px 16px; margin: 6px 0 12px; color: #1d1d1d; border: 2px solid #1d1d1d; }
.cc-headline.cc-lead-us { background: #E3F2E5; }
.cc-headline.cc-lead-them { background: #FFF1D0; }
.cc-big { font-size: 24px; font-weight: 800; margin-bottom: 4px; }
.cc-tiles { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.cc-tile { flex: 1 1 180px; background: #FFFFFF; border: 1px solid #D9D4CC; border-radius: 8px; padding: 10px 12px; color: #1d1d1d; }
.cc-tv { font-size: 22px; font-weight: 800; }
.cc-res { border-collapse: collapse; width: 100%; max-width: 980px; font-size: 14.5px; }
.cc-res th, .cc-res td { padding: 6px 8px; border-bottom: 1px solid #E2DED8; text-align: left; color: #1d1d1d; }
.cc-res tr.cc-us { background: #EEF7EF; }
.cc-bar { display: inline-block; width: 140px; height: 10px; background: #EFECE7; border-radius: 5px; margin-right: 8px; vertical-align: middle; }
.cc-bar span { display: block; height: 100%; background: #1d1d1d; border-radius: 5px; }
.cc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; max-width: 980px; }
.cc-cell { border-radius: 6px; padding: 5px 6px; font-size: 12px; color: #1d1d1d; border: 1px solid #D9D4CC; display: flex; flex-direction: column; }
.cc-cell.cc-out { background: #F6F4F1; color: #6b6b6b; }
.cc-cell.cc-c { background: #D7EFD9; }
.cc-cell.cc-m { background: #F6DCD8; }
.cc-cell.cc-o { background: #FFF1D0; }
.cc-cell.cc-chk { outline: 2px solid #8A1C14; }
/* v1.173.0: poll cells are buttons; the picked poll's panel; Total votes. */
.cc-grid .cc-cell[data-poll] { cursor: pointer; }
.cc-grid .cc-cell[data-poll]:hover { border-color: #1d1d1d; }
.cc-cell.cc-picked { outline: 3px solid #1d1d1d; }
/* v1.174.0: pinned polls and the bar above the grid (plain boxes, so the theme leaves them alone). */
.cc-cell.cc-pinned { border: 2px solid #1d1d1d; }
.cc-gridbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 8px; max-width: 980px; }
.cc-pp-btns { display: flex; gap: 8px; align-items: center; }
.cc-pin-btn { display: inline-block; font: bold 14px Arial, sans-serif; padding: 5px 12px; border: 2px solid #1d1d1d; border-radius: 6px; background: #FEBD3B; color: #1d1d1d; cursor: pointer; user-select: none; }
.cc-pin-btn.cc-pin-light { background: #F3F1ED; }
.cc-pin-btn:hover { background: #FFD27A; }
.cc-pp { max-width: 980px; margin: 10px 0 14px; padding: 10px 14px; background: #FFFFFF; border: 2px solid #1d1d1d; border-radius: 8px; color: #1d1d1d; }
.cc-pp-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.cc-pp-head h3 { margin: 0; }
#cc-results .cc-pp-close { font: bold 14px Arial, sans-serif !important; padding: 5px 12px !important; border: 2px solid #1d1d1d !important; border-radius: 6px !important;
  background: #FEBD3B !important; color: #1d1d1d !important; height: auto !important; min-height: 0 !important; margin: 0 !important; text-shadow: none !important; box-shadow: none !important; text-transform: none !important; cursor: pointer; }
.cc-pp-chk { background: #FFF1D0; border-left: 4px solid #8A1C14; padding: 4px 8px; }
.cc-res tr.cc-tot th, .cc-res tr.cc-tot td { font-weight: 800; border-top: 2px solid #1d1d1d; }
.cc-totals { margin-bottom: 8px; }
.cc-how { margin: 12px 0; max-width: 980px; color: #1d1d1d; }
@media (max-width: 700px) { .cc-big { font-size: 19px; } .cc-bar { width: 70px; } }
.cc-unplaced { background: #FFF1D0; border: 2px solid #1d1d1d; border-radius: 8px; padding: 8px 12px; margin: 0 0 10px; color: #1d1d1d; }
.cc-unplaced h3 { margin: 0 0 4px; }
.cc-up { margin: 3px 0; }
.cc-tabs { display: flex; gap: 4px; margin: 4px 0 10px; border-bottom: 3px solid #1d1d1d; flex-wrap: wrap; }
.cc-tab { font: bold 15px Arial, sans-serif; padding: 8px 16px; border: 2px solid #1d1d1d; border-bottom: 0; border-radius: 6px 6px 0 0; background: #F3F1ED; color: #1d1d1d; cursor: pointer; }
.cc-tab.cc-tab-on { background: #FEBD3B; color: #1d1d1d; }
.cc-quiet-box { display: block; margin: 18px 0 6px; width: 10em; padding: 3px 5px; border: 1px solid #E2DED8; background: #FFFFFF; color: #1d1d1d; font-size: 12px; }

/* v1.167.0: dead names. A quiet folded box on the contact page, and a note above Find's results. */
details.curran-dn { margin: 12px 0; border: 1px solid #C9CEDB; border-radius: 4px; background: #FFFFFF; color: #181C62; max-width: 760px; }
details.curran-dn > summary { cursor: pointer; padding: 8px 12px; font-weight: bold; color: #181C62; }
.curran-dn-help { margin: 0 12px 8px; font-size: 13px; color: #3A3F5C; }
.curran-dn-list { margin: 0 12px 8px; padding: 0; list-style: none; }
.curran-dn-list li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 5px 0; border-top: 1px solid #E6E9F0; }
.curran-dn-name { font-weight: bold; } .curran-dn-when { font-size: 12px; color: #5A607A; }
.curran-dn-del, .curran-dn-add { margin: 0; display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.curran-dn-add { margin: 0 12px 12px; } .curran-dn-add input[type=text] { padding: 5px 8px; border: 1px solid #A8AFC2; border-radius: 4px; width: 160px; } .curran-dn-add label { font-size: 13px; }
.curran-dn-btn { padding: 5px 12px; border-radius: 4px; border: 2px solid #181C62; background: #181C62; color: #FFFFFF; font-weight: bold; cursor: pointer; }
.curran-dn-btn.is-quiet { background: #FFFFFF; color: #181C62; padding: 2px 8px; font-size: 12px; }
.curran-dn-find { margin: 8px 0; padding: 8px 12px; background: #FFF6E0; border-left: 5px solid #FEBD3B; border-radius: 4px; color: #181C62; }
.curran-dn-find a { font-weight: bold; color: #181C62; text-decoration: underline; }
.curran-dn-find-note { font-size: 12px; color: #3A3F5C; }
