@charset "UTF-8";
/* 選手・進路ページ。トークンは ../style.css（--orange / --ink / --paper / --muted / --line / --pad）を共有 */
:root{--sage:#e8ebdf;--num:Impact,"Arial Narrow",sans-serif;--k-u:var(--orange);--k-c:#f4a57a;--k-w:#56604f}
.sample-banner{background:var(--ink);color:#f6f5ef}.sample-banner strong{color:#ff9b61;letter-spacing:.16em}.sample-banner a{color:#f6f5ef}
.header nav a[aria-current]{color:#a63c08}
.muted{color:var(--muted)}

/* HERO */
.r-hero{padding:80px var(--pad) 70px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.r-hero::after{content:"";position:absolute;right:calc(var(--pad) * -.4);top:40px;width:min(44vw,560px);aspect-ratio:1;border-radius:50%;border:1px solid var(--line);box-shadow:0 0 0 70px var(--paper),0 0 0 71px var(--line);pointer-events:none;z-index:-1}
.r-hero .eyebrow{color:#9a390e}
.r-hero h1{font-size:clamp(46px,7.4vw,112px);line-height:1.18;letter-spacing:-.06em;font-weight:900;margin-top:22px}
.r-hero h1 span{color:var(--orange)}
.r-lead{font-size:14px;margin-top:26px;letter-spacing:.04em}
.r-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:58px 0 0;border-top:1px solid var(--ink)}
.r-stats>div{padding:20px 22px 0 0;border-right:1px solid var(--line);margin-right:22px}.r-stats>div:last-child{border:0;margin:0}
.r-stats dt{font-size:11px;color:var(--muted);font-weight:700}
.r-stats dd{margin:4px 0 0;font-size:13px;font-weight:700}
.r-stats b{font:clamp(48px,6vw,88px)/1 var(--num);letter-spacing:-.01em;margin-right:4px;color:var(--ink)}
.r-stats>div:last-child b{color:var(--orange)}

.r-head{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:end;margin-bottom:48px}
.r-head>p{font-size:13px;color:var(--muted);max-width:430px;padding-bottom:8px}

/* TEAMS */
.team-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.team{padding:26px 24px 30px;border-right:1px solid var(--line);position:relative;transition:background .2s}
.team:first-child{padding-left:0}.team:last-child{border-right:0}.team:hover{background:var(--sage)}
.team-no{font:12px Arial,sans-serif;color:var(--muted);letter-spacing:.1em}
.team h3{font:900 clamp(30px,3vw,46px)/1.15 Impact,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;letter-spacing:-.02em;margin-top:10px}
.team:last-child h3{color:var(--orange)}
.team-league{font-size:11px;font-weight:700;margin-top:10px;min-height:3.6em;line-height:1.8}
.team-count{font-size:12px;margin-top:14px}.team-count b{font:40px/1 var(--num);margin-right:3px}
.grade-bar{display:flex;height:8px;margin-top:14px;gap:2px}.grade-bar span{display:block;min-width:4px}
.grade-bar .g3{background:var(--ink)}.grade-bar .g2{background:#7b8472}.grade-bar .g1{background:var(--orange)}
.team-grades{font-size:10px;color:var(--muted);margin-top:8px}

/* FROM: tile maps */
.r-from{background:var(--sage)}
.maps{display:grid;grid-template-columns:1.35fr 1fr;gap:56px;align-items:start}
.tile-map{margin:0;display:grid;gap:6px;grid-auto-rows:minmax(92px,auto)}
.tile-aomori{grid-template-columns:repeat(3,minmax(0,1fr))}
.tile-japan{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(64px,auto)}
.tile{background:var(--paper);padding:12px 14px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .2s}
.tile:hover{transform:translateY(-2px)}
.tile span{font-size:12px;font-weight:700;display:flex;justify-content:space-between}
.tile i{font-style:normal;color:#9a390e}
.tile b{font:30px/1 var(--num);align-self:flex-end}.tile-map .tile b.few{font:700 12px "Hiragino Kaku Gothic ProN",sans-serif;color:var(--muted)}.tile b small{font:700 11px "Hiragino Kaku Gothic ProN",sans-serif;margin-left:3px}
.tile.lv2{background:#fbd9c4}.tile.lv3{background:#f9a877}.tile.lv4{background:var(--orange)}
.tile.lv0{background:transparent;border:1px dashed #c4cbbb}.tile.lv0 b{color:var(--muted)}
.tile.self{background:var(--ink);color:var(--paper)}.tile.self b{font:700 11px "Hiragino Kaku Gothic ProN",sans-serif;color:#ff9b61}
.tile-japan .tile b{font-size:24px}
.tile-map figcaption{grid-column:1/-1;font-size:11px;font-weight:700;margin-top:10px}
.tile-map figcaption span{display:block;font-weight:400;color:var(--muted);font-size:10px}

/* FINDER */
.finder{display:grid;grid-template-columns:1fr 1.35fr;gap:56px;margin-top:64px;padding-top:36px;border-top:1px solid #c4cbbb}
.finder h2{font-size:26px;line-height:1.5;letter-spacing:-.03em;margin-top:10px}
.finder-copy>p:not(.eyebrow){font-size:12px;color:var(--muted);margin-top:8px}
.finder .eyebrow{color:#9a390e}
.finder-box label{display:block;font-size:11px;font-weight:700;margin-bottom:8px}
.finder-box input{width:100%;font:inherit;font-size:16px;padding:16px 18px;border:1px solid var(--ink);background:var(--paper);border-radius:0;color:var(--ink)}
.finder-box input:focus-visible{outline:3px solid #237aa0;outline-offset:2px}
.finder-result{font-size:13px;margin-top:14px;min-height:3.8em;line-height:1.8}
.finder-result b{font:34px/1 var(--num);color:var(--orange);margin:0 4px}
.finder-result .hit-list{display:block;font-size:11px;color:var(--muted);margin-top:4px}

/* ROSTER */
.grade-tabs{display:flex;gap:0;border-bottom:1px solid var(--ink);margin-bottom:0;overflow-x:auto}
.grade-tabs button{background:none;border:0;padding:14px 22px 12px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap;min-height:48px}
.grade-tabs button span{font:18px var(--num);margin-left:6px}
.grade-tabs button:hover{color:var(--ink)}
.grade-tabs button.active{color:var(--ink);border-bottom-color:var(--orange)}
html:not(.js) .grade-tabs{display:none}
.table-wrap{overflow-x:auto;max-height:640px;overflow-y:auto;border-bottom:1px solid var(--line)}
.table-wrap:focus-visible{outline:3px solid #237aa0;outline-offset:2px}
.roster-table{width:100%;border-collapse:collapse;font-size:12px;min-width:720px}
.roster-table th{position:sticky;top:0;background:var(--paper);text-align:left;font-size:10px;color:var(--muted);font-weight:700;padding:14px 12px;border-bottom:1px solid var(--line);letter-spacing:.06em}
.roster-table td{padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}
.roster-table tr:hover td{background:var(--sage)}
.roster-table td:first-child{font:15px var(--num);padding-left:0}
.roster-table td:nth-child(3){font:14px var(--num);letter-spacing:.04em}
.roster-table tr[hidden]{display:none}
.role{display:inline-block;background:var(--ink);color:var(--paper);font-size:10px;font-weight:700;padding:2px 9px}

/* PATHWAYS */
.path-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:60px}
.path-chart{margin:0}
.legend{display:flex;gap:18px;font-size:11px;font-weight:700;margin-bottom:18px}
.legend span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px}
.legend .k-u::before{background:var(--k-u)}.legend .k-c::before{background:var(--k-c)}.legend .k-w::before{background:var(--k-w)}
.bars{list-style:none;margin:0;padding:0}
.bars li{display:grid;grid-template-columns:54px 1fr 34px 70px;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.bars .year{font:22px var(--num)}
.bars .bar{display:flex;height:26px;gap:2px}
.bars .bar>span{display:block}.bars .k-u{background:var(--k-u)}.bars .k-c{background:var(--k-c)}.bars .k-w{background:var(--k-w)}
.bars .total{font:20px var(--num);text-align:right}
.bars .soccer{font-size:12px;font-weight:700;color:#9a390e;white-space:nowrap}.bars .soccer::before,.soccer-key::before{content:"";display:inline-block;width:9px;height:9px;border:2px solid #9a390e;border-radius:50%;margin-right:6px;vertical-align:-1px}
.path-chart figcaption{font-size:10px;color:var(--muted);margin-top:14px}
.dest h3,.journeys h3{font-size:15px;font-weight:800;padding-bottom:12px;border-bottom:1px solid var(--ink)}
.dest ul{list-style:none;margin:0;padding:0}
.dest li{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}
.dest-type{font-size:9px;font-weight:700;padding:3px 8px;min-width:62px;text-align:center}
.t-university{background:var(--orange)}.t-college{background:var(--k-c)}.t-work{background:var(--k-w);color:var(--paper)}
.dest-name small{display:block;font-size:10px;color:var(--muted)}
.dest li b{margin-left:auto;font:24px var(--num)}
.journeys{margin-top:64px}
.journeys ol{list-style:none;margin:0;padding:0}
.journeys li{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line)}
.j-label{font-size:13px;font-weight:800}.j-label small{display:block;font-size:10px;color:var(--muted);font-weight:400}
.j-path{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.step{font-size:12px;padding:8px 14px;border:1px solid var(--line);background:#fff}
.step.here{background:var(--orange);border-color:var(--orange);font-weight:800}
.arrow{color:var(--muted);font-size:14px}

/* POLICY */
.r-policy{display:grid;grid-template-columns:1.5fr 1fr;gap:60px;align-items:center;border-top:1px solid var(--line)}
.policy-card{border-left:3px solid var(--orange);padding-left:28px}
.policy-card h2{font-size:28px!important;margin:8px 0 16px}
.policy-card ul{margin:0;padding-left:18px;font-size:12px;color:var(--muted);line-height:2.1}
.r-policy .button{justify-self:start}

@media(max-width:1100px){.team{padding-inline:18px}.maps,.finder,.path-grid{gap:36px}}
@media(max-width:800px){
  .r-hero{padding-block:56px 50px}.r-hero::after{display:none}
  .r-stats{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:22px}.r-stats>div:nth-child(2){border-right:0;margin-right:0}
  .r-head{grid-template-columns:1fr;gap:18px;margin-bottom:32px}
  .team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.team:nth-child(2){border-right:0}.team:nth-child(3){padding-left:0}.team:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .maps,.finder,.path-grid,.r-policy{grid-template-columns:1fr}
  .journeys li{grid-template-columns:1fr;gap:10px}
}
@media(max-width:560px){
  .sample-banner>span{display:block!important;font-size:9px}.sample-banner{flex-wrap:wrap;row-gap:2px}
  .r-hero h1{font-size:clamp(40px,11.5vw,60px)}.r-lead{font-size:12px}
  .r-stats b{font-size:52px}
  .team-grid{grid-template-columns:1fr}.team,.team:nth-child(3){padding:22px 0;border-right:0;border-bottom:1px solid var(--line)}.team:last-child{border-bottom:0}
  .team-league{min-height:0}
  .tile-map{grid-auto-rows:minmax(78px,auto)}.tile{padding:10px}.tile b{font-size:24px}.tile span{font-size:11px}
  .finder h2{font-size:22px}
  .bars li{grid-template-columns:44px 1fr 26px;row-gap:4px}.bars .soccer{grid-column:2/4;font-size:11px}
  .bars .year{font-size:18px}
  .grade-tabs button{padding-inline:14px;font-size:12px}
}
@media(prefers-reduced-motion:reduce){.tile:hover{transform:none}}
/* 2026-10：自分に近い先輩と、その先を探す */
.roster-start{display:flex;flex-wrap:wrap;align-items:center;gap:28px;margin-top:30px}.sample-explainer{font-size:12px;color:var(--muted);margin-top:15px}
.finder-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.finder-suggestions button,.journey-filters button{border:1px solid #899582;background:transparent;color:var(--ink);padding:10px 14px;min-height:44px;cursor:pointer;font:inherit;font-size:13px}.finder-suggestions button:hover,.journey-filters button:hover{background:#d9dfd1}.finder-note{font-size:12px;line-height:1.8;color:#505c49;margin-top:12px}
.player-filters{display:flex;flex-wrap:wrap;gap:20px;align-items:end;padding-block:25px}.player-filters label{font-size:12px;font-weight:700;display:grid;gap:8px}.player-filters select{font:inherit;font-size:16px;border:1px solid #899582;border-radius:0;min-height:46px;padding:8px 35px 8px 12px;background:var(--paper);color:var(--ink)}.player-filters select:focus-visible{outline:3px solid #237aa0;outline-offset:3px}.player-filters button{background:none;border:0;border-bottom:1px solid var(--ink);font:inherit;font-size:13px;min-height:46px;cursor:pointer;padding:8px 0}
.filter-status{font-size:13px;color:var(--muted);margin-bottom:18px}.player-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;list-style:none;padding:0;margin:0}.player-card{border-top:3px solid var(--orange);background:white;padding:24px;min-width:0}.player-card-top{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700}.sample-tag{font-size:11px;color:#555b51;font-weight:400}.player-card h3{font-size:21px;margin-top:25px;line-height:1.5}.player-from{font-size:14px;margin-top:12px;overflow-wrap:anywhere}.player-arrival{display:flex;align-items:center;gap:12px;font-size:12px;color:#606758;margin-top:8px}.player-arrival b{color:#9a390e}.player-card dl{margin:22px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:12px}.player-card dl>div{display:flex;gap:10px;justify-content:space-between}.player-card dt{color:var(--muted)}.player-card dd{margin:0;font-weight:700}.player-card[hidden],.journey[hidden]{display:none}
.empty-message{font-size:14px;padding:24px;border:1px dashed var(--line);line-height:1.9}.more-players{display:block;margin:24px auto;background:var(--ink);color:white;min-height:48px;padding:12px 30px;border:0;font:inherit;font-size:14px;cursor:pointer}.more-players[hidden]{display:none}.roster-details{margin-top:35px}.roster-details summary{font-size:14px;font-weight:700;cursor:pointer;padding:18px 0;border-block:1px solid var(--line)}
.journey-intro{font-size:14px;color:var(--muted);margin:16px 0 20px}.journey-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.journey-filters button[aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}.journeys li{grid-template-columns:230px 1fr;padding-block:26px}.journey h4{font-size:17px;margin:8px 0 0;line-height:1.6}.j-label small{font-size:12px}.step{font-size:14px}.official-path{display:flex;justify-content:space-between;align-items:center;gap:35px;background:var(--ink);color:white;padding:40px;margin-top:45px}.official-path h3{font-size:28px;line-height:1.5;margin:15px 0}.official-path p{font-size:13px;max-width:480px;color:#d4d9ce}.official-path .button{flex-shrink:0}
html:not(.js) .player-filters,html:not(.js) .journey-filters,html:not(.js) .finder-suggestions,html:not(.js) .finder-box input,html:not(.js) .finder-box label{display:none}
@media(max-width:1000px){.player-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.official-path{flex-direction:column;align-items:start}}
@media(max-width:650px){.player-grid{grid-template-columns:1fr}.player-card{padding:22px}.player-filters{gap:16px}.player-filters label{flex:1;min-width:120px}.player-filters select{width:100%}.roster-start{gap:15px}.roster-start .text-link{font-size:13px}.journeys li{grid-template-columns:1fr}.official-path{padding:26px}.official-path h3{font-size:25px}.official-path .button{width:100%;font-size:12px;gap:12px}.r-head>p,.r-lead{font-size:14px}.r-policy .button{max-width:100%;font-size:12px;gap:15px}}

.senpai-first{padding:35px var(--pad) 45px;background:var(--sage)}.senpai-first .finder{margin-top:0;padding-top:0;border-top:0;align-items:center}.senpai-first .finder-result{min-height:0}.finder{scroll-margin-top:120px}

.player-card h3:focus-visible{outline:3px solid #237aa0;outline-offset:5px}

/* One generated atlas, reused as twelve square portraits. No per-player download. */
.portrait-demo-note{font-size:12px;color:var(--muted);margin:-5px 0 22px;line-height:1.8}.player-portrait{position:relative;margin:-24px -24px 22px;overflow:hidden;background:#d9d9d7}.portrait-face{aspect-ratio:1;background-image:url('../shared/media/roster-portrait-atlas-v1.webp');background-size:400% 300%;background-repeat:no-repeat}.player-portrait figcaption{position:absolute;bottom:10px;left:10px;padding:5px 8px;background:rgba(20,23,18,.88);color:white;font-size:11px;line-height:1.4}.player-card h3{margin-top:15px;font-size:25px}.sample-banner strong{letter-spacing:0}.sample-banner>span{line-height:1.6}
@media(max-width:650px){.player-portrait{margin:-22px -22px 20px}.sample-banner>span{font-size:11px!important}}

.r-alumni{background:#fff}.alumni-demo-note{padding:14px 18px;background:#f2f4ef;border-left:3px solid var(--orange);font-size:13px;line-height:1.9;margin:28px 0}.alumni-controls{display:flex;justify-content:space-between;align-items:end;gap:24px;margin:28px 0 20px;flex-wrap:wrap}.alumni-tabs{display:flex;gap:8px;flex-wrap:wrap}.alumni-tabs button{font:inherit;font-size:14px;min-height:44px;padding:10px 20px;background:white;color:var(--ink);border:1px solid var(--line);cursor:pointer}.alumni-tabs button[aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}.alumni-tabs button:hover{border-color:var(--orange)}.alumni-tabs button:focus-visible,.alumni-controls select:focus-visible{outline:3px solid #237aa0;outline-offset:3px}.alumni-controls label{font-size:12px;display:grid;gap:6px}.alumni-controls select{font:inherit;color:var(--ink);background:white;border:1px solid var(--line);padding:11px 12px;min-height:44px;border-radius:0}.alumni-grid{display:grid;grid-template-columns:1fr 1fr;list-style:none;padding:0;margin:0;gap:24px}.alumni-card{display:grid;grid-template-columns:140px 1fr;background:var(--paper);min-width:0;align-items:start}.alumni-card[hidden]{display:none}.alumni-portrait{position:relative;margin:0;overflow:hidden}.alumni-portrait figcaption{position:absolute;bottom:8px;left:8px;padding:5px 7px;background:rgba(20,23,18,.88);color:white;font-size:10px;line-height:1.5}.alumni-body{padding:24px;min-width:0}.alumni-league{font-size:12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.alumni-league b{font:30px/1 var(--num);color:#9a390e}.alumni-meta{font-size:12px;color:var(--muted);margin-top:20px}.alumni-body h3{font-size:27px;margin-top:5px;line-height:1.5}.alumni-club{font-size:16px;font-weight:700;line-height:1.7;overflow-wrap:anywhere;margin-top:4px}.alumni-fiction{font-size:11px;color:var(--muted);margin-top:8px}.alumni-origin{font-size:12px;margin-top:25px;color:var(--muted)}.alumni-route{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px 10px;font-size:12px;line-height:1.8}.alumni-route li+li:before{content:'→';margin-right:10px;color:#9a390e}.alumni-featured{grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);background:var(--ink);color:white}.alumni-featured .alumni-body{padding:42px}.alumni-featured .alumni-league b{font-size:60px;color:#ff9b61}.alumni-featured .alumni-body h3{font-size:42px}.alumni-featured .alumni-meta,.alumni-featured .alumni-fiction,.alumni-featured .alumni-origin{color:#c6cabe}.alumni-featured .alumni-route{font-size:14px;margin-top:18px}.alumni-featured .alumni-route li+li:before{color:#ff9b61}.alumni-real-news{margin-top:32px;padding:32px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:32px}.alumni-real-news p{font-size:13px;line-height:1.9;color:var(--muted)}.alumni-real-news h3{font-size:26px;margin:8px 0 14px;line-height:1.5}.alumni-news-links{display:flex;flex-direction:column;gap:18px;justify-content:center}.alumni-news-links a{font-size:14px;line-height:1.8;text-decoration:underline;text-underline-offset:5px;overflow-wrap:anywhere}.alumni-news-links a:hover{color:#9a390e}.alumni-news-links a:focus-visible{outline:3px solid #237aa0;outline-offset:4px}.alumni-card:first-child{grid-column:1/-1}html:not(.js) .alumni-controls{display:none}
@media(max-width:1100px){.alumni-card:not(.alumni-featured){grid-template-columns:1fr}.alumni-card:not(.alumni-featured) .alumni-portrait{max-width:220px}.alumni-featured .alumni-body{padding:28px}.alumni-featured .alumni-body h3{font-size:34px}}
@media(max-width:650px){.alumni-grid,.alumni-featured,.alumni-card,.alumni-real-news{grid-template-columns:1fr}.alumni-card:not(.alumni-featured) .alumni-portrait{max-width:none}.alumni-body,.alumni-featured .alumni-body{padding:26px}.alumni-featured .alumni-body h3{font-size:34px}.alumni-featured .alumni-league b{font-size:46px}.alumni-real-news{padding:26px 0;gap:15px}.alumni-controls label{width:100%}.alumni-demo-note{font-size:12px}.alumni-controls select{width:100%}.alumni-card{grid-column:1/-1}}
@media(max-width:650px){.alumni-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:6px}.alumni-tabs button{padding-inline:6px}}
