.candidate-hero{position:relative;overflow:hidden}.candidate-hero__bg{background:linear-gradient(160deg, #0f1f38 0%, var(--color-primary) 35%, #23466b 70%, #2d5a8e 100%);position:absolute;inset:0}.candidate-hero__inner{z-index:1;padding:calc(var(--header-height) + 2.5rem) 1.25rem 4rem;text-align:center;color:var(--color-white);flex-direction:column;align-items:center;gap:1.75rem;display:flex;position:relative}@media (width>=768px){.candidate-hero__inner{text-align:left;padding:calc(var(--header-height) + 3rem) 2rem 5rem;flex-direction:row;align-items:center;gap:3rem}}@media (width>=1200px){.candidate-hero__inner{padding:calc(var(--header-height) + 3.5rem) 3rem 5.5rem}}.candidate-hero__photo-wrap{flex-shrink:0;width:min(100%,300px);position:relative}@media (width>=768px){.candidate-hero__photo-wrap{width:min(340px,40vw)}}.candidate-hero__photo{aspect-ratio:4/5;border-radius:var(--radius-lg);color:#fff9;letter-spacing:.05em;background:linear-gradient(135deg,#fff3,#ffffff14);justify-content:center;align-items:center;width:100%;font-size:2.4rem;font-weight:700;display:flex;overflow:hidden;box-shadow:0 0 0 1px #ffffff2e,0 24px 48px #00000059}.candidate-hero__photo.is-zoomable{cursor:zoom-in}.candidate-hero__photo img{object-fit:cover;object-position:center 25%;width:100%;height:100%;transition:transform var(--transition-slow)}.candidate-hero__photo.is-zoomable:hover img{transform:scale(1.04)}.candidate-hero__photo-num{z-index:2;background:var(--color-primary);width:56px;height:56px;color:var(--color-white);border:3px solid var(--color-white);border-radius:50%;justify-content:center;align-items:center;font-size:1.3rem;font-weight:700;line-height:1;display:flex;position:absolute;bottom:-14px;right:-14px;box-shadow:0 4px 12px #0000004d}.candidate-hero__info{flex-direction:column;align-items:center;gap:.6rem;display:flex}@media (width>=768px){.candidate-hero__info{align-items:flex-start}}.candidate-hero__header{flex-direction:column;align-items:center;gap:.6rem;display:flex}@media (width>=768px){.candidate-hero__header{align-items:flex-start}}.candidate-hero__name{color:var(--color-white);margin-bottom:0;font-size:clamp(1.6rem,4.5vw,2.4rem);line-height:1.15}.candidate-hero__badge{border-radius:var(--radius-full);color:var(--color-white);background:#ffffff26;flex-shrink:0;align-items:center;gap:.4rem;width:fit-content;padding:.35rem 1rem;font-size:.78rem;font-weight:600;display:inline-flex}.candidate-hero__badge--mayor{background:linear-gradient(135deg, var(--color-accent-blue), #60a5fa);color:var(--color-white);box-shadow:0 2px 12px #3b82f666}.candidate-hero__job{color:#ffffffbf;margin-bottom:0;font-size:1rem}.candidate-hero__district{color:#fff9;align-items:center;gap:.4rem;font-size:.88rem;display:inline-flex}.candidate-hero__district i{font-size:.8rem}.candidate-bio{padding-top:2.5rem;padding-bottom:2.5rem}.candidate-bio__inner{max-width:720px;margin:0 auto}.candidate-bio__intro{color:var(--color-gray-700);border-left:3px solid var(--color-accent-blue);margin-bottom:1.5rem;padding-left:1.25rem;font-size:1.1rem;font-style:italic;line-height:1.8}.candidate-bio__text p{color:var(--color-gray-700);margin-bottom:1em;font-size:1rem;line-height:1.8}.candidate-posts{padding-top:3rem;padding-bottom:4rem}.candidate-posts .section-header{margin-bottom:2rem}.candidate-posts__list{flex-direction:column;gap:1.5rem;max-width:780px;margin:0 auto 2.5rem;display:flex}.candidate-posts__load-more{text-align:center}.candidate-posts__empty{text-align:center;color:var(--color-gray-400);padding:3rem 1rem;font-size:1rem}.candidate-posts__empty i{opacity:.4;margin-bottom:.75rem;font-size:2rem;display:block}
