.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. */
.dwfv-state-tab {
    max-width: 1120px;
    margin: 0 auto;
    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;
}
.dwfv-state-tab-top-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 64px;
    align-items: start;
    margin: 0 0 56px;
}
.dwfv-state-tab-guide-copy {
    max-width: 680px;
    padding-top: 4px;
}
.dwfv-state-tab-guide-copy p:not(.dwfv-state-tab-eyebrow) {
    font-size: 1.16rem;
    line-height: 1.48;
    color: #514d47;
    max-width: 650px;
}
.dwfv-state-tab-election-card {
    background: #fff;
    border: 0;
    padding: 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;
}
.dwfv-state-tab-date-tile {
    width: 56px;
    background: #fff;
    text-align: center;
    line-height: 1;
    border: 0;
}
.dwfv-state-tab-date-tile span {
    display: block;
    background: #1e5c38;
    color: #fff;
    padding: 5px 0 4px;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .72rem;
    font-weight: 900;
}
.dwfv-state-tab-date-tile strong {
    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;
    gap: 10px;
    margin-top: 22px;
}
.dwfv-state-tab-button {
    display: block;
    text-align: center;
    padding: 12px 14px;
    background: #a6422b;
    color: #fff !important;
    text-decoration: none !important;
    text-transform: uppercase;
    letter-spacing: .095em;
    font-size: .78rem;
    font-weight: 900;
}
.dwfv-state-tab-button--secondary {
    background: #16233b;
}
.dwfv-state-tab-resource-section {
    padding: 0 0 44px;
    margin: 0 0 14px;
}
.dwfv-state-tab-resource-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 70px;
    align-items: start;
}
.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;
}
.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;
}
.dwfv-state-tab-lookup {
    display: grid;
    grid-template-columns: 76px minmax(240px, 330px) minmax(0, 1fr);
    gap: 24px;
    align-items: start;
    background: #fff;
    border: 0;
    padding: 28px 0 30px;
    margin-top: 18px;
}
.dwfv-state-tab-lookup__copy h3 {
    margin: 0;
    color: #171717;
    font-size: clamp(2rem, 3.3vw, 3.45rem);
    font-weight: 900;
    letter-spacing: -.06em;
    line-height: .96;
}
.dwfv-state-tab-lookup__copy p:not(.dwfv-state-tab-eyebrow) {
    margin-top: 10px;
    max-width: 280px;
    color: #514d47;
}
.dwfv-state-tab-lookup-form {
    display: grid;
    gap: 11px;
    align-self: center;
}
.dwfv-state-tab-lookup-form label {
    display: grid;
    gap: 5px;
    font-size: .74rem;
    font-weight: 900;
    color: #171717;
}
.dwfv-state-tab-lookup-form input {
    width: 100%;
    min-height: 40px;
    border: 0;
    background: #f6f3ef;
    padding: 9px 10px;
    font: inherit;
    color: #171717;
}
.dwfv-state-tab-form-line {
    display: grid;
    gap: 10px;
}
.dwfv-state-tab-form-line--address {
    grid-template-columns: 1fr;
}
.dwfv-state-tab-form-line--details {
    grid-template-columns: 1.35fr .55fr .7fr;
}
.dwfv-state-tab-lookup-form button {
    width: 100%;
    min-height: 42px;
    border: 0;
    background: #a6422b;
    color: #fff;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .78rem;
    font-weight: 900;
    cursor: pointer;
}
.dwfv-state-tab-note {
    margin: 12px 0 0;
    color: #514d47;
    font-style: italic;
}
@media (max-width: 1100px) {
    .dwfv-state-tab-top-row,
    .dwfv-state-tab-resource-grid,
    .dwfv-state-tab-lookup {
        grid-template-columns: 1fr;
    }
    .dwfv-state-tab-election-card {
        max-width: 430px;
    }
}
@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;
    }
    .dwfv-state-tab-form-line--details {
        grid-template-columns: 1fr;
    }
    .dwfv-state-tab-lookup {
        padding: 24px 0 26px;
    }
}

/* 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. */
.dwfv-state-tab-top-row{grid-template-columns:minmax(0,1fr) minmax(260px,340px)!important;gap:clamp(24px,4vw,54px)!important;align-items:start!important;}
.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;padding:0!important;background:#fff!important;box-shadow:none!important;}
.dwfv-state-tab-election-card__actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important;margin-top:18px!important;}
.dwfv-state-tab-button{border:0!important;width:100%!important;cursor:pointer!important;font:inherit!important;font-size:.78rem!important;line-height:1.1!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-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:clamp(28px,5vw,70px)!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;}
.dwfv-state-tab-lookup{display:block!important;padding:0!important;margin:0!important;}
.dwfv-state-tab-lookup .dwfv-state-tab-date-tile{display:none!important;}
.dwfv-state-tab-lookup__copy p:not(.dwfv-state-tab-eyebrow){max-width:none!important;width:100%!important;}
.dwfv-state-tab-lookup-form{max-width:none!important;width:100%!important;margin-top:18px!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-top-row,.dwfv-state-tab-resource-grid,.dwfv-state-tab-panel-grid,.dwfv-state-tab-action-grid{grid-template-columns:1fr!important;}.dwfv-state-tab-election-card{max-width:none!important;}}
