/**
 * MOVED 2026-08-31, from Voting & Election Toolkit plugin
 * (public/css/dwfv-public.css) to this theme, per this project's own
 * stated rule: "theme owns look, plugins own function." This was the
 * worst instance of front-end CSS accumulating inside a plugin found
 * across the project: hardcoded hex colors (several with !important)
 * throughout, duplicating the real Style Guide palette by literal value
 * with no local token system at all -- meaning a future palette change
 * would never reach this file automatically.
 *
 * Content is otherwise UNCHANGED from the plugin's original file --
 * deliberately a pure relocation, not combined with rewriting the
 * hardcoded hex values into real theme --dwf-* token references, which
 * is a separate, riskier decision left for a future pass (same as the
 * equivalent deferred decisions already made for DWF Private Plugin's
 * and Category Toolkit's own migrated CSS).
 */
.dwfv-wrap {
    margin: 1.5rem 0;
}

.dwfv-form p {
    margin: 0 0 1rem;
}

.dwfv-form label {
    display: block;
    font-weight: 600;
    margin-bottom: 0.35rem;
}

.dwfv-help {
    display: block;
    margin: 0 0 0.35rem;
    opacity: 0.8;
}

.dwfv-form input[type="text"] {
    width: 100%;
    max-width: 720px;
}

.dwfv-button:focus,
.dwfv-form input[type="text"]:focus,
.dwfv-card a:focus {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

.dwfv-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1rem;
    margin: 1rem 0;
}

.dwfv-card,
.dwfv-notice,
.dwfv-module {
    border: 0;
    border-radius: 0;
    padding: 1rem 0;
    background: transparent;
}

.dwfv-notice {
    padding-left: 0;
}

.dwfv-card h3,
.dwfv-card h4,
.dwfv-card h5 {
    margin-top: 0;
    margin-bottom: 0.4rem;
}

.dwfv-card p,
.dwfv-module p {
    margin: 0 0 0.55rem;
}

.dwfv-muted,
.dwfv-attribution,
.dwfv-help {
    font-size: 0.92em;
}

.dwfv-link-list {
    margin: 0.75rem 0 0;
    padding-left: 1.25rem;
}

.dwfv-link-list li {
    margin: 0.25rem 0;
}

.dwfv-results h4 {
    margin-top: 1.5rem;
}


.dwfv-tool-card .dwfv-button,
.dwfv-button {
    display: inline-block;
    padding: 0.55rem 0.85rem;
    border: 1px solid currentColor;
    border-radius: 4px;
    text-decoration: none;
    line-height: 1.2;
}

.dwfv-notice p:last-child,
.dwfv-card p:last-child,
.dwfv-module p:last-child {
    margin-bottom: 0;
}

@media (max-width: 600px) {
    .dwfv-card-grid { grid-template-columns: 1fr; }
    .dwfv-card, .dwfv-notice, .dwfv-module { padding: 0.85rem; }
    .dwfv-form input[type="text"], .dwfv-button { width: 100%; box-sizing: border-box; }
}


.dwf-voting-state-tab__header {
    margin-bottom: 1rem;
}

.dwf-voting-state-tab__header h2 {
    margin-bottom: 0.35rem;
}

.dwfv-state-tab-card h3 {
    font-size: 1rem;
}

.dwfv-core-supplemental-links {
    margin-top: 1rem;
}


/* Restored product-quality voter lookup form: separate fields, same Google Civic lookup behavior. */
.dwfv-lookup-form {
    border: 0;
    border-radius: 0;
    padding: 0;
    background: transparent;
}
.dwfv-lookup-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(160px, .8fr) minmax(110px, .45fr) minmax(120px, .5fr);
    gap: .85rem;
    align-items: end;
    margin-top: .75rem;
}
.dwfv-lookup-grid p { margin: 0; }
.dwfv-lookup-grid input[type="text"] {
    width: 100%;
    max-width: none;
    min-height: 42px;
    border: 1px solid rgba(15, 23, 42, 0.22);
    border-radius: 6px;
    padding: .55rem .65rem;
    box-sizing: border-box;
}
.dwfv-form-actions { margin-top: 1rem; }
.dwfv-button {
    border-radius: 8px;
    font-weight: 700;
}
@media (max-width: 780px) {
    .dwfv-lookup-grid { grid-template-columns: 1fr 1fr; }
    .dwfv-field-street { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
    .dwfv-lookup-grid { grid-template-columns: 1fr; }
}

/* Full-width public lookup layout. */
.dwfv-voter-info,
.dwfv-voter-info .dwfv-lookup-form {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}
.dwfv-voter-info .dwfv-form-actions .dwfv-button {
    width: 100%;
    max-width: none;
    text-align: center;
    box-sizing: border-box;
}



/* GTG-aligned public heading rhythm. */
.dwfv-wrap h2,
.dwf-voting-state-tab__header h2 {
    font-size: clamp(2.15rem, 3.8vw, 3.75rem);
    line-height: 0.95;
    letter-spacing: -0.055em;
    font-weight: 800;
    margin: 0 0 1.25rem;
}
.dwfv-wrap h3,
.dwfv-section h3,
.dwfv-card h3 {
    font-size: clamp(1.45rem, 2.1vw, 2.1rem);
    line-height: 1.05;
    letter-spacing: -0.035em;
    font-weight: 800;
    margin: 0 0 0.75rem;
}
.dwfv-eyebrow {
    margin: 0 0 0.5rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-size: 0.78rem;
    font-weight: 800;
}

/* Two-line address lookup: fields on first line, action on second. */
.dwfv-lookup-form .dwfv-lookup-grid {
    grid-template-columns: minmax(0, 1.6fr) minmax(150px, 0.8fr) minmax(90px, 0.4fr) minmax(110px, 0.45fr);
    margin-top: 0;
}
.dwfv-lookup-form .dwfv-form-actions {
    margin: 0.85rem 0 0;
}
.dwfv-lookup-form .dwfv-form-actions .dwfv-button {
    display: block;
    width: 100%;
}

/* Core state-page Voting & Elections tab - approved GTG/Executive-style layout. */
/* 8/15/26: real fix, per direct report -- removed the self-imposed
   max-width: 1120px cap here. The rest of the state page (the Federal
   Delegation box, Quick Facts cards, Official Links) all fill the page's
   real available content width; this section was capping itself well
   short of that on its own, for no documented reason. The parent
   container already controls the actual page width -- this section
   should simply fill whatever space it's given, same as every other
   section on the page. */
.dwfv-state-tab {
    width: 100%;
    padding: 36px 24px 56px;
    background: #fff;
    color: #171717;
    line-height: 1.42;
}
.dwfv-state-tab a {
    color: #a6422b;
    text-decoration: none;
}
.dwfv-state-tab a:hover,
.dwfv-state-tab a:focus {
    text-decoration: underline;
    text-underline-offset: .18em;
    text-decoration-thickness: .08em;
}
.dwfv-state-tab p,
.dwfv-state-tab h2,
.dwfv-state-tab h3 {
    margin: 0;
}
.dwfv-state-tab-eyebrow {
    margin: 0 0 8px;
    text-transform: uppercase;
    letter-spacing: .18em;
    font-size: .78rem;
    font-weight: 900;
    color: #8b2236;
}
/* 8/15/26: real layout fix, per a direct rough mockup -- guide copy now
   sits in a two-column top row alongside the election card, instead of
   spanning full width above the whole tab shell. */
.dwfv-state-tab-election-info-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 40px;
    align-items: start;
    margin: 0 0 32px;
}
.dwfv-state-tab-guide-copy {
    padding-top: 4px;
    min-width: 0;
}
.dwfv-state-tab-guide-copy p:not(.dwfv-state-tab-eyebrow) {
    font-size: 1.16rem;
    line-height: 1.48;
    color: #514d47;
}
/* 8/15/26: real fix, per direct report -- rebuilt on the real, documented
   Style Guide "Side-tab switcher" component (.side-tabset/.side-nav/
   .side-panels, see Content & Style Guide Part 4-5), replacing the old
   custom JS-driven data-dwfv-state-tab-section version. This is a pure
   CSS radio-input + label switch -- no JavaScript involved in switching
   tabs at all, which is exactly the property the Style Guide calls out
   ("keeps working even if a page's scripts fail to load"). Uses the
   project's real --ink/--soft custom properties with the Style Guide's
   own :root fallback values, in case the active theme hasn't defined them
   yet. .dwfv-state-tab-shell is kept as an additional class alongside
   .side-tabset purely for this plugin's own grid-layout rule below --
   the show/hide behavior itself belongs entirely to the .side-tabset/
   .side-panel selectors, matching the guide exactly. */
.side-tabset.dwfv-state-tab-shell {
    display: grid;
    grid-template-columns: minmax(190px, 240px) minmax(0, 1fr);
    gap: clamp(24px, 4vw, 50px);
    align-items: start;
}
.side-tabset input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.side-nav {
    display: flex;
    flex-direction: column;
}
.side-nav label {
    display: block;
    width: 100%;
    padding: 13px 14px 13px 16px;
    border-bottom: 1px solid var(--rule, #ddd7cf);
    border-left: 3px solid transparent;
    color: var(--muted, #55514d);
    font: inherit;
    font-size: 14px;
    font-weight: 900;
    line-height: 1.15;
    text-align: left;
    cursor: pointer;
}
/* 8/15/26: real architectural fix, per direct report -- confirmed via a
   full local server restart on a never-before-visited page that "blank on
   load" is real, not a caching artifact. Traced this as far as static code
   review can go: pulled a completely fresh clone straight from GitHub and
   confirmed the committed PHP correctly emits checked on the first radio
   -- the bug is real but its exact cause (something between that correct
   PHP output and what the browser receives) couldn't be pinned down.
   Rather than keep guessing at an unconfirmed cause, this switches from
   "default hidden, :checked reveals" to "default VISIBLE, :checked on the
   OTHER radio hides" -- Election Info now shows correctly regardless of
   whether the first radio's checked state ever reaches the browser
   correctly, since this no longer depends on it at all. Only depends on
   the Voting Resources radio's checked state, which is confirmed working
   (clicking a tab already switches content correctly) -- an unrelated
   input actually toggling is a much simpler thing to depend on than a
   specific attribute surviving all the way from PHP to first paint.
   Nav label active state follows the same default-active/override-away
   pattern for the identical reason. */
.side-nav label[for="dwfv-voting-tab-election-info"] {
    color: var(--ink, #171717);
    border-left-color: var(--ink, #171717);
    background: #fff;
}
#dwfv-voting-tab-voting-resources:checked ~ .side-nav label[for="dwfv-voting-tab-election-info"] {
    color: var(--muted, #55514d);
    border-left-color: transparent;
    background: transparent;
}
#dwfv-voting-tab-voting-resources:checked ~ .side-nav label[for="dwfv-voting-tab-voting-resources"] {
    color: var(--ink, #171717);
    border-left-color: var(--ink, #171717);
    background: #fff;
}
.side-panels {
    position: relative;
    min-width: 0;
}
.side-panel {
    display: none;
}
.side-panel-election-info {
    display: block;
}
#dwfv-voting-tab-voting-resources:checked ~ .side-panels .side-panel-election-info {
    display: none;
}
#dwfv-voting-tab-voting-resources:checked ~ .side-panels .side-panel-voting-resources {
    display: block;
}
/* 8/15/26: real layout fix, per direct request -- the election card is
   now a full-width band at the top of the Election Info panel, and the
   lookup form fills the tab's full content width below it, instead of
   the two sharing a narrow side-by-side row. */
/* 8/15/26: real layout fix, per a direct rough mockup -- back to a
   compact vertical card in the narrower right column (paired with guide
   copy above), not a full-width horizontal banner. */
.dwfv-state-tab-election-card {
    background: var(--soft, #f4f1ec);
    border: 0;
    padding: 24px 28px;
    min-width: 0;
}
.dwfv-state-tab-election-card__label {
    margin: 0 0 14px;
    text-transform: uppercase;
    letter-spacing: .16em;
    font-size: .76rem;
    font-weight: 900;
    color: #514d47;
}
.dwfv-state-tab-election-card__body {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    margin: 0 0 22px;
}
/* 8/13/26: renamed and corrected to match the real, canonical Style Guide
   .date-tile component exactly (was its own bespoke dwfv-state-tab-date-tile
   with slightly different markup and no border/radius treatment) -- per the
   standing instruction that plugins should follow the Style Guide, not
   maintain a near-duplicate of an existing documented component. Border and
   radius added to genuinely match the guide's spec, not just the class
   names; top corners intentionally square, bottom rounded, per the guide's
   own 8/13 correction. */
.date-tile {
    display: inline-grid;
    grid-template-rows: auto 1fr;
    width: 56px;
    background: #fff;
    border: 1px solid #ded8cf;
    border-radius: 0 0 6px 6px;
    overflow: hidden;
    text-align: center;
    line-height: 1;
    flex-shrink: 0;
}
.date-tile .month {
    display: block;
    background: #1e5c38;
    color: #fff;
    padding: 5px 0 4px;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .72rem;
    font-weight: 900;
}
.date-tile .day {
    display: block;
    padding: 7px 0 9px;
    font-size: 2rem;
    font-weight: 900;
    color: #171717;
}
.dwfv-state-tab-election-card__date-title {
    margin: 2px 0 0;
    text-transform: uppercase;
    letter-spacing: .12em;
    font-size: .74rem;
    font-weight: 900;
    color: #a6422b;
}
.dwfv-state-tab-election-card__date {
    margin: 7px 0 0;
    color: #514d47;
    font-size: 1rem;
    line-height: 1.25;
}
.dwfv-state-tab-election-card__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.dwfv-state-tab-button {
    display: block;
    text-align: center;
    padding: 12px 20px;
    background: #a6422b;
    color: #fff !important;
    text-decoration: none !important;
    text-transform: uppercase;
    letter-spacing: .095em;
    font-size: .78rem;
    font-weight: 900;
    white-space: nowrap;
}
.dwfv-state-tab-button--secondary {
    background: #16233b;
}
.dwfv-state-tab-resource-section {
    padding: 0 0 44px;
    margin: 0 0 14px;
}
.dwfv-state-tab-resource-block {
    min-width: 0;
}
.dwfv-state-tab-resource-head {
    display: grid;
    grid-template-columns: 82px 1fr;
    gap: 16px;
    align-items: start;
    margin-bottom: 10px;
}
.dwfv-state-tab-resource-icon {
    width: 78px;
    height: 78px;
    color: #8b2236;
    opacity: .8;
}
.dwfv-state-tab-resource-icon svg {
    display: block;
    width: 78px;
    height: 78px;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
}
/* 8/15/26: the merged single-section layout replacing the old two-column
   Voting Tools / [State] Links grid -- just a plain block, no grid needed
   for one item. The bundled ballot-icon.png (a real raster image, not an
   inline SVG like the two icons it replaces) gets its own sizing rule
   since the existing svg rule above doesn't target img elements. */
.dwfv-state-tab-resource-single {
    max-width: 720px;
}
.dwfv-state-tab-resource-icon img {
    display: block;
    width: 78px;
    height: 78px;
    object-fit: contain;
}
.dwfv-state-tab-resource-head h2 {
    margin: 0 0 7px;
    text-transform: uppercase;
    letter-spacing: .18em;
    font-size: 18px;
    line-height: 1.1;
    font-weight: 900;
    color: #8b2236;
}
.dwfv-state-tab-resource-head p {
    font-size: 16px;
    line-height: 1.52;
    color: #514d47;
    max-width: 620px;
    margin: 0;
}
.dwfv-state-tab-list {
    border-top: 1px solid #ded8cf;
    margin-top: 18px;
}
.dwfv-state-tab-list a {
    display: grid;
    grid-template-columns: 8px 1fr;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid #ded8cf;
    font-size: 14px;
    font-weight: 900;
    line-height: 1.25;
    color: #a6422b;
}
.dwfv-state-tab-list a::before {
    content: "•";
    color: #8b2236;
    font-size: 15px;
    line-height: 1;
    margin-top: 1px;
}
/* 8/15/26: real layout fix, per direct request -- the "Where Do You
   Vote?" intro copy now spans the full tab width, with the lookup form
   as its own full-width section below it, instead of the copy sitting
   in a narrow left column beside the form. */
.dwfv-state-tab-lookup {
    margin-top: 18px;
}
.dwfv-state-tab-lookup__copy {
    margin: 0 0 24px;
}
.dwfv-state-tab-lookup__copy h3 {
    margin: 0;
    color: #171717;
    font-size: clamp(1.6rem, 2.6vw, 2.4rem);
    font-weight: 900;
    letter-spacing: -.04em;
    line-height: 1.05;
}
.dwfv-state-tab-lookup__copy p:not(.dwfv-state-tab-eyebrow) {
    margin-top: 10px;
    color: #514d47;
}
/* 8/15/26: real fix, per direct report -- this used to be a bespoke
   custom layout (border:0, no radius) that never matched the real,
   documented Style Guide "Lookup form" component. Now the actual
   .lookup-form/.lookup-form--plain/.field-grid/.row-3/.form-actions
   classes and CSS, using the project's real --rule/--muted/--ink custom
   properties with the guide's own fallback values in case the active
   theme hasn't defined them (same pattern already used for the side-tabs
   component). White background + 1px border + 10px radius, matching
   what Eric expected -- not the theme overriding anything, the plugin's
   own CSS simply never implemented the real component before now. */
.lookup-form {
    border: 1px solid var(--rule, #ddd7cf);
    border-radius: 10px;
    padding: 24px 26px;
    background: var(--soft, #f4f1ec);
    max-width: 480px;
}
.lookup-form.lookup-form--plain {
    background: #fff;
    max-width: none;
}
.lookup-form .field-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-bottom: 12px;
}
.lookup-form .field-grid .row-3 {
    display: grid;
    grid-template-columns: 1fr 90px 110px;
    gap: 10px;
}
.lookup-form label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--muted, #55514d);
    margin-bottom: 5px;
}
.lookup-form input[type="text"] {
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--rule, #ddd7cf);
    border-radius: 6px;
    font-size: 14px;
    font-family: inherit;
    box-sizing: border-box;
}
.lookup-form .form-actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 14px;
}
.lookup-form button {
    padding: 11px 20px;
    border: 0;
    border-radius: 6px;
    background: var(--ink, #171717);
    color: #fff;
    font-size: 13.5px;
    font-weight: 700;
    cursor: pointer;
}
.lookup-form button:hover {
    opacity: .85;
}
.dwfv-state-tab-note {
    margin: 12px 0 0;
    color: #514d47;
    font-style: italic;
}
@media (max-width: 1100px) {
    .dwfv-state-tab-shell,
    .dwfv-state-tab-election-info-top {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 640px) {
    .dwfv-state-tab {
        padding: 28px 18px 42px;
    }
    .dwfv-state-tab-resource-head {
        grid-template-columns: 56px 1fr;
    }
    .dwfv-state-tab-resource-icon,
    .dwfv-state-tab-resource-icon svg {
        width: 52px;
        height: 52px;
    }
    .lookup-form .row-3 {
        grid-template-columns: 1fr;
    }
}

/* GTG title/deck styling for Voting Toolkit generated pages. */
.dwfgt-page {
  --dwfgt-ink: #141414;
  --dwfgt-muted: #55514d;
  --dwfgt-rust: #8b2236;
  --dwfgt-rule: #ddd7cf;
  color: var(--dwfgt-ink);
}
.dwfgt-page .dwfgt-page-header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 0.72fr);
  gap: clamp(28px, 5vw, 76px);
  align-items: center;
  padding: clamp(34px, 6vw, 76px) 0 clamp(24px, 4vw, 54px);
}
.dwfgt-page.dwfgt-page--no-logo .dwfgt-page-header,
.dwfgt-page .dwfgt-page-header--no-logo {
  grid-template-columns: minmax(0, 1fr);
  max-width: 880px;
}
.dwfgt-page .dwfgt-logo-title {
  margin: 0 0 16px;
  color: var(--dwfgt-rust);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(44px, 6vw, 76px);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -0.055em;
  line-height: 0.92;
  text-transform: none;
}
.dwfgt-page .dwfgt-page-deck {
  max-width: 760px;
  margin: 0;
  color: var(--dwfgt-ink);
  font-family: Arial, Helvetica, sans-serif;
  font-size: clamp(19px, 2.1vw, 26px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.05;
}
.dwfgt-page .dwfgt-page-intro {
  max-width: 760px;
  margin: 10px 0 0;
  color: var(--dwfgt-muted);
  font-family: Arial, Helvetica, sans-serif;
  font-size: 15px;
  line-height: 1.45;
}
.dwfgt-page.dwfgt-page--no-logo .dwfgt-logo-icon,
.dwfgt-page .dwfgt-page-header--no-logo .dwfgt-logo-icon,
.dwfgt-page.dwfgt-page--no-logo .dwfgt-page-header__icon,
.dwfgt-page .dwfgt-page-header--no-logo .dwfgt-page-header__icon {
  display: none !important;
}
/* Voting pages now rely on the theme's single page title; generated body headers only provide deck text. */
@media (max-width: 760px) {
  .dwfgt-page .dwfgt-page-header {
    grid-template-columns: 1fr;
    gap: 22px;
  }
  .dwfgt-page .dwfgt-logo-title {
    font-size: clamp(38px, 13vw, 58px);
  }
}

/* Voting Toolkit standalone starter-page polish. */
.dwfv-starter-page__body > p:first-child {
  margin-top: 0;
}
.dwfv-starter-page__body .dwfv-muted em,
.dwfv-starter-page__body > p:last-child em {
  color: #55514d;
}

/* Public lookup form: street address on first line, city/state/ZIP on second, action below. */
.dwfv-lookup-form .dwfv-lookup-grid {
  grid-template-columns: minmax(0, 1.35fr) minmax(100px, 0.42fr) minmax(120px, 0.52fr);
  gap: 0.85rem;
}
.dwfv-lookup-form .dwfv-field-street {
  grid-column: 1 / -1;
}
@media (max-width: 760px) {
  .dwfv-lookup-form .dwfv-lookup-grid {
    grid-template-columns: 1fr;
  }
}

/* Keep large Google Civic location results useful without overwhelming the page. */
.dwfv-location-section .dwfv-card-grid {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.25rem 1.5rem;
}
.dwfv-location-card {
  font-size: 0.94rem;
}

/* 0.5.30 content-enrichment helpers */
.dwfv-guide-block {
  margin: 1.75rem 0;
  max-width: 920px;
}
.dwfv-guide-block h2,
.dwfv-guide-block h3 {
  margin: 0 0 .75rem;
}
.dwfv-guide-block p {
  margin: 0 0 .85rem;
}
.dwfv-guide-block ul {
  margin: .75rem 0 0 1.25rem;
}
.dwfv-action-link {
  margin: 1rem 0;
}
.dwfv-state-resource-finder {
  margin: 1.5rem 0;
}
.dwfv-state-finder-form {
  margin: 1rem 0 1.5rem;
  max-width: 720px;
}
.dwfv-state-finder-form label {
  display: block;
  font-weight: 800;
  margin: 0 0 .45rem;
}
.dwfv-state-finder-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .7rem;
  align-items: stretch;
}
.dwfv-state-finder-row select {
  width: 100%;
  min-height: 42px;
  padding: .45rem .6rem;
  border: 1px solid rgba(0,0,0,.18);
  background: #fff;
  font: inherit;
}
.dwfv-state-finder-help {
  padding: 1rem 0;
}
@media (max-width: 640px) {
  .dwfv-state-finder-row {
    grid-template-columns: 1fr;
  }
}


/* 0.5.45: in-tab resource panels and AJAX polling-place lookup. */
/* 8/15/26: updated to match the new full-width election-card banner
   layout (see the base .dwfv-state-tab-election-card rule above) instead
   of forcing back to the old narrow-sidebar borderless/stacked version --
   these stay !important since they exist specifically to resist theme
   CSS bleed-through already confirmed via cross-theme testing, same
   justification as when they were first added, just updated target
   values for the new design. */
.dwfv-state-tab-guide-copy p:not(.dwfv-state-tab-eyebrow){max-width:none!important;}
.dwfv-state-tab-election-card{border:0!important;border-radius:0!important;background:var(--soft, #f4f1ec)!important;box-shadow:none!important;}
.dwfv-state-tab-election-card__actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;margin-top:0!important;}
.dwfv-state-tab-button{border:0!important;cursor:pointer!important;font:inherit!important;font-size:.78rem!important;line-height:1.1!important;display:block!important;text-align:center!important;text-decoration:none!important;box-sizing:border-box!important;}
.dwfv-state-tab-panel[hidden]{display:none!important;}
.dwfv-state-tab-panel.is-active{display:block!important;}
.dwfv-state-tab-resource-section{padding-bottom:0!important;}
.dwfv-state-tab-resource-single{max-width:none!important;}
.dwfv-state-tab-resource-icon img{width:78px!important;height:78px!important;object-fit:contain!important;}
.dwfv-state-tab-list{border-top:0!important;margin-top:18px!important;}
.dwfv-state-tab-list a,.dwfv-state-tab-list button{display:grid!important;grid-template-columns:8px minmax(0,1fr) auto!important;gap:10px!important;width:100%!important;border:0!important;border-bottom:1px solid #ded8cf!important;background:transparent!important;padding:10px 0!important;color:#a6422b!important;font:inherit!important;font-size:14px!important;font-weight:900!important;line-height:1.25!important;text-align:left!important;text-decoration:none!important;cursor:pointer!important;}
.dwfv-state-tab-list a::before,.dwfv-state-tab-list button::before{content:"•";color:#8b2236;font-size:15px;line-height:1;margin-top:1px;}
.dwfv-state-tab-list a::after,.dwfv-state-tab-list button::after{content:"→";color:#a6422b;font-weight:900;}
.dwfv-state-tab-panel-grid{display:grid;grid-template-columns:minmax(190px,240px) minmax(0,1fr);gap:clamp(24px,4vw,50px);align-items:start;}
.dwfv-state-tab-subnav button{display:block;width:100%;border:0;border-bottom:1px solid #ded8cf;background:transparent;padding:14px 0;color:#171717;font:inherit;font-size:15px;font-weight:900;line-height:1.15;text-align:left;cursor:pointer;}
.dwfv-state-tab-subnav button.is-active,.dwfv-state-tab-subnav button:hover{color:#8b2236;}
.dwfv-state-tab-tool-content h2{margin:0 0 12px!important;color:#171717!important;font-size:clamp(28px,3.4vw,44px)!important;font-weight:900!important;line-height:1.02!important;letter-spacing:-.045em!important;text-transform:none!important;}
.dwfv-state-tab-lead{max-width:760px;margin:0 0 24px!important;color:#514d47!important;font-size:17px!important;line-height:1.55!important;}
.dwfv-state-tab-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin-top:20px;}
.dwfv-state-tab-action-card{display:block;border-top:3px solid #16233b;padding:15px 0 0;text-decoration:none!important;color:#171717!important;}
.dwfv-state-tab-action-card strong{display:block;margin-bottom:8px;color:#a6422b;font-size:15px;line-height:1.15;font-weight:900;}
.dwfv-state-tab-action-card span{display:block;color:#514d47;font-size:14px;line-height:1.45;}
/* 8/15/26: updated again for the full-width stacked layout -- the lookup
   section is back to a plain block stack (copy full width, form full
   width below it), not a grid at all, so this forces block display now
   instead of grid, to keep fighting whatever theme conflict originally
   required a display override here at all. */
.dwfv-state-tab-lookup{display:block!important;}
.dwfv-state-tab-lookup__copy p:not(.dwfv-state-tab-eyebrow){max-width:none!important;width:100%!important;}
.dwfv-state-tab-lookup-results{margin-top:24px;}
.dwfv-notice,.dwfv-state-tab-lookup-results .dwfv-notice{background:#f6f3ef;padding:14px 16px;color:#514d47;}
@media(max-width:900px){.dwfv-state-tab-shell,.dwfv-state-tab-election-info-top,.dwfv-state-tab-panel-grid,.dwfv-state-tab-action-grid{grid-template-columns:1fr!important;}}
