/* Tools page only; the shared navigation, footer, and membership flow stay shared. */
body.tools-page { color:#242d40; background:#fff; font:400 17px/1.65 'Montserrat',sans-serif; }
.tools-page main *, .tools-page main *::before, .tools-page main *::after { box-sizing:border-box; }
.tools-page main :is(h1,h2,h3,p,ul) { margin:0; }
.tools-page main :is(h1,h2,h3) { text-transform:none; color:#242d40; }
.tools-page main h2 { font:650 27px/1.3 'Montserrat',sans-serif; letter-spacing:-.035em; }
.tools-page main h3 { font:600 21px/1.4 'Montserrat',sans-serif; letter-spacing:-.02em; }
.tools-page main a { color:#33498e; text-underline-offset:4px; overflow-wrap:anywhere; }
.tools-page main strong { color:inherit; font:inherit; font-weight:650; }
.tools-page :is(button,input) { font:inherit; }
.tools-page :is(a,button,input):focus-visible { outline:3px solid #b02632; outline-offset:4px; }
.tools-page [hidden] { display:none !important; }
.tools-page .nav { min-height:105px; line-height:normal; }
.tools-page .logo img { display:block; }
.tools-page .nav-links { align-items:center; }
.tools-page .hamburger { border:0; background:#fff; padding:7px; }
.tools-page .mobile-menu { position:static; padding:10px 0; border-bottom:1px solid #dfe4ec; }
.tools-page .skip-link { position:absolute; left:12px; top:-100px; z-index:1001; padding:10px 16px; background:#fff; color:#33498e; }
.tools-page .skip-link:focus { top:10px; }
.tools-page .foot-topper { display:block; height:auto; }
.tools-page .footer-column { box-sizing:border-box; }
.tools-page footer { line-height:normal; }
.tools-hero { position:relative; height:260px; overflow:hidden; }
.tools-hero > img { display:block; width:100%; height:100%; object-fit:cover; object-position:center 48%; }
.tools-hero-copy { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px; background:rgba(15,24,44,.58); text-align:center; }
.tools-page .tools-hero h1 { color:#fff; font:650 48px/1.15 'Montserrat',sans-serif; letter-spacing:-.04em; }
.tools-page .tools-hero p { color:#fff; font-size:17px; margin-top:14px; }
.tools-content { width:calc(100% - 80px); max-width:1040px; margin:0 auto; padding:40px 0 48px; }
.tools-intro { color:#5a6373; margin-top:10px !important; max-width:75ch; }
.official-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; align-items:start; margin-top:22px; }
.official-card { min-width:0; border:1px solid #dce2ec; border-top:3px solid #33498e; border-radius:8px; padding:22px; background:#fff; overflow-wrap:anywhere; }
.office-label { color:#5a6373; font-size:13px; font-weight:550; }
.tools-page .official-card h3 { margin-top:7px; margin-bottom:13px; }
.office-term { font-size:12px; color:#5a6373; margin-bottom:12px !important; }
.official-card > a { display:inline-block; font-size:14px; min-height:34px; }
.source-note { font-size:11px; line-height:1.7; color:#626b7c; margin-top:14px !important; }
.statewide-status { color:#626b7c; font-size:12px; margin-top:12px !important; }
.lookup-section { margin-top:40px; border:1px solid #dce2ec; border-radius:12px; background:#f3f6fb; padding:30px; }
.lookup-form { margin-top:22px; }
.address-fields { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) 130px; gap:16px; }
.address-fields label { display:block; color:#242d40; font-size:13px; font-weight:600; margin-bottom:6px; }
.address-fields label span { font-weight:400; }
.address-fields input { display:block; width:100%; min-width:0; min-height:46px; border:1px solid #8795ae; border-radius:5px; padding:9px 11px; background:#fff; color:#242d40; font-size:16px; }
.state-coverage { font-size:13px; color:#5a6373; margin-top:12px !important; }
.lookup-privacy { font-size:12px; color:#4c5669; max-width:80ch; margin-top:15px !important; }
.lookup-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px 22px; margin-top:18px; }
.lookup-primary, .lookup-cancel, .lookup-retry, .candidate-button { min-height:46px; border:1px solid #33498e; border-radius:5px; padding:10px 18px; cursor:pointer; font-size:14px !important; font-weight:600 !important; }
.lookup-primary { background:#33498e; color:#fff; }
.lookup-primary:hover { background:#263a78; }
.lookup-primary:disabled { opacity:.65; cursor:wait; }
.lookup-cancel, .lookup-retry, .candidate-button { background:#fff; color:#33498e; }
.lookup-fallback { font-size:12px; margin-top:18px !important; }
.lookup-status { color:#33498e; font-size:14px; margin-top:20px !important; }
.lookup-status:empty { display:none; }
.lookup-status[data-error="true"] { color:#9b3036; }
.lookup-results:not(:empty) { margin-top:22px; }
.matched-address { font-size:15px; font-weight:600; }
.matched-address span { display:block; font-weight:400; font-size:12px; color:#626b7c; }
.district-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:16px; align-items:start; }
.district-grid .official-card { padding:20px; }
.candidate-list { list-style:none; padding:0; margin-top:15px !important; display:grid; gap:10px; }
.candidate-button { width:100%; text-align:left; }
.lookup-warning { font-size:12px; color:#7b4930; margin-top:12px !important; }
.scorecard-feature { margin-top:40px; padding:28px 30px; background:#33498e; border-radius:10px; color:#fff; }
.tools-page .scorecard-feature h2 { color:#fff; }
.scorecard-feature p { margin-top:10px !important; max-width:72ch; font-size:15px; }
.tools-page .scorecard-feature a { display:inline-block; color:#fff; margin-top:14px; font-size:14px; min-height:36px; font-weight:600; }
.resource-section { margin-top:40px; }
.resource-list { list-style:none; padding:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:20px !important; }
.resource-list article { border-top:1px solid #dce2ec; padding-top:20px; }
.resource-list article > div { font-size:14px; margin-top:10px; }
.resource-list article > a { display:inline-block; font-size:14px; margin-top:12px; }
.tools-page .visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
@media(min-width:1024px) { .tools-page .mobile-menu { display:none; } }
@media(max-width:800px) {
  .tools-content { width:calc(100% - 40px); padding-top:28px; }
  .address-fields { grid-template-columns:minmax(0,1fr) 130px; }
  .street-field { grid-column:1 / -1; }
  .district-grid { grid-template-columns:1fr; }
  .official-card { padding:18px; }
  .tools-page .official-card h3 { font-size:19px; }
  .tools-hero { height:230px; }
  .tools-page .tools-hero h1 { font-size:40px; }
  .tools-page .footer-column { padding:30px; }
}
@media(max-width:540px) {
  .tools-hero { height:210px; }
  .tools-page .tools-hero h1 { font-size:34px; }
  .tools-page .tools-hero p { font-size:15px; max-width:27ch; }
  .tools-page main h2 { font-size:24px; }
  .official-grid { grid-template-columns:1fr; gap:12px; }
  .official-card { padding:20px; }
  .lookup-section { margin-top:30px; padding:22px 18px; }
  .address-fields { grid-template-columns:minmax(0,1fr) 100px; gap:12px; }
  .lookup-primary { width:100%; }
  .scorecard-feature { padding:25px 22px; margin-top:30px; }
  .resource-list { grid-template-columns:1fr; }
  .tools-page .footer-column { flex-basis:100%; }
}
