/* Public, name-only roster. All rules are scoped to this section. */
.roots-roster {
  --roster-purple: #401746;
  --roster-cream: #f4ecdc;
  --roster-line: rgba(64, 23, 70, .18);
  padding: clamp(3rem, 6vw, 6rem) var(--gutter, 2rem);
  background: var(--roster-cream);
  color: #302036;
  scroll-margin-top: 90px;
}
.roots-roster-inner { max-width: 1180px; margin: 0 auto; }
.roots-roster-heading { margin-bottom: 2rem; }
.roots-roster .section-index { margin: 0 0 1rem; color: #763b68; }
.roots-roster-heading h2 {
  margin: 0;
  padding-block: .12em;
  color: var(--roster-purple);
  font: 500 clamp(2.2rem, 4.5vw, 4rem)/1.15 'Montserrat', Arial, sans-serif;
  letter-spacing: -.035em;
  overflow-wrap: break-word;
}
.roots-roster-heading > p:last-child { margin: 1rem 0 0; max-width: 65ch; font-size: 1.125rem; line-height: 1.6; }
.roots-roster-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; margin-bottom: 2rem; }
.roots-roster-tabs button {
  min-width: 0;
  min-height: 56px;
  padding: .95rem 1.1rem;
  border: 1px solid rgba(64, 23, 70, .4);
  border-radius: 10px;
  background: transparent;
  color: var(--roster-purple);
  font: 600 1.125rem/1.4 'Montserrat', Arial, sans-serif;
  cursor: pointer;
  overflow-wrap: break-word;
}
.roots-roster-tabs button:hover { background: rgba(64, 23, 70, .05); }
.roots-roster-tabs button[aria-selected="true"] { background: var(--roster-purple); color: #fffaf2; border-color: var(--roster-purple); }
.roots-roster :focus-visible { outline: 3px solid #a1479a; outline-offset: 4px; }
.roots-roster [hidden] { display: none !important; }
.roots-roster-territory + .roots-roster-territory { margin-top: 3rem; }
.roots-roster[data-roster-enhanced] .roots-roster-territory { margin-top: 0; }
.roots-roster-territory-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.roots-roster-territory-heading h3 { margin: 0; color: var(--roster-purple); font: 600 clamp(1.5rem, 2.5vw, 1.9rem)/1.3 'Montserrat', Arial, sans-serif; overflow-wrap: break-word; }
.roots-roster-territory-heading p { margin: 0; font-size: 1rem; }
.roots-roster-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; align-items: start; }
.roots-roster-group { min-width: 0; border: 1px solid var(--roster-line); border-radius: 14px; background: #fffaf2; overflow: hidden; }
.roots-roster-group-heading { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: 1.15rem 1.4rem; }
.roots-roster-group-primary .roots-roster-group-heading { background: #d9ead3; }
.roots-roster-group-reserve .roots-roster-group-heading { background: #fff2cc; }
.roots-roster-group-heading h4 { margin: 0; color: var(--roster-purple); font: 600 1.4rem/1.35 'Montserrat', Arial, sans-serif; }
.roots-roster-group-heading span { font-size: 1rem; white-space: nowrap; }
.roots-roster-names { list-style: none; margin: 0; padding: .25rem 1.4rem .9rem; }
.roots-roster-names li { min-width: 0; padding: .95rem 0; border-bottom: 1px solid var(--roster-line); font-size: 1.125rem; line-height: 1.6; overflow-wrap: break-word; }
.roots-roster-names li:last-child { border-bottom: 0; }
@media (max-width: 700px) {
  .roots-roster-tabs, .roots-roster-groups { grid-template-columns: 1fr; }
  .roots-roster-tabs button { min-height: 52px; text-align: left; }
  .roots-roster-territory-heading { align-items: flex-start; flex-direction: column; gap: .5rem; }
  .roots-roster-group-heading { padding-inline: 1.2rem; }
  .roots-roster-names { padding-inline: 1.2rem; }
}
@media print {
  .roots-roster-tabs { display: none !important; }
  .roots-roster .roots-roster-territory[hidden] { display: block !important; }
  .roots-roster-territory { break-before: page; margin-top: 2rem !important; }
  .roots-roster-group { break-inside: avoid; }
}
