.candidate-list {
  grid-column: 1 / -1;
  margin-top: clamp(2rem, 5vw, 5rem);
}

.roster-intro { margin-bottom: 1.5rem; }
.roster-intro h3 { color: var(--blue); font-size: clamp(2rem, 3.2vw, 3.5rem); line-height: 1.1; }
.candidate-roster { list-style: none; counter-reset: candidate; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem 1.5rem; padding: 0; margin: 0 0 1rem; }
.candidate-roster li { counter-increment: candidate; display: flex; align-items: baseline; flex-wrap: wrap; gap: .2em .4em; min-width: 0; padding: .85rem 1rem; border-bottom: 1px solid rgba(16,32,51,.17); font-size: clamp(.95rem, 1.35vw, 1.12rem); }
.candidate-roster li::before { content: counter(candidate, decimal-leading-zero); color: var(--green); font-size: .72rem; font-weight: 800; letter-spacing: .06em; margin-right: .65rem; }
.candidate-roster li strong { color: var(--blue); }
.candidate-roster a { text-decoration: none; }
.candidate-roster a:hover { text-decoration: underline; text-underline-offset: 4px; }
.profile-arrow { color: var(--red); font-size: .8em; margin-left: .2rem; }
.roster-note { color: #5e6976; font-size: .9rem; margin: 0 0 clamp(3rem, 6vw, 6rem); }
.candidate-card { scroll-margin-top: 2rem; }

.candidate-card {
  display: grid;
  grid-template-columns: minmax(280px, .8fr) minmax(0, 1.2fr);
  background: #fff;
  border-radius: 32px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(16, 32, 51, .1);
}
.candidate-card + .candidate-card { margin-top: 1.5rem; }
.candidate-interview { align-self: flex-start; display: inline-flex; align-items: center; gap: .6rem; margin-top: 1.6rem; padding: .8rem 1rem; border: 1px solid var(--blue); border-radius: 999px; color: var(--blue); font-weight: 700; text-decoration: none; }
.candidate-interview:hover { background: var(--blue); color: #fff; }

.candidate-photo {
  margin: 0;
  min-height: 580px;
  background: #dce7ef;
}

.candidate-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.candidate-bio {
  padding: clamp(2rem, 5vw, 5rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.candidate-label {
  color: var(--red);
  font-weight: 800;
  font-size: .75rem;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.candidate-bio h3 {
  font-size: clamp(2.4rem, 5vw, 5rem);
  line-height: .98;
  color: var(--blue);
  margin: .35rem 0 1.5rem;
}

.candidate-bio > p:not(.candidate-label) {
  font-size: 1.04rem;
  color: #465467;
  max-width: 720px;
  margin: .45rem 0;
}

.more-candidates {
  text-align: center;
  color: #66717f;
  font-weight: 600;
  margin: 1.8rem 0 0;
}

@media (max-width: 860px) {
  .candidate-roster { grid-template-columns: 1fr; }
  .candidate-card { grid-template-columns: 1fr; }
  .candidate-photo { min-height: 0; aspect-ratio: 1; }
  #teodoro-bartuccio .candidate-photo { position: relative; overflow: hidden; }
  #teodoro-bartuccio .candidate-photo img {
    position: absolute;
    inset: 0;
    height: 100%;
    object-position: center top;
    transform: scale(1.4);
    transform-origin: center top;
  }
  #eleonora-atzori .candidate-photo img { object-position: center 24%; }
  #claudia-martinelli .candidate-photo img { object-position: center top; }
  #agron-mahmuti .candidate-photo img { object-position: center 42%; }
  #margherita-massarenti .candidate-photo img { object-position: center 35%; }
  #bruno-moio .candidate-photo img { object-position: center top; }
  #daniela-giacchetti .candidate-photo img { object-position: center 30%; }
  #riccardo-panfoli .candidate-photo img { object-position: center 28%; }
  #giuseppe-porpiglia .candidate-photo img { object-position: center 25%; }
  #eric-pucciarelli .candidate-photo img { object-position: center 62%; }
}

@media (max-width: 520px) {
  .candidate-card { border-radius: 22px; }
  .candidate-bio { padding: 1.6rem; }
  .candidate-bio h3 { font-size: 2.35rem; }
}
