/* Academy: photographic team showcases, open rosters and native portrait rails. */
.academy-directory ::selection, .academy-group-page ::selection { background: var(--green-200); color: var(--green-950); }
.academy-directory :is(a,button,[tabindex]):focus-visible, .academy-group-page a:focus-visible { outline: 3px solid var(--green-700); outline-offset: 5px; }
.academy-category-nav { display:flex; flex-wrap:wrap; gap:.5rem; padding:0 0 2.5rem; }
.academy-category-nav a { display:inline-flex; align-items:center; min-height:44px; padding:.6rem 1rem; color:var(--green-950); background:var(--green-100); font-size:.85rem; font-weight:800; text-decoration:none; border-radius:4px; }
.academy-category-nav a:hover { background:var(--green-950); color:var(--white); }
.academy-category { padding:3rem 0 4rem; border-top:1px solid var(--line); scroll-margin-top:2rem; }
.academy-category > h3 { font-family:var(--display); color:var(--green-950); font-size:clamp(2.4rem,4vw,3.8rem); line-height:1.05; letter-spacing:-.03em; margin:0 0 2rem; }
.academy-category-content { min-width:0; }
.academy-photo-group { margin-bottom:3.5rem; scroll-margin-top:2rem; }
.academy-photo-group-heading { display:grid; grid-template-columns:1.15fr 1fr; gap:3rem; align-items:center; background:var(--green-950); color:var(--white); }
.academy-photo-group-images { display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); }
.academy-photo-group-images img { display:block; width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; }
.academy-secondary-team-photo { display:block; width:200px; max-width:100%; height:auto; margin-top:1.25rem; }
.academy-photo-group-copy { padding:2rem 2rem 2rem 0; }
.academy-photo-group-copy h4 { font-family:var(--display); font-size:clamp(2.2rem,4vw,3.5rem); line-height:1.05; letter-spacing:-.03em; margin:0 0 .7rem; }
.academy-photo-group-copy p { color:var(--green-200); font-size:1rem; line-height:1.6; margin:0; }
.academy-photo-group-copy .academy-photo-group-invite { margin-top:2rem; color:var(--white); }
.academy-players-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1.75rem 0 1rem; }
.academy-players-heading h5 { font-family:var(--display); font-size:1.7rem; line-height:1.15; letter-spacing:-.025em; margin:0; color:var(--green-950); }
.academy-carousel-controls { display:flex; align-items:center; gap:.5rem; flex-shrink:0; }
.academy-carousel-controls[hidden] { display:none; }
.academy-carousel-controls > span { color:var(--green-800); font-size:.8rem; font-variant-numeric:tabular-nums; margin-right:.75rem; min-width:4.2rem; text-align:right; }
.academy-carousel-controls button { display:grid; place-items:center; width:44px; height:44px; padding:0; color:var(--green-950); background:var(--white); border:1px solid var(--green-800); border-radius:50%; cursor:pointer; }
.academy-carousel-controls button:hover:not(:disabled) { background:var(--green-950); color:var(--white); }
.academy-carousel-controls button:disabled { opacity:.35; cursor:default; }
.academy-player-track { position:relative; display:flex; gap:1rem; list-style:none; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scrollbar-color:var(--green-700) var(--green-100); scrollbar-width:thin; padding:0 0 1rem; margin:0; }
.academy-player-card { flex:0 0 calc((100% - 3.5rem)/4.5); min-width:0; scroll-snap-align:start; background:var(--green-100); overflow:hidden; }
.academy-player-card img { display:block; width:100%; height:auto; aspect-ratio:3/4; object-fit:cover; object-position:center 24%; }
.academy-player-card-caption { padding:1rem; color:var(--green-950); }
.academy-player-card-caption strong { display:block; font-family:var(--display); font-size:1.4rem; letter-spacing:-.02em; }
.academy-player-card-caption span { display:block; color:var(--green-800); font-size:.75rem; margin-top:.2rem; }
.academy-team-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem 3rem; }
.academy-team { min-width:0; padding:1.75rem 0 0; border-top:1px solid var(--line); }
.academy-team-header { margin-bottom:1.25rem; }
.academy-team-title h4 { font-family:var(--display); font-size:1.9rem; letter-spacing:-.025em; line-height:1.1; color:var(--green-950); margin:0 0 .65rem; }
.academy-team-title p { color:var(--green-800); font-size:.85rem; line-height:1.6; margin:.2rem 0; }
.academy-team-count { display:inline-block; background:var(--green-100); color:var(--green-950); font-size:.75rem; font-weight:700; padding:.4rem .6rem; margin:.8rem 0 0; }
.academy-roster-season { color:var(--green-800); font-size:.8rem; margin:0 0 .5rem; }
.academy-roster { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:2rem; list-style:none; padding:0; margin:0; }
.academy-roster li { color:var(--green-950); border-bottom:1px solid var(--line); padding:.65rem 0; font-size:.95rem; line-height:1.5; overflow-wrap:anywhere; }
.academy-team .academy-roster { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:1.5rem; }
.academy-team-page-link { display:inline-flex; align-items:center; gap:.7rem; min-height:44px; margin-top:1rem; color:var(--green-800); font-size:.85rem; font-weight:800; text-underline-offset:.3em; }
.academy-team-photo { margin-bottom:1.5rem; }
.academy-team-photo img { display:block; width:100%; height:auto; }
.academy-group-hero-without-photo { grid-template-columns:1fr; min-height:360px; }
.academy-group-page .academy-group-hero h1 { max-width:100%; font-size:clamp(3rem,7vw,6rem); letter-spacing:-.03em; line-height:1; text-wrap:balance; }
.academy-group-competition { color:var(--green-200); font-size:1.1rem; max-width:65ch; }
.academy-group-roster-section { background:var(--white); }
.academy-roster-heading { display:flex; align-items:end; justify-content:space-between; flex-wrap:wrap; gap:1.5rem; margin-bottom:2rem; }
.academy-roster-heading h2 { font-family:var(--display); font-size:clamp(2.8rem,5vw,4rem); color:var(--green-950); letter-spacing:-.03em; line-height:1; margin:0; }
.academy-roster-heading p { color:var(--green-800); font-size:.9rem; margin:.3rem 0 0; }
@media(max-width:900px) {
 .academy-photo-group-heading { gap:1.5rem; }
 .academy-player-card { flex-basis:calc((100% - 2rem)/3.2); }
 .academy-team-list { grid-template-columns:1fr; }
 .academy-roster { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:600px) {
 .academy-category-nav { gap:.4rem; padding-bottom:1rem; }
 .academy-category-nav a { padding:.55rem .75rem; font-size:.8rem; }
 .academy-category { padding:2rem 0; }
 .academy-category > h3 { margin-bottom:1.5rem; }
 .academy-photo-group-heading { grid-template-columns:1fr; gap:0; }
 .academy-photo-group-copy { padding:1.5rem; }
 .academy-photo-group-copy .academy-photo-group-invite { margin-top:1rem; }
 .academy-player-card { flex-basis:66%; }
 .academy-player-card-caption { padding:.8rem; }
 .academy-players-heading { align-items:start; }
 .academy-players-heading h5 { font-size:1.45rem; max-width:9ch; }
 .academy-carousel-controls { gap:.35rem; }
 .academy-carousel-controls > span { margin-right:.2rem; min-width:3rem; font-size:.7rem; }
 .academy-team .academy-roster { column-gap:1rem; }
 .academy-team .academy-roster li { font-size:.85rem; }
 .academy-roster { grid-template-columns:1fr; }
}

/* Named profiles use the existing Academy palette and typography. */
.academy-profile-roster .academy-profile-link { display:flex; align-items:center; gap:1rem; min-height:100px; color:var(--green-950); text-decoration:none; }
.academy-profile-thumb, .academy-profile-placeholder { display:flex; align-items:center; justify-content:center; flex:0 0 72px; width:72px; height:96px; object-fit:cover; object-position:center 24%; background:var(--green-100); }
.academy-profile-placeholder { flex-direction:column; gap:6px; color:var(--green-800); }
.academy-profile-placeholder img { width:48px; height:48px; object-fit:contain; }
.academy-profile-placeholder > span { font-size:10px; font-weight:600; line-height:1.3; text-align:center; }
.academy-profile-caption { min-width:0; }
.academy-profile-caption > strong { display:block; font-size:1rem; }
.academy-profile-caption > span { display:block; margin-top:.25rem; font-size:.8rem; color:var(--green-800); }
.academy-profile-caption .academy-profile-action { text-decoration:underline; text-underline-offset:.25em; }
.academy-profile-link:hover .academy-profile-action { color:var(--green-950); }
.academy-player-page { background:var(--white); color:var(--green-950); }
.academy-player-page ::selection { background:var(--green-200); color:var(--green-950); }
.academy-player-page a { color:var(--green-800); text-underline-offset:.25em; }
.academy-player-page a:hover { color:var(--green-950); }
.academy-player-page a:focus-visible { outline:3px solid var(--green-700); outline-offset:5px; }
.academy-player-back { display:inline-flex; align-items:center; min-height:44px; margin-bottom:2rem; font-weight:700; }
.academy-player-layout { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,3fr); gap:clamp(2rem,5vw,5rem); align-items:start; }
.academy-player-photo > img { display:block; width:100%; height:auto; aspect-ratio:3/4; object-fit:cover; object-position:center 24%; }
.academy-player-no-photo { display:flex; flex-direction:column; align-items:center; justify-content:center; aspect-ratio:3/4; background:var(--green-100); color:var(--green-800); }
.academy-player-no-photo img { width:120px; height:120px; object-fit:contain; }
.academy-player-copy h1 { font-family:var(--display); font-size:clamp(2.6rem,5vw,5.5rem); line-height:1.05; letter-spacing:-.03em; margin:0 0 2rem; overflow-wrap:anywhere; }
.academy-player-copy h2 { font-family:var(--display); font-size:2rem; margin:2.5rem 0 1rem; }
.academy-player-facts { margin:0; }
.academy-player-facts > div { display:grid; grid-template-columns:1fr 1fr; gap:1rem; padding:1rem 0; border-bottom:1px solid var(--line); }
.academy-player-facts dt { color:var(--green-800); }
.academy-player-facts dd { margin:0; font-weight:700; font-variant-numeric:tabular-nums; }
.academy-player-groups { padding-left:1.2rem; line-height:1.7; }
.academy-player-groups a { display:inline-block; padding:.4rem 0; }
.academy-player-description { max-width:65ch; margin-top:2rem; line-height:1.7; }
@media(max-width:600px) {
 .academy-team .academy-profile-roster { grid-template-columns:1fr; }
 .academy-player-layout { grid-template-columns:1fr; }
 .academy-player-photo { max-width:360px; width:100%; }
}

/* Each age category occupies a full row; each squad has its own native carousel. */
.academy-team-list { grid-template-columns:minmax(0,1fr); gap:2.5rem; }
.academy-roster-controls { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:0 0 1rem; }
.academy-roster-controls p { color:var(--green-800); font-size:.85rem; margin:0; }
.academy-roster-carousel .academy-profile-roster { display:flex; gap:1rem; padding:.35rem .35rem 1rem; }
.academy-roster-carousel .academy-profile-roster > li { flex:0 0 220px; padding:0; border:0; scroll-snap-align:start; background:var(--green-100); }
.academy-roster-carousel .academy-profile-link { display:flex; flex-direction:column; align-items:stretch; gap:0; height:100%; }
.academy-roster-carousel .academy-profile-thumb, .academy-roster-carousel .academy-profile-placeholder { flex:none; width:100%; height:auto; aspect-ratio:3/4; }
.academy-roster-carousel .academy-profile-placeholder { gap:1rem; }
.academy-roster-carousel .academy-profile-placeholder img { width:88px; height:88px; }
.academy-roster-carousel .academy-profile-placeholder > span { font-size:.9rem; }
.academy-roster-carousel .academy-profile-caption { padding:1rem; }
.academy-roster-carousel .academy-profile-caption > strong { font-family:var(--display); font-size:1.5rem; line-height:1.15; }
.academy-group-page .academy-roster-carousel button:focus-visible, .academy-group-page .academy-player-track:focus-visible { outline:3px solid var(--green-700); outline-offset:3px; }
.academy-age-team-photo { margin:0 0 2rem; }
.academy-age-team-photo > img { display:block; width:100%; height:auto; max-height:640px; object-fit:contain; background:var(--green-100); }
.academy-team-photo-placeholder { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:220px; aspect-ratio:3/1; background:var(--green-100); color:var(--green-800); gap:1rem; }
.academy-team-photo-placeholder img { width:96px; height:96px; object-fit:contain; }
.academy-team-photo-placeholder p { margin:0; font-weight:600; }
@media(max-width:600px) {
 .academy-roster-controls { align-items:start; }
 .academy-roster-controls p { max-width:16ch; }
 .academy-roster-carousel .academy-profile-roster > li { flex-basis:72%; }
 .academy-team-photo-placeholder { aspect-ratio:3/2; min-height:180px; }
}
