/* Filtros da listagem de candidatos */
.candidate-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;background:#fff;border:1px solid var(--site-border);border-radius:var(--site-radius);padding:16px 18px;margin-bottom:20px;box-shadow:var(--site-shadow-sm)}
.candidate-filters label{display:grid;gap:5px;font-size:12px;font-weight:600;color:var(--site-text-muted);flex:1 1 160px;min-width:0}
.candidate-filters input,.candidate-filters select{height:38px;border:1px solid var(--site-border);border-radius:6px;padding:0 10px;font-size:13px;color:var(--site-text);background:#fff}
.candidate-filters-submit{flex:0 0 auto;height:38px;padding:0 20px;border:0;border-radius:6px;background:var(--site-primary);color:#fff;font-size:13px;font-weight:700;cursor:pointer}

/* Grade de candidatos */
.candidate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-top:4px}
.candidate-card{background:#fff;border:1px solid var(--site-border);border-radius:var(--site-radius);overflow:hidden;transition:var(--site-transition)}
.candidate-card:hover{box-shadow:var(--site-shadow-sm);transform:translateY(-2px)}
.candidate-card a{display:block;color:inherit;text-decoration:none}
.candidate-card-photo{position:relative;aspect-ratio:3/4;background:#eef1f5;display:flex;align-items:center;justify-content:center}
.candidate-card-photo img{width:100%;height:100%;object-fit:cover}
.candidate-card-photo-placeholder{font-size:40px;font-weight:800;color:#aab3c0}
.candidate-card-number{position:absolute;left:8px;bottom:8px;background:#111827cc;color:#fff;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px}
.candidate-card-body{display:grid;gap:3px;padding:10px 12px 12px}
.candidate-card-name{font-size:14px;font-weight:700;color:var(--site-text);line-height:1.25}
.candidate-card-office,.candidate-card-party,.candidate-card-situation{font-size:11.5px;color:var(--site-text-muted)}
.candidate-card-link{margin-top:6px;font-size:12px;font-weight:700;color:var(--site-primary)}

/* Nota de fonte */
.candidate-source-note{margin-top:18px;font-size:11px;color:var(--site-text-muted)}
.candidate-source-note a{color:var(--site-primary);font-weight:600}

/* Perfil do candidato */
.candidate-profile{max-width:860px;margin:20px auto 0;background:#fff;border:1px solid var(--site-border);border-radius:var(--site-radius);padding:24px 28px;box-shadow:var(--site-shadow-sm)}
.candidate-profile-header{display:flex;gap:20px;align-items:flex-start;margin-top:16px}
.candidate-profile-photo{flex:0 0 140px;width:140px;aspect-ratio:3/4;border-radius:10px;overflow:hidden;background:#eef1f5;display:flex;align-items:center;justify-content:center}
.candidate-profile-photo img{width:100%;height:100%;object-fit:cover}
.candidate-profile-photo-placeholder{font-size:56px;font-weight:800;color:#aab3c0}
.candidate-profile-info{min-width:0}
.candidate-profile-number{display:inline-block;font-size:12px;font-weight:700;color:var(--site-primary);margin-bottom:4px}
.candidate-profile-info h1{font-size:26px;font-weight:800;color:var(--site-text);margin:0 0 4px;line-height:1.2}
.candidate-profile-fullname{font-size:13px;color:var(--site-text-muted);margin:0 0 10px}
.candidate-profile-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.candidate-tag{display:inline-flex;align-items:center;padding:4px 12px;background:#f8fafc;border:1px solid var(--site-border);border-radius:20px;font-size:12px;font-weight:600;color:#475569}
.candidate-tag--situation{background:var(--site-primary);border-color:var(--site-primary);color:#fff}
.candidate-profile-details{margin-top:24px;border-top:1px solid var(--site-border);padding-top:18px}
.candidate-detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin:0}
.candidate-detail-list dt{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--site-text-muted)}
.candidate-detail-list dd{margin:3px 0 0;font-size:14px;color:var(--site-text)}

@media(max-width:640px){
.candidate-filters{flex-direction:column;align-items:stretch}
.candidate-profile{padding:18px}
.candidate-profile-header{flex-direction:column;align-items:center;text-align:center}
.candidate-profile-photo{flex:0 0 180px;width:180px}
.candidate-profile-tags{justify-content:center}
.candidate-detail-list{grid-template-columns:1fr}
}
