/* =========================================================
   JUN SPORTS HOKKAIDO — 2027 site
   黒 × 赤 × 白 / 斜め軸 -8deg（あん馬の旋回角）
   ========================================================= */
:root {
  --ink: #0A0A0A;
  --ink-2: #161616;
  --line: #2E2E2E;
  --mute: #8A8A8A;
  --soft: #D0D0D0;
  --paper: #FFFFFF;
  /* ブランドカラー（JUN SPORTS ブルー）。変数名は互換のため --red のまま */
  --red: #1A6BFF;
  --red-ink: #0047C9;
  --tint: #E8F0FF;
  --axis: -8deg;
  --wrap: 1360px;
  --gut: 24px;
  --display: "Big Shoulders Display", "Noto Sans JP", sans-serif;
  --body: "Noto Sans JP", system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--ink); color: var(--paper); font-family: var(--body); line-height: 1.7; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { max-width: 100%; display: block; }
a { color: inherit; }
a:hover { color: var(--red); }
:focus-visible { outline: 3px solid var(--red); outline-offset: 3px; }
.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gut); }
.display { font-family: var(--display); font-weight: 900; line-height: .85; letter-spacing: .01em; }
.eyebrow { font-family: var(--display); font-weight: 800; font-size: 18px; letter-spacing: .14em; color: var(--red); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 60px; padding: 0 32px; font-weight: 900; text-decoration: none; border: 2px solid transparent; transition: transform .15s ease, background .15s ease; }
.btn:hover { transform: translateY(-2px); }
.btn--red { background: var(--red); color: var(--paper); }
.btn--red:hover { color: var(--paper); background: #C9301A; }
.btn--line { border-color: currentColor; }
.btn--ink { background: var(--ink); color: var(--paper); }
.btn--ink:hover { color: var(--paper); }

/* ---------- slash logo ---------- */
.slash { position: relative; display: inline-block; }
.slash::after { content: ""; position: absolute; left: -6%; right: -6%; top: 50%; height: .11em; background: var(--red); transform: rotate(var(--axis)); }

/* ---------- header ---------- */
.hd { position: absolute; inset: 0 0 auto 0; z-index: 20; }
.hd__in { height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.hd__logo { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.hd__mark { font-family: var(--display); font-weight: 900; font-size: 34px; line-height: 1; }
.hd__name { font-size: 12px; font-weight: 700; line-height: 1.3; }
.hd__nav { display: flex; align-items: center; gap: 28px; font-size: 14px; font-weight: 700; }
.hd__nav a { text-decoration: none; }
.hd__nav .btn { height: 44px; padding: 0 22px; }
.hd__toggle { display: none; width: 48px; height: 48px; border: 0; background: var(--red); color: var(--paper); align-items: center; justify-content: center; cursor: pointer; }
.hd__sp { display: none; background: var(--ink); padding: 8px var(--gut) 32px; }
.hd__sp a { display: block; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 26px; font-weight: 900; text-decoration: none; }
.hd__sp .btn { margin-top: 20px; width: 100%; font-size: 18px; }
.hd.is-open .hd__sp { display: block; }
@media (max-width: 860px) {
  .hd__nav { display: none; }
  .hd__toggle { display: inline-flex; }
}

/* ---------- hero ---------- */
.hero { position: relative; min-height: min(900px, 100svh); display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; isolation: isolate; }
.hero__photo { position: absolute; inset: 0; z-index: -3; background-size: cover; background-position: 70% 30%; filter: grayscale(1) contrast(1.2) brightness(.95); }
.hero__shade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(90deg, rgba(10,10,10,.94) 0%, rgba(10,10,10,.7) 38%, rgba(10,10,10,.1) 72%, rgba(10,10,10,.35) 100%), linear-gradient(0deg, rgba(10,10,10,1) 0%, rgba(10,10,10,0) 40%); }
.hero__score { position: absolute; right: -2vw; top: 90px; z-index: -1; font-family: var(--display); font-weight: 900; font-size: clamp(200px, 32vw, 500px); line-height: .8; color: transparent; -webkit-text-stroke: 2px rgba(255,255,255,.18); white-space: nowrap; pointer-events: none; }
.hero__band { position: absolute; left: -10%; width: 120%; top: 19%; height: clamp(64px, 7vw, 108px); background: var(--red); transform: rotate(var(--axis)); display: flex; align-items: center; overflow: hidden; z-index: -1; }
.hero__band span { font-family: var(--display); font-weight: 900; font-size: clamp(44px, 5.4vw, 84px); line-height: 1; color: var(--ink); white-space: nowrap; padding-left: 8%; animation: band 40s linear infinite; }
@keyframes band { to { transform: translateX(-50%); } }
.hero__body { padding-top: 260px; padding-bottom: 64px; display: flex; flex-direction: column; gap: 36px; }
.hero__title { margin: 0; font-weight: 900; font-size: clamp(54px, 8.4vw, 132px); line-height: 1.04; letter-spacing: -.02em; }
.hero__promise { margin: 12px 0 0; font-size: clamp(20px, 2.2vw, 30px); font-weight: 900; color: var(--red); }
.hero__foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px; }
.badge { display: flex; flex-wrap: wrap; background: var(--paper); color: var(--ink); }
.badge__k { padding: 14px 20px; border-right: 4px solid var(--red); font-family: var(--display); font-weight: 800; font-size: 14px; letter-spacing: .12em; line-height: 1.2; white-space: nowrap; display: flex; align-items: center; }
.badge__v { padding: 10px 20px; display: flex; align-items: baseline; gap: 16px; }
.badge__v b { font-family: var(--display); font-weight: 900; font-size: 48px; line-height: 1; }
.badge__v span { font-size: 18px; font-weight: 900; white-space: nowrap; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; }
@media (prefers-reduced-motion: reduce) { .hero__band span { animation: none; } .btn { transition: none; } }

/* ---------- next event ---------- */
.next { background: var(--paper); color: var(--ink); clip-path: polygon(0 12%, 100% 0, 100% 88%, 0 100%); margin-top: 24px; }
.next__in { padding-top: 72px; padding-bottom: 72px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 48px; }
.next__count { font-family: var(--display); font-weight: 900; font-size: clamp(96px, 12vw, 168px); line-height: .8; color: var(--red); white-space: nowrap; }
.next__meta { flex: 1 1 380px; display: flex; flex-direction: column; gap: 4px; }
.next__date { font-family: var(--display); font-weight: 800; font-size: 20px; letter-spacing: .1em; }
.next__title { margin: 0; font-size: clamp(22px, 2.4vw, 32px); font-weight: 900; line-height: 1.4; }
.next a.more { font-weight: 900; font-size: 15px; height: 48px; display: inline-flex; align-items: center; border-bottom: 3px solid var(--ink); text-decoration: none; }

/* ---------- news ---------- */
.news { padding: 120px 0 40px; }
.news__in { display: flex; flex-wrap: wrap; gap: 40px; }
.news__head { flex: 0 1 260px; display: flex; flex-direction: column; gap: 8px; }
.news__head h2 { margin: 0; font-size: 40px; font-weight: 900; line-height: 1.2; }
.news__list { flex: 999 1 600px; min-width: 0; list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--paper); }
.news__list li { border-bottom: 1px solid var(--line); }
.news__list a { display: flex; flex-wrap: wrap; gap: 4px 32px; padding: 22px 0; align-items: baseline; text-decoration: none; }
.news__date { font-family: var(--display); font-weight: 800; font-size: 20px; color: var(--mute); width: 120px; }
.news__cat { font-size: 12px; font-weight: 700; color: var(--mute); width: 100%; order: -1; }
.news__title { flex: 1 1 360px; font-size: 18px; font-weight: 700; }
.more-link { font-weight: 900; font-size: 15px; height: 48px; display: inline-flex; align-items: center; border-bottom: 3px solid currentColor; text-decoration: none; }

/* ---------- story ---------- */
.story { padding: 140px 0 40px; }
.story__head { display: flex; flex-direction: column; gap: 16px; margin-bottom: 80px; }
.story__head h2 { margin: 0; font-size: clamp(38px, 5vw, 76px); font-weight: 900; line-height: 1.2; }
.chapters { list-style: none; margin: 0; padding: 0; border-left: 2px solid #3A3A3A; }
.chapter { position: relative; display: flex; flex-wrap: wrap; gap: 24px 56px; padding: 0 0 112px 40px; }
.chapter::before { content: ""; position: absolute; left: -9px; top: 10px; width: 16px; height: 16px; background: var(--red); transform: rotate(var(--axis)); }
.chapter__no { flex: 0 1 240px; display: flex; flex-direction: column; gap: 4px; }
.chapter__no small { font-family: var(--display); font-weight: 900; font-size: 22px; color: var(--red); letter-spacing: .08em; }
.chapter__no strong { font-family: var(--display); font-weight: 900; font-size: clamp(56px, 6vw, 88px); line-height: .9; }
.chapter__body { flex: 1 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 22px; }
.chapter__body h3 { margin: 0; font-size: clamp(30px, 3.4vw, 48px); font-weight: 900; line-height: 1.3; }
.chapter__body p { margin: 0; font-size: clamp(16px, 1.4vw, 19px); line-height: 2; color: var(--soft); max-width: 720px; }
.chapter__photo { position: relative; max-width: 760px; aspect-ratio: 16 / 9; overflow: hidden; background: var(--ink-2); }
.chapter__photo img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.1); transition: filter .4s ease; }
.chapter__photo:hover img { filter: none; }
.chapter__photo::after { content: ""; position: absolute; left: -10%; right: -10%; bottom: 18%; height: 6px; background: var(--red); transform: rotate(var(--axis)); }
.ampm { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 3px solid var(--paper); max-width: 720px; }
.ampm div { padding: 14px 12px 0 0; display: flex; flex-direction: column; }
.ampm b { font-family: var(--display); font-weight: 900; font-size: 44px; line-height: 1; }
.ampm span { font-size: 14px; font-weight: 700; }
.proof { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; max-width: 720px; }
.proof div { display: flex; flex-direction: column; gap: 6px; }
.proof b { font-family: var(--display); font-weight: 900; font-size: clamp(56px, 7vw, 104px); line-height: .85; }
.proof b small { font-size: .42em; }
.proof span { font-size: 13px; font-weight: 700; color: var(--soft); }
.chain { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.chain li { display: flex; align-items: center; gap: 8px; }
.chain li span { background: #2A2A2A; font-weight: 900; font-size: 15px; padding: 10px 16px; white-space: nowrap; }
.chain li:first-child span { background: var(--paper); color: var(--ink); }
.chain li:nth-child(2) span { background: var(--red); }
.chain li + li::before { content: "→"; color: var(--red); font-weight: 900; }
.story__close { border-top: 4px solid var(--red); padding-top: 40px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px; }
.story__close p { margin: 0; font-size: clamp(40px, 6vw, 96px); font-weight: 900; line-height: 1.15; }
.story__close span { font-family: var(--display); font-weight: 900; font-size: clamp(24px, 2.4vw, 36px); letter-spacing: .06em; color: var(--mute); }
.mark-check { color: var(--red); font-size: .8em; }

/* ---------- roster (score sheet) ---------- */
.roster { background: var(--red); color: var(--ink); clip-path: polygon(0 3%, 100% 0, 100% 97%, 0 100%); margin-top: 40px; }
.roster__in { padding-top: 140px; padding-bottom: 140px; display: flex; flex-direction: column; gap: 32px; }
.roster__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; }
.roster__head h2 { margin: 0; font-family: var(--display); font-weight: 900; font-size: clamp(64px, 8vw, 120px); line-height: .9; }
.roster__note { font-size: 13px; font-weight: 700; }
.sheet-box { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.sheet { width: 100%; min-width: 860px; border-collapse: collapse; }
.sheet thead th { font-family: var(--display); font-weight: 800; font-size: 16px; letter-spacing: .1em; text-align: center; padding: 12px 6px; border-top: 3px solid var(--ink); border-bottom: 2px solid var(--ink); }
.sheet thead th:first-child, .sheet thead th:last-child { text-align: left; }
.sheet td, .sheet th[scope=row] { border-bottom: 1px solid rgba(10,10,10,.35); padding: 16px 6px; vertical-align: middle; }
.sheet th[scope=row] { text-align: left; padding-left: 0; }
.sheet th[scope=row] a { display: flex; flex-direction: column; text-decoration: none; line-height: 1.25; }
.sheet th[scope=row] a:hover { color: var(--paper); }
.sheet .nm { font-size: clamp(20px, 2vw, 26px); font-weight: 900; }
.sheet .en { font-family: var(--display); font-weight: 700; font-size: 14px; letter-spacing: .04em; }
.sheet td.sc { text-align: center; font-family: var(--display); font-weight: 800; font-size: 22px; white-space: nowrap; }
.sheet td.sc.is-fav { background: var(--ink); color: var(--paper); }
.sheet td.sc.is-fav.is-empty { color: var(--red); }
.sheet td.sc.is-empty { color: rgba(10,10,10,.4); font-size: 16px; }
.sheet td.res { font-size: 14px; font-weight: 700; padding-left: 16px; min-width: 220px; }
.legend { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 13px; font-weight: 700; }
.legend i { display: inline-block; width: 14px; height: 14px; background: var(--ink); vertical-align: -2px; margin-right: 6px; }
.wag { display: flex; flex-wrap: wrap; gap: 8px 32px; align-items: baseline; border-top: 2px solid var(--ink); padding-top: 16px; }
.wag a { text-decoration: none; font-size: 20px; font-weight: 900; }

/* ---------- join / partners ---------- */
.join { background: var(--paper); color: var(--ink); clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 100%); margin-top: -60px; }
.join__in { padding-top: 180px; padding-bottom: 96px; display: flex; flex-direction: column; gap: 48px; }
.join h2 { margin: 0; font-size: clamp(40px, 5.6vw, 84px); font-weight: 900; line-height: 1.15; }
.ways { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); border-top: 4px solid var(--ink); }
.ways a { padding: 32px 32px 32px 0; display: flex; flex-direction: column; gap: 10px; text-decoration: none; }
.ways b { font-family: var(--display); font-weight: 900; font-size: 40px; line-height: 1; }
.ways strong { font-size: 18px; font-weight: 900; }
.ways span { font-size: 15px; color: #4A4A4A; }
.credits { display: flex; flex-direction: column; gap: 28px; border-top: 1px solid #D0D0D0; padding-top: 32px; }
.credits__row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 40px; }
.credits__label { font-family: var(--display); font-weight: 800; font-size: 16px; letter-spacing: .14em; width: 180px; }
.credits__logos { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; flex: 1 1 400px; }
.credits__logos a { display: inline-flex; align-items: center; min-height: 64px; text-decoration: none; font-weight: 700; }
.credits__logos img { max-height: 64px; width: auto; }
.credits__group { font-size: 14px; color: #4A4A4A; }
.credits__group a { text-decoration: none; }

/* ---------- footer ---------- */
.ft { background: var(--ink); color: var(--paper); border-top: 4px solid var(--red); }
.ft__in { padding-top: 72px; padding-bottom: 40px; display: flex; flex-wrap: wrap; gap: 48px 64px; justify-content: space-between; }
.ft__brand { display: flex; flex-direction: column; gap: 16px; }
.ft__mark { font-family: var(--display); font-weight: 900; font-size: 88px; line-height: .85; }
.ft__msg { margin: 0; font-weight: 900; font-size: 16px; line-height: 1.8; }
.ft__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 32px 40px; flex: 1 1 560px; max-width: 820px; }
.ft__cols div { display: flex; flex-direction: column; gap: 2px; }
.ft__cols a { font-size: 14px; text-decoration: none; color: var(--soft); min-height: 32px; display: flex; align-items: center; }
.ft__cols a:hover { color: var(--red); }
.ft__h { margin: 0 0 6px; font-family: var(--display); font-weight: 800; font-size: 15px; letter-spacing: .16em; color: var(--red); }
.ft__legal { width: 100%; font-size: 12px; color: var(--mute); display: flex; flex-wrap: wrap; gap: 8px 24px; border-top: 1px solid var(--line); padding-top: 24px; }
.ft__legal a { text-decoration: none; color: var(--mute); }

/* ---------- solid header (inner pages) ---------- */
.hd--solid { position: sticky; top: 0; background: var(--ink); border-bottom: 1px solid var(--line); }
.hd__sp-sub { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; padding-top: 8px; }
.hd__sp .hd__sp-sub a { font-size: 15px; font-weight: 700; color: var(--soft); border-bottom: 0; padding: 10px 0; }

@media (max-width: 640px) {
  :root { --gut: 20px; }
  .hero__body { padding-top: 220px; }
  .hero__band { top: 15%; }
  .chapter { padding-left: 24px; padding-bottom: 88px; }
  .actions .btn { width: 100%; }
  .badge__v b { font-size: 40px; }
  .news { padding-top: 96px; }
}

/* ---------- integrations (live / campaign / event links) ---------- */
.next__links { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.next__links .btn { height: 52px; padding: 0 24px; }
.live { display: block; background: var(--red); color: var(--paper); text-decoration: none; }
.live:hover { color: var(--paper); background: #C9301A; }
.live__in { display: flex; align-items: center; gap: 16px; min-height: 64px; font-size: 16px; }
.live__in b { font-family: var(--display); font-weight: 900; font-size: 22px; letter-spacing: .08em; white-space: nowrap; }
.live__title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.live__dot { width: 12px; height: 12px; border-radius: 50%; background: var(--paper); animation: pulse 1.2s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .2; } }
.camp { padding: 72px 0 0; }
.camp__in { display: flex; flex-wrap: wrap; align-items: baseline; gap: 16px 40px; }
.camp__list { list-style: none; margin: 0; padding: 0; flex: 1 1 600px; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.camp__list a { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 64px; padding: 14px 20px; border: 2px solid var(--paper); font-weight: 900; text-decoration: none; }
.camp__list a:hover { background: var(--paper); color: var(--ink); }
.apply-line { margin: -24px 0 0; font-size: 15px; font-weight: 700; }
.apply-line a { color: var(--red-ink); }
@media (prefers-reduced-motion: reduce) { .live__dot { animation: none; } }

/* ---------- athlete faces (top) ---------- */
.faces { list-style: none; margin: 0; padding: 0 0 8px; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(180px, 1fr); gap: 4px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
.face { scroll-snap-align: start; }
.face a { display: block; text-decoration: none; color: var(--ink); }
.face__img { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--ink); }
.face__img img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.1); transition: filter .3s ease, transform .4s ease; }
.face a:hover .face__img img, .face a:focus-visible .face__img img { filter: none; transform: scale(1.04); }
.face__img::after { content: ""; position: absolute; left: -10%; right: -10%; bottom: 14%; height: 5px; background: var(--red); transform: rotate(var(--axis)) scaleX(0); transform-origin: left; transition: transform .35s ease; }
.face a:hover .face__img::after { transform: rotate(var(--axis)) scaleX(1); }
.face__noimg { display: flex; align-items: center; justify-content: center; height: 100%; font-family: var(--display); font-weight: 900; font-size: 48px; color: #2A2A2A; }
.face__meta { display: flex; flex-direction: column; padding: 10px 2px 0; line-height: 1.25; }
.face__app { font-size: 12px; font-weight: 700; }
.face__name { font-size: 20px; font-weight: 900; }
.face__en { font-family: var(--display); font-weight: 700; font-size: 13px; letter-spacing: .04em; }
@media (min-width: 1100px) { .faces { grid-auto-flow: row; grid-template-columns: repeat(6, minmax(0, 1fr)); overflow: visible; } }
@media (prefers-reduced-motion: reduce) { .face__img img, .face__img::after { transition: none; } }

/* =========================================================
   INNER PAGES（ニュース・選手・大会 など）
   ========================================================= */
.phero { position: relative; overflow: hidden; background: var(--ink); border-bottom: 6px solid var(--red); }
.phero__in { position: relative; padding-top: 88px; padding-bottom: 72px; display: flex; flex-direction: column; gap: 14px; }
.phero__title { margin: 0; font-family: var(--display); font-weight: 900; font-size: clamp(72px, 11vw, 168px); line-height: .82; letter-spacing: .01em; }
.phero__sub { margin: 0; font-size: clamp(18px, 2vw, 24px); font-weight: 900; }
.phero__lead { margin: 6px 0 0; max-width: 640px; color: var(--soft); font-size: 15px; }
.phero::after { content: ""; position: absolute; right: -6%; top: 26%; width: 46%; height: 72px; background: var(--red); transform: rotate(var(--axis)); opacity: .9; }
.crumbs { font-size: 13px; color: var(--mute); display: flex; flex-wrap: wrap; gap: 6px; }
.crumbs a { text-decoration: none; color: var(--mute); }
.crumbs a:hover { color: var(--red); }
@media (max-width: 700px) { .phero::after { width: 70%; top: 18%; height: 44px; } }

.paper { background: var(--paper); color: var(--ink); }
.paper a:hover { color: var(--red-ink); }
.sec { padding: 88px 0; }
.sec__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: 32px; }
.sec__head h2 { margin: 0; font-size: clamp(28px, 3vw, 44px); font-weight: 900; line-height: 1.2; }

.chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.chips a { display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border: 2px solid currentColor; font-size: 14px; font-weight: 700; text-decoration: none; }
.chips a[aria-current="true"] { background: var(--red); border-color: var(--red); color: var(--paper); }
.paper .chips a[aria-current="true"] { color: var(--paper); }

/* ニュース（ポスター型サムネイル） */
.posters { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 40px 24px; }
.poster a { display: flex; flex-direction: column; gap: 12px; text-decoration: none; }
.poster__img { display: block; aspect-ratio: 4 / 5; overflow: hidden; background: #E6E6E6; }
.poster__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.poster a:hover .poster__img img { transform: scale(1.03); }
.poster__meta { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; font-size: 12px; font-weight: 700; color: #4A4A4A; }
.poster__date { font-family: var(--display); font-weight: 800; font-size: 17px; color: var(--ink); }
.poster__title { font-size: 17px; font-weight: 900; line-height: 1.5; }
.poster__noimg { display: flex; align-items: center; justify-content: center; height: 100%; background: var(--ink); color: #2A2A2A; font-family: var(--display); font-weight: 900; font-size: 64px; }

.pager { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 8px; margin-top: 56px; }
.pager a, .pager span { min-width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 0 14px; border: 2px solid var(--ink); font-family: var(--display); font-weight: 800; font-size: 18px; text-decoration: none; }
.pager span[aria-current="page"] { background: var(--ink); color: var(--paper); }
.pager .is-gap { border: 0; }

.toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 40px; }
.select { font: inherit; font-weight: 700; min-height: 44px; padding: 0 12px; border: 2px solid var(--ink); background: var(--paper); color: var(--ink); }

/* 選手一覧 */
.roster-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 40px 16px; }
.roster-grid .face__name { font-size: 22px; }
.roster-grid .face__catch { font-size: 13px; color: #4A4A4A; margin-top: 6px; line-height: 1.6; }
.roster-grid .face__honor { display: inline-block; margin-top: 8px; font-size: 12px; font-weight: 700; background: var(--ink); color: var(--paper); padding: 4px 8px; }
.face--dark a { color: var(--paper); }
.face--dark .face__catch { color: var(--soft); }

/* 選手ページ */
.ath { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 48px; align-items: end; padding-top: 56px; padding-bottom: 72px; }
.ath__photo { position: relative; aspect-ratio: 4 / 5; overflow: hidden; background: var(--ink-2); }
.ath__photo img { width: 100%; height: 100%; object-fit: cover; }
.ath__photo::after { content: ""; position: absolute; left: -10%; right: -10%; bottom: 16%; height: 8px; background: var(--red); transform: rotate(var(--axis)); }
.ath__body { display: flex; flex-direction: column; gap: 18px; }
.ath__label { font-family: var(--display); font-weight: 800; font-size: 18px; letter-spacing: .14em; color: var(--red); }
.ath__name { margin: 0; font-size: clamp(48px, 7vw, 104px); font-weight: 900; line-height: 1.02; letter-spacing: -.01em; }
.ath__en { font-family: var(--display); font-weight: 800; font-size: clamp(24px, 3vw, 40px); color: var(--mute); line-height: 1; letter-spacing: .04em; }
.ath__catch { margin: 0; font-size: clamp(18px, 2vw, 24px); font-weight: 900; }
.ath__career { display: inline-flex; align-self: flex-start; gap: 10px; align-items: baseline; border-top: 3px solid var(--paper); padding-top: 12px; }
.ath__career b { font-family: var(--display); font-weight: 900; font-size: 22px; color: var(--red); }
.ath__nav { display: flex; justify-content: space-between; gap: 16px; border-top: 1px solid var(--line); padding: 20px 0; font-weight: 700; }
.ath__nav a { text-decoration: none; }
@media (max-width: 860px) { .ath { grid-template-columns: 1fr; gap: 28px; padding-top: 32px; } }

.bests { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-top: 3px solid var(--ink); }
.bests div { padding: 14px 8px 14px 0; display: flex; flex-direction: column; gap: 2px; border-bottom: 1px solid #D0D0D0; }
.bests span { font-family: var(--display); font-weight: 800; font-size: 15px; letter-spacing: .1em; color: #4A4A4A; }
.bests b { font-family: var(--display); font-weight: 900; font-size: clamp(26px, 3vw, 44px); line-height: 1; }
.bests .is-fav b { color: var(--red); }
.bests .is-empty b { color: #C8C8C8; }
@media (max-width: 640px) { .bests { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); margin: 0; border-top: 3px solid var(--ink); }
.dl div { display: flex; gap: 16px; padding: 14px 0; border-bottom: 1px solid #D0D0D0; }
.dl dt { width: 96px; flex: 0 0 96px; font-size: 13px; font-weight: 700; color: #4A4A4A; }
.dl dd { margin: 0; font-weight: 700; }

.honors { list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--ink); }
.honors li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 24px; padding: 18px 0; border-bottom: 1px solid #D0D0D0; }
.honors .y { font-family: var(--display); font-weight: 800; font-size: 22px; width: 64px; }
.honors .e { flex: 1 1 320px; font-weight: 700; }
.honors .r { font-weight: 900; }
.honors .r.is-gold { color: var(--red-ink); }
.honors .jsh { font-size: 11px; font-weight: 900; background: var(--red); color: var(--paper); padding: 2px 6px; }

.tabs { display: flex; flex-wrap: wrap; gap: 0; border-bottom: 3px solid var(--ink); margin-bottom: 24px; }
.tabs a { display: inline-flex; align-items: center; min-height: 48px; padding: 0 20px; font-family: var(--display); font-weight: 900; font-size: 20px; letter-spacing: .06em; text-decoration: none; color: #6A6A6A; }
.tabs a[aria-current="true"] { background: var(--ink); color: var(--paper); }
.tbl-box { overflow-x: auto; }
.tbl { width: 100%; border-collapse: collapse; min-width: 640px; font-size: 15px; }
.tbl th { text-align: left; font-family: var(--display); font-weight: 800; font-size: 15px; letter-spacing: .08em; padding: 10px 8px; border-bottom: 2px solid var(--ink); white-space: nowrap; }
.tbl td { padding: 14px 8px; border-bottom: 1px solid #D0D0D0; vertical-align: top; }
.tbl td.num { font-family: var(--display); font-weight: 800; font-size: 20px; white-space: nowrap; }
.tbl td.num.big { font-size: 24px; }
.tbl a { font-weight: 700; }
.empty { color: #6A6A6A; font-weight: 700; padding: 24px 0; }

.qa { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 0 48px; }
.qa div { padding: 20px 0; border-bottom: 1px solid var(--line); }
.qa dt { font-size: 14px; font-weight: 700; color: var(--mute); }
.qa dt::before { content: "Q. "; font-family: var(--display); color: var(--red); font-weight: 900; }
.qa dd { margin: 6px 0 0; font-size: 18px; font-weight: 700; line-height: 1.7; }

.cta { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px; padding: 56px 0; }
.cta p { margin: 0; font-size: clamp(26px, 3vw, 40px); font-weight: 900; line-height: 1.3; }

/* ニュース記事 */
.art__meta { margin: 8px 0 0; display: flex; gap: 16px; align-items: baseline; font-size: 14px; font-weight: 700; color: var(--soft); }
.art__meta time { font-family: var(--display); font-weight: 800; font-size: 22px; color: var(--paper); }
.art__title { margin: 0; max-width: 980px; font-size: clamp(28px, 3.6vw, 52px); font-weight: 900; line-height: 1.35; }
.art { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 64px; padding-top: 56px; padding-bottom: 96px; }
@media (max-width: 960px) { .art { grid-template-columns: 1fr; gap: 48px; } }
.art__main { min-width: 0; max-width: 780px; display: flex; flex-direction: column; gap: 40px; }
.art__hero { margin: 0; }
.art__hero img { width: 100%; height: auto; }
.art__lead { font-size: 19px; font-weight: 700; line-height: 2; border-left: 0; border-top: 3px solid var(--ink); padding-top: 20px; }
.art__lead p { margin: 0 0 1em; }
.art__result { display: flex; flex-direction: column; gap: 16px; background: #F4F4F4; padding: 28px; }
.art__result-head h2 { margin: 4px 0 0; font-size: 22px; font-weight: 900; }
.art__result tr.is-podium td { background: #FFF; }
.rank-podium { color: var(--red-ink); }
.prose { font-size: 17px; line-height: 2.05; overflow-wrap: anywhere; }
.prose > * { max-width: 100%; }
.prose h2 { font-size: 26px; font-weight: 900; line-height: 1.45; margin: 2.2em 0 .8em; padding-top: 16px; border-top: 3px solid var(--ink); }
.prose h3 { font-size: 21px; font-weight: 900; margin: 1.8em 0 .6em; }
.prose h4 { font-size: 18px; font-weight: 900; margin: 1.6em 0 .5em; }
.prose p { margin: 0 0 1.4em; }
.prose a { color: var(--red-ink); text-decoration: underline; text-underline-offset: 3px; }
.prose img { height: auto; margin: 8px 0; }
.prose ul, .prose ol { padding-left: 1.4em; margin: 0 0 1.4em; }
.prose blockquote { margin: 1.6em 0; padding: 4px 0 4px 20px; border-left: 4px solid var(--red); font-weight: 700; }
.prose table { width: 100%; border-collapse: collapse; display: block; overflow-x: auto; }
.prose th, .prose td { border-bottom: 1px solid #D0D0D0; padding: 10px 8px; text-align: left; }
.prose iframe { max-width: 100%; }
.prose .article-ad-label { font-size: 12px; color: #6A6A6A; text-align: center; margin: 2em 0 .4em; }
.prose .adsense { margin: 0 0 2em; }
.share { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; border-top: 1px solid #D0D0D0; padding-top: 24px; }
.share a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border: 2px solid var(--ink); font-weight: 900; text-decoration: none; }
.share a:hover { background: var(--ink); color: var(--paper); }
.art__pn { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; border-top: 3px solid var(--ink); padding-top: 20px; }
.art__pn a { display: flex; flex-direction: column; gap: 4px; text-decoration: none; }
.art__pn small { font-size: 12px; font-weight: 700; color: #6A6A6A; }
.art__pn span { font-weight: 900; line-height: 1.5; }
.art__side { display: flex; flex-direction: column; gap: 40px; }
@media (min-width: 961px) { .art__side { position: sticky; top: 100px; align-self: start; } }
.art__side-h { margin: 0 0 12px; font-family: var(--display); font-weight: 800; font-size: 15px; letter-spacing: .12em; border-bottom: 3px solid var(--ink); padding-bottom: 8px; }
.mini-faces { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.mini-faces a { display: flex; gap: 14px; align-items: center; text-decoration: none; }
.mini-faces__img { width: 56px; height: 70px; flex: 0 0 56px; background: var(--ink); overflow: hidden; }
.mini-faces__img img { width: 100%; height: 100%; object-fit: cover; }
.mini-faces b { display: block; font-size: 17px; font-weight: 900; }
.mini-faces small { font-family: var(--display); font-weight: 700; font-size: 12px; color: #6A6A6A; }
.side-event { display: flex; flex-direction: column; gap: 4px; text-decoration: none; padding: 16px; background: var(--ink); color: var(--paper); }
.side-event small { font-family: var(--display); font-weight: 800; font-size: 16px; color: var(--red); }
.side-event b { font-weight: 900; line-height: 1.5; }
.paper .side-event:hover { color: var(--paper); background: #222; }
.side-cta { background: var(--red); color: var(--paper); padding: 24px; display: flex; flex-direction: column; gap: 16px; }
.side-cta p { margin: 0; font-weight: 900; line-height: 1.7; }
.side-cta .btn { background: var(--ink); height: 52px; }
.posters--dark .poster a { color: var(--paper); }
.posters--dark .poster__meta { color: var(--soft); }
.posters--dark .poster__date { color: var(--paper); }

/* 大会一覧 */
.search { display: flex; gap: 8px; flex: 1 1 320px; max-width: 480px; }
.search input { flex: 1; min-width: 0; font: inherit; min-height: 48px; padding: 0 14px; border: 2px solid currentColor; background: transparent; color: inherit; }
.list-h { margin: 56px 0 0; font-size: 22px; font-weight: 900; display: flex; align-items: baseline; gap: 12px; }
.list-h .display { font-size: 56px; }
.evlist { list-style: none; margin: 16px 0 0; padding: 0; border-top: 3px solid var(--paper); }
.evrow { border-bottom: 1px solid var(--line); }
.evrow__main { display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; gap: 8px 32px; align-items: center; padding: 22px 0; text-decoration: none; }
.evrow__date { font-family: var(--display); font-weight: 900; font-size: 40px; line-height: .9; display: flex; flex-direction: column; }
.evrow__date small { font-size: 18px; color: var(--mute); }
.evrow.is-upcoming .evrow__date { color: var(--red); }
.evrow__body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.evrow__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.evrow__tags span { font-size: 11px; font-weight: 700; border: 1px solid var(--line); padding: 2px 8px; color: var(--soft); }
.evrow__title { font-size: 20px; font-weight: 900; line-height: 1.4; }
.evrow__sub { font-size: 13px; color: var(--mute); }
.evrow__go { font-weight: 900; font-size: 14px; white-space: nowrap; }
.evrow__main:hover .evrow__title { color: var(--red); }
.evrow__extra { display: flex; gap: 16px; padding: 0 0 18px 152px; font-size: 13px; font-weight: 700; }
.evrow__extra a { color: var(--red); }
@media (max-width: 700px) {
  .evrow__main { grid-template-columns: 76px minmax(0, 1fr); }
  .evrow__date { font-size: 30px; }
  .evrow__go { display: none; }
  .evrow__extra { padding-left: 108px; }
}

/* ===== event detail ===== */
.ev-video { position: relative; aspect-ratio: 16 / 9; background: var(--ink); }
.ev-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ev-updates { list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--ink); }
.ev-updates li { padding: 20px 0; border-bottom: 1px solid #D0D0D0; }
.ev-updates time { font-family: var(--display); font-weight: 800; font-size: 18px; color: var(--red-ink); letter-spacing: .06em; }
.ev-updates h3 { margin: 4px 0 8px; font-size: 19px; font-weight: 900; }
.ev-updates .prose { font-size: 16px; line-height: 1.9; }
.tbl--score th[scope="row"] { text-align: left; font-family: inherit; font-size: 15px; font-weight: 700; letter-spacing: 0; padding: 14px 8px; border-bottom: 1px solid #D0D0D0; white-space: nowrap; }
.tbl--score .r { text-align: right; }
.tbl--score td.num { font-size: 18px; }
.tbl--score td.num.big { font-size: 22px; }
.tbl--score tr.is-jsh td, .tbl--score tr.is-jsh th { background: var(--tint); }
.tbl--score tr.is-jsh th { font-weight: 900; box-shadow: inset 4px 0 0 var(--red); }
.jsh-tag { display: inline-block; margin-left: 8px; padding: 1px 6px; background: var(--red); color: #FFF; font-family: var(--display); font-weight: 800; font-size: 12px; letter-spacing: .08em; vertical-align: 2px; }
.art__main > * { min-width: 0; max-width: 100%; }
@media (max-width: 640px) { .ft__cols { flex: 1 1 100%; min-width: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 20px; } }
html, body { overflow-x: clip; }
.jsh-sum { background: var(--ink); color: var(--paper); padding: 20px 24px; margin-bottom: 32px; border-left: 8px solid var(--red); }
.jsh-sum__h { margin: 0 0 8px; font-family: var(--display); font-weight: 800; font-size: 14px; letter-spacing: .16em; color: var(--red); }
.jsh-sum ul { list-style: none; margin: 0; padding: 0; }
.jsh-sum li { display: grid; grid-template-columns: 88px 1fr auto auto; gap: 4px 16px; align-items: baseline; padding: 10px 0; border-top: 1px solid rgba(255,255,255,.16); }
.jsh-sum li:first-child { border-top: 0; }
.jsh-sum .k { font-family: var(--display); font-weight: 800; font-size: 15px; letter-spacing: .06em; color: var(--soft); }
.jsh-sum b { font-size: 17px; font-weight: 900; }
.jsh-sum .v { font-weight: 700; }
.jsh-sum .v em { font-style: normal; font-family: var(--display); font-weight: 900; font-size: 32px; color: var(--red); margin-right: 2px; }
.jsh-sum .s { font-family: var(--display); font-weight: 800; font-size: 22px; }
@media (max-width: 640px) { .jsh-sum li { grid-template-columns: 1fr auto; } .jsh-sum .k { grid-column: 1 / -1; } }

/* ===== partner ===== */
.pt-why { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px 64px; }
.pt-why__h { margin: 8px 0 0; font-size: clamp(32px, 4.4vw, 60px); font-weight: 900; line-height: 1.2; }
.pt-why__body p { font-size: 17px; line-height: 2; margin: 0 0 1.2em; }
.pt-roles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 0; border-top: 3px solid var(--paper); }
.pt-roles li { padding: 28px 24px 28px 0; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 8px; }
.pt-roles .n { font-family: var(--display); font-weight: 900; font-size: 56px; line-height: 1; color: var(--red); }
.pt-roles b { font-size: 22px; font-weight: 900; }
.pt-roles p { margin: 0; color: var(--soft); line-height: 1.9; }
.pt-ways { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.pt-way { display: flex; flex-direction: column; gap: 8px; padding: 28px; border: 3px solid var(--ink); text-decoration: none; color: var(--ink); line-height: 1.8; transition: transform .15s ease, box-shadow .15s ease; }
.pt-way:hover { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--red); color: var(--ink); }
.pt-way__k { font-family: var(--display); font-weight: 800; letter-spacing: .14em; color: var(--red-ink); }
.pt-way b { font-size: 24px; font-weight: 900; }
.pt-way__p { font-family: var(--display); font-weight: 900; font-size: 26px; }
.pt-plans { min-width: 600px; background: transparent; }
.pt-plans th[scope="row"] { font-family: inherit; font-weight: 700; letter-spacing: 0; font-size: 15px; border-bottom: 1px solid var(--line); white-space: normal; }
.pt-plans thead th { font-family: inherit; font-weight: 900; letter-spacing: 0; text-align: center; border-bottom-color: var(--paper); }
.pt-plans thead th:first-child { text-align: left; }
.pt-plans td { text-align: center; border-bottom-color: var(--line); color: var(--red); font-weight: 900; }
.pt-plans tr.price td { font-family: var(--display); font-size: 28px; color: var(--paper); }
.pt-notes { margin: 20px 0 0; padding-left: 1.2em; font-size: 13px; color: var(--soft); line-height: 1.9; }
.pt-acts { margin-top: 48px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px 32px; }
.pt-acts div { border-top: 3px solid var(--red); padding-top: 16px; }
.pt-acts .k { font-family: var(--display); font-weight: 900; font-size: 28px; }
.pt-acts b { display: block; margin: 4px 0 6px; font-weight: 900; }
.pt-acts p { margin: 0; font-size: 14px; color: var(--soft); line-height: 1.9; }
.pt-lim { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; border-top: 3px solid var(--ink); }
.pt-lim li { display: flex; flex-direction: column; padding: 16px 0; border-bottom: 1px solid #D0D0D0; }
.pt-lim span { font-family: var(--display); font-weight: 800; letter-spacing: .1em; }
.pt-lim b { font-family: var(--display); font-weight: 900; font-size: 36px; }
@media (max-width: 800px) { .pt-why { grid-template-columns: 1fr; } }
.sec:not(.paper) .credits__group, .sec:not(.paper) .credits__group a, .sec:not(.paper) .credits__logos a { color: var(--soft); }

/* ===== ATHLETE'S GEAR ===== */
.pr-tag { display: inline-flex; align-items: center; height: 22px; padding: 0 7px; border: 2px solid currentColor; font-family: var(--display); font-weight: 900; font-size: 13px; letter-spacing: .1em; line-height: 1; margin-right: 10px; }
.pr-tag--on { background: var(--red); border-color: var(--red); color: #FFF; }
.pr-bar { background: #F2F2F2; color: var(--ink); font-size: 13px; font-weight: 700; }
.pr-bar .wrap { padding-top: 12px; padding-bottom: 12px; display: flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.gear-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 40px 24px; }
.gear { display: flex; flex-direction: column; gap: 6px; }
.gear__a { display: flex; flex-direction: column; gap: 8px; text-decoration: none; color: inherit; }
.gear__img { position: relative; aspect-ratio: 4 / 5; background: #E6E6E6; overflow: hidden; display: block; }
.gear__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.gear__a:hover .gear__img img { transform: scale(1.04); }
.gear__img .pr-tag { position: absolute; top: 10px; left: 10px; margin: 0; }
.gear__meta { font-family: var(--display); font-weight: 800; font-size: 13px; letter-spacing: .08em; color: var(--red-ink); }
.gear__title { font-weight: 900; font-size: 17px; line-height: 1.5; }
.gear__quote { font-size: 14px; font-weight: 700; color: #4A4A4A; border-left: 3px solid var(--red); padding-left: 10px; }
.gear__by { font-size: 13px; font-weight: 700; }
.gear__by a { color: var(--red-ink); }
.gear-voice { border: 3px solid var(--ink); padding: 20px 24px; margin: 0 0 40px; display: flex; flex-direction: column; gap: 12px; }
.gear-voice__q { margin: 0; font-size: 20px; font-weight: 900; line-height: 1.6; }
.gear-voice__note { margin: 0; font-size: 13px; font-weight: 700; color: #4A4A4A; }
.gear-buy { margin: 48px 0 0; padding: 24px; background: var(--ink); color: var(--paper); }
.gear-buy h2 { margin: 0 0 16px; font-size: 22px; font-weight: 900; display: flex; align-items: center; }
.gear-buy__links { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.gear-buy__btn { justify-content: space-between; background: var(--paper); color: var(--ink); height: auto; min-height: 60px; padding: 10px 20px; }
.gear-buy__btn:hover { color: var(--ink); background: #FFF; }
.gear-buy__btn small { display: block; font-size: 12px; font-weight: 700; color: #4A4A4A; }
.gear-buy__note { margin: 12px 0 0; font-size: 12px; color: var(--soft); }
.gear-side { display: flex; flex-direction: column; gap: 10px; }
.gear-side img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.gear-side .btn { height: 52px; }
.gear-side small { font-size: 12px; color: #6A6A6A; }

/* ===== team intro / academy ===== */
.ti-hero { margin: 0; aspect-ratio: 21 / 9; overflow: hidden; background: var(--ink); }
.ti-hero img { width: 100%; height: 100%; object-fit: cover; }
.ti-body { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px 64px; }
.ti-nums { margin: 40px 0 0; display: flex; flex-direction: column; border-top: 3px solid var(--ink); }
.ti-nums div { padding: 16px 0; border-bottom: 1px solid #D0D0D0; }
.ti-nums dt { font-size: 13px; font-weight: 700; color: #4A4A4A; }
.ti-nums dd { margin: 0; font-weight: 900; }
.ti-nums b { font-family: var(--display); font-weight: 900; font-size: 64px; line-height: 1; color: var(--red); margin-right: 4px; }
.ti-nums b.ti-nums__s { font-size: 44px; color: var(--ink); }
.ti-nums small { display: block; font-size: 13px; font-weight: 700; margin-top: 4px; }
.ti-sns { margin: 40px 0 0; font-family: var(--display); font-weight: 800; letter-spacing: .1em; display: flex; flex-wrap: wrap; gap: 8px 24px; }
.ti-sns a { color: var(--paper); }
.ac-groups { display: flex; flex-direction: column; gap: 48px; }
.ac-group { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 16px 40px; border-top: 3px solid var(--ink); padding-top: 20px; }
.ac-group__h { margin: 0; font-family: var(--display); font-weight: 900; font-size: 40px; line-height: 1; color: var(--red); }
.ac-group dl { margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px 32px; }
.ac-group dt { font-weight: 900; font-size: 18px; display: flex; flex-direction: column; gap: 2px; }
.ac-group dt span { font-family: var(--display); font-weight: 800; font-size: 14px; letter-spacing: .12em; color: var(--red-ink); }
.ac-group dd { margin: 6px 0 0; font-size: 15px; line-height: 1.9; }
.ac-links .pt-way { border-color: var(--paper); color: var(--paper); }
.ac-links .pt-way:hover { color: var(--paper); }
.ac-links .pt-way__k { color: var(--red); }
@media (max-width: 800px) { .ti-body, .ac-group { grid-template-columns: 1fr; } }

/* ===== support hub ===== */
.sp-list { list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--ink); }
.sp-list li { padding: 12px 0; border-bottom: 1px solid #D0D0D0; font-weight: 700; display: flex; gap: 16px; align-items: baseline; flex-wrap: wrap; }
.sp-list b { font-family: var(--display); font-weight: 900; font-size: 18px; letter-spacing: .06em; color: var(--red-ink); min-width: 150px; }
.sp-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 24px; padding: 20px 24px; border: 2px solid var(--line); margin-bottom: 32px; }
.sp-status b { font-size: 18px; font-weight: 900; }
.sp-status span { color: var(--soft); font-size: 14px; }
.sp-status.is-open { border-color: var(--red); }
.sp-status .btn { margin-left: auto; height: 52px; }
.sp-plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.sp-plans > div { border-top: 3px solid var(--red); padding-top: 16px; }
.sp-plans .k { font-family: var(--display); font-weight: 800; letter-spacing: .14em; color: var(--red); }
.sp-plans b { display: block; font-size: 22px; font-weight: 900; margin-top: 4px; }
.sp-plans .p { margin: 8px 0; font-family: var(--display); font-weight: 900; font-size: 48px; line-height: 1; }
.sp-plans .p small { font-size: 18px; font-weight: 700; margin-left: 4px; }
.sp-plans p { margin: 0; color: var(--soft); line-height: 1.9; }

/* ===== home movie ===== */
.movies { padding: 96px 0 150px; }
.mv { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 32px; align-items: stretch; }
.mv a { text-decoration: none; color: var(--paper); }
.mv__feature { position: relative; display: block; min-height: 380px; overflow: hidden; background: #1A1A1A; }
.mv__img { position: absolute; inset: 0; }
.mv__img, .mv__img img { display: block; width: 100%; height: 100%; }
.mv__img img { object-fit: cover; transition: transform .5s ease; }
.mv__feature:hover .mv__img img { transform: scale(1.03); }
.mv__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,10,10,0) 40%, rgba(10,10,10,.92) 100%); }
.mv__no { position: absolute; top: 12px; left: 18px; font-family: var(--display); font-weight: 900; font-size: 64px; line-height: 1; color: var(--paper); text-shadow: 0 2px 12px rgba(0,0,0,.5); }
.mv__body { position: absolute; left: 24px; right: 160px; bottom: 22px; display: flex; flex-direction: column; gap: 10px; }
.mv__title { font-size: clamp(18px, 1.8vw, 24px); font-weight: 900; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mv__chip { align-self: flex-start; display: inline-block; padding: 3px 8px; background: var(--paper); color: var(--ink); font-family: var(--display); font-weight: 800; font-size: 12px; letter-spacing: .1em; line-height: 1.2; }
.mv__play { position: absolute; right: 0; bottom: 0; display: flex; align-items: center; gap: 12px; padding: 0 22px; height: 64px; background: var(--red); font-family: var(--display); font-weight: 900; font-size: 18px; letter-spacing: .14em; clip-path: polygon(14px 0, 100% 0, 100% 100%, 0 100%); padding-left: 32px; transition: padding .2s ease; }
.mv__play i, .mv__thumb i { display: block; width: 14px; height: 16px; background: currentColor; clip-path: polygon(0 0, 100% 50%, 0 100%); }
.mv__feature:hover .mv__play { padding-right: 32px; }
.mv__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; border-top: 3px solid var(--paper); }
.mv__list li { border-bottom: 1px solid rgba(255,255,255,.16); }
.mv__list a { display: grid; grid-template-columns: 40px 144px minmax(0, 1fr); gap: 16px; align-items: center; padding: 14px 0; position: relative; transition: background .2s ease, padding .2s ease; }
.mv__list a::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--red); transition: width .2s ease; }
.mv__list a:hover { padding-left: 14px; background: rgba(255,255,255,.04); }
.mv__list a:hover::before { width: 4px; }
.mv__n { font-family: var(--display); font-weight: 900; font-size: 26px; color: var(--mute); }
.mv__list a:hover .mv__n { color: var(--red); }
.mv__thumb { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #1A1A1A; }
.mv__thumb img { width: 100%; height: 100%; object-fit: cover; }
.mv__thumb i { position: absolute; right: 0; bottom: 0; width: 28px; height: 28px; background: var(--red); clip-path: none; }
.mv__thumb i::after { content: ""; position: absolute; left: 10px; top: 8px; width: 10px; height: 12px; background: var(--paper); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.mv__txt { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.mv__txt .mv__chip { background: transparent; color: var(--mute); padding: 0; }
.mv__t { font-size: 15px; font-weight: 800; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 960px) {
  .mv { grid-template-columns: 1fr; }
  .mv__feature { min-height: 0; aspect-ratio: 16 / 9; }
}
@media (max-width: 560px) {
  .mv__no { font-size: 44px; }
  .mv__body { right: 20px; bottom: 76px; left: 16px; }
  .mv__feature { aspect-ratio: 4 / 3; }
  .mv__shade { background: linear-gradient(180deg, rgba(10,10,10,.1) 10%, rgba(10,10,10,.95) 75%); }
  .mv__list a { grid-template-columns: 112px minmax(0, 1fr); }
  .mv__n { display: none; }
}

/* ===== forms / docs ===== */
.form { display: flex; flex-direction: column; gap: 20px; }
.form__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
.form__row { display: flex; flex-direction: column; gap: 6px; }
.form__row > label { font-weight: 900; font-size: 15px; }
.form .req { display: inline-block; margin-left: 8px; padding: 0 6px; background: var(--red); color: #FFF; font-size: 11px; font-weight: 700; vertical-align: 2px; }
.form input[type="text"], .form input[type="email"], .form input[type="tel"], .form input[type="number"], .form select, .form textarea { width: 100%; min-height: 52px; padding: 12px 14px; border: 2px solid var(--ink); background: #FFF; color: var(--ink); font: inherit; font-size: 16px; border-radius: 0; }
.form textarea { min-height: 200px; line-height: 1.8; }
.form input:focus, .form select:focus, .form textarea:focus { outline: 3px solid var(--red); outline-offset: 2px; }
.form__check { flex-direction: row; align-items: center; gap: 12px; }
.form__check input { width: 24px; height: 24px; accent-color: var(--red); }
.form__check label { font-weight: 700; }
.form__check a { color: var(--red-ink); }
.form .btn { align-self: flex-start; }
.form__note { margin: 0; font-size: 13px; color: #4A4A4A; line-height: 1.8; }
.form-alert { border-left: 6px solid var(--red); background: var(--tint); padding: 16px 20px; margin-bottom: 24px; font-weight: 700; }
.form-alert ul { margin: 8px 0 0; padding-left: 1.2em; font-weight: 400; }
.doc-toc { margin: 0; padding-left: 1.4em; font-size: 14px; line-height: 2; }
.doc-toc a { text-decoration: none; }
.doc-toc a:hover { color: var(--red-ink); }
.paper .doc-roles { border-top-color: var(--ink); }
.paper .doc-roles li { border-bottom-color: #D0D0D0; }
.paper .doc-roles p { color: #4A4A4A; }

/* ===== partner logos on black：白一色に統一 =====
   白背景のロゴは反転で背景が黒になり、screen合成で黒背景に溶ける。透過PNGも白ロゴになる。 */
.sec:not(.paper) .credits__logos { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px 16px; flex: 1 1 520px; }
.sec:not(.paper) .credits__logos a { justify-content: center; height: 110px; padding: 20px 16px; transition: background .2s ease; }
.sec:not(.paper) .credits__logos img { max-height: 56px; max-width: 100%; object-fit: contain; filter: grayscale(1) invert(1) brightness(1.7) contrast(2.4); mix-blend-mode: screen; opacity: .85; transition: opacity .2s ease; }
.sec:not(.paper) .credits__logos a:hover { background: rgba(255,255,255,.05); }
.sec:not(.paper) .credits__logos a:hover img { opacity: 1; }

/* 1項目＝1行の定義リスト（パートナー概要など） */
.dl.dl--rows { display: flex; flex-direction: column; grid-template-columns: none; }
.dl.dl--rows > div { display: grid; grid-template-columns: 7em minmax(0, 1fr); align-items: baseline; gap: 16px; padding: 14px 0; }
.dl.dl--rows dt { white-space: nowrap; }
.dl.dl--rows dd { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 480px) { .dl.dl--rows dd { white-space: normal; } .dl.dl--rows > div { grid-template-columns: 5.5em minmax(0, 1fr); } }

/* ===== ニュース本文：記事ごとの装飾を共通デザインにそろえる =====
   記事の custom_css は使わない。本文のよくある部品（jsh-* / kokuspo-* / article-* など）をここで統一する */
.prose--news section, .prose--news article, .prose--news header, .prose--news footer, .prose--news > div { display: block; margin: 0; padding: 0; background: none; border: 0; color: inherit; }
.prose--news h1 { font-size: 26px; font-weight: 900; line-height: 1.45; margin: 2.2em 0 .8em; padding-top: 16px; border-top: 3px solid var(--ink); }
.prose--news > :first-child, .prose--news > :first-child > :first-child, .prose--news > :first-child > :first-child > :first-child { margin-top: 0; }
.prose--news h2 { position: relative; padding-left: 0; }
.prose--news h2::before { content: ""; position: absolute; left: 0; top: -3px; width: 64px; height: 3px; background: var(--red); }
.prose--news h1::before { content: ""; display: block; width: 64px; height: 3px; background: var(--red); margin: -19px 0 16px; }
.prose--news h1 + h2 { border-top: 0; padding-top: 0; margin-top: -.4em; font-size: 20px; }
.prose--news h1 + h2::before { display: none; }
.prose--news hr { border: 0; border-top: 1px solid #D0D0D0; margin: 2.4em 0; }
.prose--news svg { display: none; }
.prose--news strong { font-weight: 900; background: linear-gradient(transparent 62%, rgba(26,107,255,.2) 62%); }
.prose--news em { font-style: normal; color: var(--red-ink); font-weight: 900; }
.prose--news sup { font-size: .6em; }
/* リード・見出しまわり */
.prose--news .lead, .prose--news .jsh-lead, .prose--news .story-copy { font-size: 19px; font-weight: 700; line-height: 2; margin: 0 0 1.4em; }
.prose--news .jsh-label, .prose--news .article-kicker, .prose--news .kokuspo-hero__eyebrow, .prose--news header > p:first-child { display: block; margin: 0 0 .4em; font-family: var(--display); font-weight: 800; font-size: 14px; letter-spacing: .14em; color: var(--red-ink); text-transform: uppercase; }
.prose--news .jsh-head { }
.prose--news .jsh-pull { margin: 1.6em 0; padding: 4px 0 4px 20px; border-left: 4px solid var(--red); font-size: 20px; font-weight: 900; line-height: 1.8; }
/* ヒーロー系ブロック → シンプルな見出し＋情報 */
.prose--news .jsh-hero, .prose--news .kokuspo-hero, .prose--news .jsh-news-hero { padding: 0 0 8px; margin: 0 0 2em; }
.prose--news .jsh-hero-num { font-family: var(--display); font-weight: 900; font-size: 72px; line-height: 1; margin: 0; color: var(--red); }
.prose--news .jsh-hero-title { border-top: 0; padding-top: 0; margin-top: .2em; }
.prose--news .jsh-hero-title::before { display: none; }
.prose--news .jsh-hero-meta { display: flex; flex-direction: column; border-top: 3px solid var(--ink); margin: 1em 0; }
.prose--news .jsh-hero-meta > div { display: grid; grid-template-columns: 6em minmax(0, 1fr); gap: 16px; padding: 10px 0; border-bottom: 1px solid #D0D0D0; font-size: 14px; font-weight: 700; color: #4A4A4A; }
.prose--news .jsh-hero-meta strong { background: none; color: var(--ink); font-size: 16px; }
.prose--news .jsh-hero-tag { display: inline-block; padding: 4px 10px; background: var(--ink); color: var(--paper); font-weight: 900; font-size: 14px; }
/* カード・囲み */
.prose--news .jsh-card, .prose--news .member-block, .prose--news .kokuspo-card, .prose--news .jsh-support { display: block; margin: 1.6em 0; padding: 20px 24px; background: #F2F2F2; border-top: 3px solid var(--red); }
.prose--news .jsh-card h3, .prose--news .member-block h3, .prose--news .jsh-support h2 { margin-top: 0; border-top: 0; padding-top: 0; font-size: 18px; }
.prose--news .jsh-support h2::before { display: none; }
.prose--news .jsh-card ul, .prose--news .member-block ul { margin-bottom: 0; }
.prose--news .member-list { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.prose--news .member-list li { padding: 4px 12px; background: var(--paper); border: 2px solid var(--ink); font-weight: 900; }
.prose--news .jsh-price { font-family: var(--display); font-weight: 900; font-size: 36px; line-height: 1.2; margin: .2em 0 .6em; }
.prose--news .jsh-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin: 1.4em 0; }
.prose--news .jsh-grid > div { padding: 16px; background: var(--ink); color: var(--paper); font-weight: 900; text-align: center; line-height: 1.6; }
/* 国スポ形式（番号付き見出し＋日付カード） */
.prose--news .kokuspo-section { margin: 2.4em 0 0; }
.prose--news .kokuspo-section__heading { display: flex; align-items: center; gap: 16px; border-top: 3px solid var(--ink); padding-top: 12px; }
.prose--news .kokuspo-section__heading > span { font-family: var(--display); font-weight: 900; font-size: 48px; line-height: 1; color: var(--red); }
.prose--news .kokuspo-section__heading p { margin: 0; font-family: var(--display); font-weight: 800; font-size: 13px; letter-spacing: .14em; color: #6A6A6A; }
.prose--news .kokuspo-section__heading h3 { margin: 0; }
.prose--news .kokuspo-card { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 20px; }
.prose--news .kokuspo-card__date strong { display: block; background: none; font-family: var(--display); font-weight: 900; font-size: 36px; line-height: 1; }
.prose--news .kokuspo-card__date span { font-family: var(--display); font-weight: 800; letter-spacing: .12em; color: var(--red-ink); }
.prose--news .kokuspo-card__label { margin: 0; font-size: 13px; font-weight: 700; color: #4A4A4A; }
.prose--news .kokuspo-card h4 { margin: .2em 0 .6em; }
.prose--news .kokuspo-card__text { margin: .8em 0 0; font-size: 15px; }
/* 定義リスト・表 */
.prose--news dl { margin: 0 0 1.4em; border-top: 1px solid #D0D0D0; }
.prose--news dl > div { display: grid; grid-template-columns: 6em minmax(0, 1fr); gap: 16px; padding: 8px 0; border-bottom: 1px solid #D0D0D0; }
.prose--news dt { font-weight: 700; color: #4A4A4A; font-size: 14px; }
.prose--news dd { margin: 0; font-weight: 700; }
.prose--news table { border: 0 !important; border-top: 3px solid var(--ink) !important; margin: 0 0 1.6em; }
.prose--news th, .prose--news td { border: 0 !important; border-bottom: 1px solid #D0D0D0 !important; padding: 12px 8px !important; vertical-align: top; font-size: 15px; }
.prose--news th { width: 7em; white-space: nowrap; color: #4A4A4A; font-weight: 700; }
/* ボタン */
.prose--news .jsh-cta-wrap { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.6em 0; }
.prose--news .jsh-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 24px; background: var(--red); color: #FFF; font-weight: 900; text-decoration: none; }
.prose--news .jsh-btn:hover { background: var(--red-ink); color: #FFF; }
.prose--news .jsh-btn-outline, .prose--news .jsh-btn-white { background: transparent; color: var(--ink); border: 2px solid var(--ink); }
.prose--news .jsh-btn-outline:hover, .prose--news .jsh-btn-white:hover { background: var(--ink); color: var(--paper); }
@media (max-width: 560px) { .prose--news .kokuspo-card { grid-template-columns: 1fr; gap: 8px; } }

/* ===== 統一フォーマットの部品（ニュース本文） ===== */
.prose table.info { display: table; width: 100%; border: 0 !important; border-top: 3px solid var(--ink) !important; margin: 0 0 1.6em; }
.prose table.info th, .prose table.info td { border: 0 !important; border-bottom: 1px solid #D0D0D0 !important; padding: 12px 8px !important; vertical-align: top; font-size: 15px; line-height: 1.8; }
.prose table.info th { width: 8em; white-space: nowrap; color: #4A4A4A; font-weight: 700; }
.prose table.info td { font-weight: 700; }
.prose table.info tr:first-child th:only-child, .prose table.info thead th { width: auto; }
.prose .box { margin: 1.6em 0; padding: 20px 24px; background: #F2F2F2; border-top: 3px solid var(--red); }
.prose .box > :last-child { margin-bottom: 0; }
.prose .box h2, .prose .box h3 { margin-top: 0; padding-top: 0; border-top: 0; font-size: 19px; }
.prose .box h2::before { display: none; }
.prose .box table.info { background: transparent; }
.prose p.cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.6em 0; }
.prose a.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 28px; background: var(--red); color: #FFF; font-weight: 900; text-decoration: none; }
.prose a.btn:hover { background: var(--red-ink); color: #FFF; }
.prose a.btn.btn-sub { background: transparent; color: var(--ink); border: 2px solid var(--ink); }
.prose a.btn.btn-sub:hover { background: var(--ink); color: var(--paper); }
.prose figure { margin: 1.6em 0; }
.prose figure img { width: 100%; }
@media (max-width: 560px) { .prose table.info th { width: 6em; white-space: normal; } }

/* ===== gallery ===== */
.gl-albums { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.gl-album a { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #1A1A1A; color: var(--paper); text-decoration: none; }
.gl-album.is-lead { grid-column: span 2; grid-row: span 2; }
.gl-album.is-lead a { aspect-ratio: auto; height: 100%; min-height: 360px; }
.gl-album__img, .gl-album__img img { position: absolute; inset: 0; width: 100%; height: 100%; }
.gl-album__img img { object-fit: cover; transition: transform .5s ease; }
.gl-album a:hover .gl-album__img img { transform: scale(1.04); }
.gl-album__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,10,10,0) 45%, rgba(10,10,10,.88) 100%); }
.gl-album__body { position: absolute; left: 18px; right: 18px; bottom: 16px; display: flex; flex-direction: column; gap: 6px; }
.gl-album__meta { font-family: var(--display); font-weight: 800; font-size: 13px; letter-spacing: .1em; display: flex; gap: 12px; }
.gl-album__meta b { color: var(--red); font-weight: 900; }
.gl-album__title { font-weight: 900; font-size: 17px; line-height: 1.45; }
.gl-album.is-lead .gl-album__title { font-size: clamp(20px, 2.4vw, 30px); }
.gl-albums--small { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gl-grid { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gl-grid li { flex: calc(var(--ar) * 1) 1 calc(var(--ar) * 220px); aspect-ratio: var(--ar); max-height: 420px; overflow: hidden; background: #1A1A1A; }
.gl-grid::after { content: ""; flex: 10 1 0; }
.gl-grid a, .gl-grid img { display: block; width: 100%; height: 100%; }
.gl-grid img { object-fit: cover; transition: opacity .2s ease, transform .4s ease; }
.gl-grid a:hover img { transform: scale(1.03); }
.gl-note { margin: 32px 0 0; font-size: 12px; color: var(--mute); }
.gl-note a { color: inherit; }
.chips--dark a { color: var(--paper); border-color: rgba(255,255,255,.4); }
.lb { position: fixed; inset: 0; z-index: 1000; background: rgba(5,5,5,.96); display: grid; grid-template-columns: 64px minmax(0, 1fr) 64px; align-items: center; }
.lb[hidden] { display: none; }
.lb__fig { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; max-height: 100vh; padding: 56px 0 24px; }
.lb__img { max-width: 100%; max-height: calc(100vh - 140px); object-fit: contain; }
.lb__cap { color: var(--paper); font-size: 14px; font-weight: 700; text-align: center; min-height: 1.4em; }
.lb__nav, .lb__close { background: none; border: 0; color: var(--paper); cursor: pointer; font-size: 48px; line-height: 1; padding: 12px; }
.lb__nav:hover, .lb__close:hover { color: var(--red); }
.lb__close { position: absolute; top: 8px; right: 12px; font-size: 40px; }
.lb__count { position: absolute; top: 20px; left: 20px; color: var(--paper); font-family: var(--display); font-weight: 800; letter-spacing: .1em; }
@media (max-width: 800px) {
  .gl-albums, .gl-albums--small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gl-album.is-lead { grid-column: 1 / -1; grid-row: auto; }
  .gl-album.is-lead a { min-height: 0; aspect-ratio: 4 / 3; }
  .lb { grid-template-columns: 1fr; }
  .lb__nav { position: absolute; bottom: 12px; font-size: 40px; }
  .lb__prev { left: 12px; } .lb__next { right: 12px; }
}

/* ===== shop ===== */
.sh-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 40px 24px; }
.sh-item a { display: flex; flex-direction: column; gap: 6px; text-decoration: none; color: var(--ink); }
.sh-item__img { position: relative; display: block; aspect-ratio: 1 / 1; background: #F2F2F2; overflow: hidden; }
.sh-item__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.sh-item a:hover .sh-item__img img { transform: scale(1.04); }
.sh-item__name { margin-top: 6px; font-weight: 900; font-size: 16px; line-height: 1.5; }
.sh-item__price { font-family: var(--display); font-weight: 900; font-size: 26px; line-height: 1.1; }
.sh-item__price small { font-family: inherit; font-size: 12px; font-weight: 700; margin-left: 4px; color: #6A6A6A; }
.sh-item__go { font-size: 13px; font-weight: 700; color: var(--red-ink); }
.sh-empty { padding: 40px; border: 3px solid var(--ink); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; }
.sh-empty p { margin: 0; font-weight: 700; }
.sh-note { margin: 32px 0 0; font-size: 13px; color: #4A4A4A; }
.sh-pass { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px 64px; align-items: end; }
@media (max-width: 800px) { .sh-pass { grid-template-columns: 1fr; } }

/* ===== press kit ===== */
.pk-copy { position: relative; border-top: 3px solid var(--ink); padding: 16px 0 20px; }
.pk-copy__k { margin: 0 0 6px; font-size: 13px; font-weight: 700; color: #4A4A4A; }
.pk-copy__t { margin: 0; padding-right: 110px; font-size: 16px; line-height: 2; font-weight: 700; }
.pk-copy__b { position: absolute; top: 14px; right: 0; height: 36px; padding: 0 14px; border: 2px solid var(--ink); background: transparent; font: inherit; font-size: 13px; font-weight: 900; cursor: pointer; }
.pk-copy__b:hover { background: var(--ink); color: var(--paper); }
.pk-list { list-style: none; margin: 0; padding: 0; border-top: 3px solid var(--ink); }
.pk-list li { display: grid; grid-template-columns: 11em minmax(0, 1fr) auto; gap: 8px 20px; align-items: baseline; padding: 16px 0; border-bottom: 1px solid #D0D0D0; }
.pk-list span { font-size: 14px; color: #4A4A4A; line-height: 1.8; }
.pk-list a { font-weight: 900; color: var(--red-ink); white-space: nowrap; }
@media (max-width: 640px) { .pk-list li { grid-template-columns: 1fr; } .pk-copy__t { padding-right: 0; padding-top: 32px; } }
.dl.dl--rows.dl--wrap dd { white-space: normal; overflow: visible; }

/* プロフィール：4カラム（項目名の下に内容） */
.dl.dl--cols { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 32px; }
.dl.dl--cols > div { flex-direction: column; gap: 6px; padding: 18px 0 20px; }
.dl.dl--cols dt { width: auto; flex: none; font-size: 12px; letter-spacing: .04em; }
.dl.dl--cols dd { font-size: 17px; line-height: 1.6; }
@media (max-width: 960px) { .dl.dl--cols { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; } }
@media (max-width: 420px) { .dl.dl--cols dd { font-size: 16px; } }

/* グループ・関連事業：ロゴがあればロゴ（小さめ・グレー）、無ければ名前 */
.credits__group { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px; flex: 1 1 400px; }
.credits__group a { display: inline-flex; align-items: center; min-height: 40px; text-decoration: none; font-weight: 700; }
.credits__group img { max-height: 40px; width: auto; filter: grayscale(1); opacity: .75; transition: filter .2s ease, opacity .2s ease; }
.credits__group a:hover img { filter: none; opacity: 1; }
.sec:not(.paper) .credits__group img { filter: grayscale(1) invert(1) brightness(1.7) contrast(2.4); mix-blend-mode: screen; }


/* ロゴ：JUN SPORTS ＋ 青い帯の HOKKAIDO（帯は文字幅いっぱい・両端を−8°で斜めにカット） */
.slash--under::after { display: none; }
.hd__mark, .ft__mark { display: inline-flex; flex-direction: column; align-items: stretch; }
.hd__mark { gap: 4px; font-size: 25px; letter-spacing: .01em; }
.ft__mark { gap: .1em; font-size: clamp(48px, 6vw, 80px); align-self: flex-start; }
.hd__mark b, .ft__mark b { font-weight: 900; line-height: .9; white-space: nowrap; }
.hd__mark small, .ft__mark small {
  display: block; background: var(--red); color: #FFF; text-align: center;
  font-family: var(--display); font-weight: 800; line-height: 1;
  clip-path: polygon(.5em 0, 100% 0, calc(100% - .5em) 100%, 0 100%);
}
.hd__mark small { font-size: 10px; letter-spacing: .62em; padding: 3px 0 3px .62em; }
.ft__mark small { font-size: .2em; letter-spacing: .9em; padding: .45em 0 .45em .9em; }
@media (max-width: 420px) { .hd__mark { font-size: 22px; } .hd__mark small { font-size: 9px; letter-spacing: .5em; } }

/* ===== 期間限定のお知らせ（サイトモーダル） ===== */
.smod { position: fixed; inset: 0; z-index: 900; background: rgba(5,5,5,.72); display: grid; place-items: center; padding: 16px; animation: smodIn .25s ease; }
.smod[hidden], .scard[hidden] { display: none; }
.smod__panel { position: relative; width: min(560px, 100%); max-height: calc(100vh - 32px); overflow: auto; background: var(--ink); color: var(--paper); border-top: 6px solid var(--red); box-shadow: 0 24px 60px rgba(0,0,0,.5); }
.smod__link { display: block; color: inherit; text-decoration: none; }
.smod__img { display: block; aspect-ratio: 16 / 9; overflow: hidden; background: #1A1A1A; }
.smod__img img { width: 100%; height: 100%; object-fit: cover; }
.smod__body { display: flex; flex-direction: column; gap: 10px; padding: 24px 28px 28px; }
.smod__label { align-self: flex-start; font-family: var(--display); font-weight: 800; font-size: 12px; letter-spacing: .14em; color: var(--red); text-transform: uppercase; }
.smod__title { font-size: clamp(22px, 3vw, 30px); font-weight: 900; line-height: 1.35; }
.smod__sub { font-weight: 700; color: var(--soft); }
.smod__desc { font-size: 14px; line-height: 1.9; color: var(--soft); }
.smod__cta { align-self: flex-start; margin-top: 8px; }
.smod__close { position: absolute; top: 8px; right: 8px; z-index: 2; width: 40px; height: 40px; border: 0; background: rgba(10,10,10,.75); color: #FFF; font-size: 24px; line-height: 1; cursor: pointer; }
.smod__close:hover { background: var(--red); }
.scard { position: fixed; bottom: 16px; z-index: 800; width: min(340px, calc(100% - 32px)); background: var(--ink); color: var(--paper); border-left: 6px solid var(--red); box-shadow: 0 12px 32px rgba(0,0,0,.35); animation: smodUp .3s ease; }
.scard--right { right: 16px; } .scard--left { left: 16px; }
.scard a { display: grid; grid-template-columns: 96px minmax(0, 1fr); color: inherit; text-decoration: none; }
.scard a:not(:has(.scard__img)) { grid-template-columns: 1fr; }
.scard__img { display: block; aspect-ratio: 1; overflow: hidden; background: #1A1A1A; }
.scard__img img { width: 100%; height: 100%; object-fit: cover; }
.scard__body { display: flex; flex-direction: column; gap: 4px; padding: 12px 44px 12px 14px; }
.scard__body b { font-size: 15px; font-weight: 900; line-height: 1.45; }
.scard__body small { font-size: 12px; color: var(--soft); }
.scard .smod__close { top: 4px; right: 4px; width: 32px; height: 32px; font-size: 20px; }
@keyframes smodIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes smodUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .smod, .scard { animation: none; } }
@media (max-width: 560px) {
  .smod { align-items: end; padding: 0; }
  .smod__panel { width: 100%; max-height: 88vh; }
}

/* ===== 特設ページへの導線 ===== */
.hd__special { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 12px; border: 2px solid var(--red); color: var(--paper); font-size: 13px; font-weight: 900; text-decoration: none; }
.hd__special i { width: 8px; height: 8px; background: var(--red); border-radius: 50%; animation: hdPulse 1.6s ease-in-out infinite; }
.hd__special:hover { background: var(--red); }
.hd__special:hover i { background: var(--paper); }
@keyframes hdPulse { 50% { opacity: .25; } }
@media (prefers-reduced-motion: reduce) { .hd__special i { animation: none; } }
.hd__sp-special { display: flex; flex-direction: column; gap: 2px; background: var(--red); color: #FFF !important; padding: 14px 16px !important; font-weight: 900; }
.hd__sp-special small { font-family: var(--display); font-weight: 800; font-size: 12px; letter-spacing: .12em; opacity: .85; }
.ath-next { display: block; background: var(--red); color: #FFF; text-decoration: none; }
.ath-next__in { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 20px; padding-top: 14px; padding-bottom: 14px; }
.ath-next small { font-family: var(--display); font-weight: 800; letter-spacing: .12em; }
.ath-next b { font-weight: 900; font-size: 16px; }
.ath-next em { margin-left: auto; font-style: normal; font-weight: 900; }
.ath-next:hover { background: var(--red-ink); color: #FFF; }
.hd__sp .hd__sp-special { display: flex !important; flex-direction: column; align-items: flex-start; font-size: 17px !important; line-height: 1.5; border: 0 !important; margin-bottom: 8px; } .hd__sp .hd__sp-special small { display: block; font-size: 12px; }

/* ===== トップ：大会特設ページ（SPECIAL） ===== */
.spx { position: relative; background: var(--red); color: #FFF; clip-path: polygon(0 0, 100% 0, 100% 88%, 0 100%); margin-top: -1px; }
.spx__in { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 32px 56px; padding-top: 56px; padding-bottom: 96px; align-items: start; }
.spx__count { display: flex; flex-direction: column; gap: 12px; }
.spx__d { font-family: var(--display); font-weight: 900; font-size: clamp(96px, 13vw, 180px); line-height: .82; letter-spacing: -.01em; }
.spx__live { display: inline-flex; align-items: center; gap: 12px; font-family: var(--display); font-weight: 900; font-size: clamp(56px, 8vw, 110px); line-height: .9; }
.spx__live i { width: .28em; height: .28em; border-radius: 50%; background: #FFF; animation: hdPulse 1.4s ease-in-out infinite; }
.spx__dates { font-family: var(--display); font-weight: 800; font-size: 20px; letter-spacing: .06em; line-height: 1.4; }
.spx__eyebrow { font-family: var(--display); font-weight: 800; letter-spacing: .16em; font-size: 14px; opacity: .85; }
.spx__title { margin: 8px 0 24px; font-size: clamp(26px, 3.4vw, 44px); font-weight: 900; line-height: 1.3; }
.spx__events { list-style: none; margin: 0 0 28px; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0; border-top: 3px solid #FFF; }
.spx__events a { display: flex; align-items: baseline; gap: 14px; padding: 14px 0; border-bottom: 1px solid rgba(255,255,255,.35); color: #FFF; text-decoration: none; }
.spx__events b { font-size: 22px; font-weight: 900; }
.spx__events span { font-family: var(--display); font-weight: 800; font-size: 20px; }
.spx__events em { margin-left: auto; font-style: normal; font-size: 13px; font-weight: 700; padding-right: 12px; }
.spx__events a:hover em { text-decoration: underline; }
.spx__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }
.spx .btn--red.spx__main-btn { background: var(--ink); color: #FFF; height: 60px; padding: 0 32px; font-size: 16px; }
.spx .btn--red.spx__main-btn:hover { background: #FFF; color: var(--ink); }
.spx .btn--line { border-color: #FFF; color: #FFF; }
.spx .more { color: #FFF; border-color: #FFF; }
@media (max-width: 800px) { .spx__in { grid-template-columns: 1fr; padding-bottom: 80px; } .spx__count { flex-direction: row; align-items: flex-end; gap: 20px; } }

/* ===== 大会ページ：特設ページカード ===== */
.spcard { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 24px; align-items: center; padding: 22px 28px; background: var(--ink); color: #FFF; text-decoration: none; border-left: 8px solid var(--red); }
.spcard__k { grid-column: 1; font-family: var(--display); font-weight: 800; font-size: 13px; letter-spacing: .14em; color: var(--red); }
.spcard__t { grid-column: 1; font-size: clamp(18px, 2vw, 24px); font-weight: 900; line-height: 1.4; }
.spcard__d { grid-column: 1; font-size: 13px; color: var(--soft); }
.spcard__go { grid-column: 2; grid-row: 1 / span 3; padding: 14px 22px; background: var(--red); font-weight: 900; white-space: nowrap; }
.spcard:hover .spcard__go { background: #FFF; color: var(--ink); }
.spcard__sib { display: flex; gap: 0; margin-top: 12px; border: 2px solid var(--ink); width: fit-content; }
.spcard__sib a { display: flex; align-items: baseline; gap: 8px; padding: 10px 22px; font-weight: 900; text-decoration: none; color: var(--ink); }
.spcard__sib a + a { border-left: 2px solid var(--ink); }
.spcard__sib a[aria-current="page"] { background: var(--ink); color: #FFF; }
.spcard__sib small { font-family: var(--display); font-weight: 800; font-size: 14px; }
@media (max-width: 640px) { .spcard { grid-template-columns: 1fr; } .spcard__go { grid-column: 1; grid-row: auto; justify-self: start; margin-top: 10px; } }
.spx__d { white-space: nowrap; } @media (max-width: 800px) { .spx__d { font-size: clamp(72px, 22vw, 120px); } .spx__dates { font-size: 16px; } }

/* ===== 年間パートナーの壁（トップ・パートナー・特設LPで共通） ===== */
.pwall { display: flex; flex-direction: column; gap: 28px; width: 100%; }
.pwall__tier { display: flex; flex-direction: column; gap: 12px; }
.pwall__label { margin: 0; display: flex; align-items: center; gap: 12px; font-size: 13px; font-weight: 700; letter-spacing: .08em; color: inherit; }
.pwall__label::before { content: ""; width: 24px; height: 3px; background: var(--red); flex: none; }
.pwall__row { display: grid; gap: 12px; }
.pwall__tier--top .pwall__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pwall__tier--official .pwall__row { grid-template-columns: repeat(var(--cols, 4), minmax(0, 1fr)); }
.pwall__tier--group .pwall__row { grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); }
.pwall__tier--group { padding-top: 28px; border-top: 1px solid rgba(128,128,128,.3); }
.pwall__tier--group .pwall__logo { min-height: 96px; }
.pwall__tier--group .pwall__logo img { max-height: 56px; }
.pwall__tier--support .pwall__row { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.pwall__logo { background: #fff; border: 1px solid #DADADA; display: flex; align-items: center; justify-content: center; padding: 18px 22px; min-width: 0; text-decoration: none; color: var(--ink); font-weight: 700; font-size: 14px; text-align: center; transition: border-color .2s, transform .2s, box-shadow .2s; }
.pwall__logo:hover { border-color: var(--red); transform: translateY(-2px); box-shadow: 0 10px 28px rgba(0,0,0,.06); }
.pwall__logo img { display: block; max-width: 100%; width: auto; height: auto; object-fit: contain; }
.pwall__tier--top .pwall__logo { min-height: 132px; }
.pwall__tier--top .pwall__logo img { max-height: 84px; }
.pwall__tier--official .pwall__logo { min-height: 104px; }
.pwall__tier--official .pwall__logo img { max-height: 60px; }
.pwall__tier--support .pwall__logo { min-height: 80px; padding: 14px 16px; }
.pwall__tier--support .pwall__logo img { max-height: 40px; }
@media (max-width: 900px) {
  .pwall__tier--official .pwall__row, .pwall__tier--support .pwall__row, .pwall__tier--group .pwall__row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .pwall { gap: 22px; }
  .pwall__tier--top .pwall__row { grid-template-columns: 1fr; }
  .pwall__tier--official .pwall__row, .pwall__tier--support .pwall__row, .pwall__tier--group .pwall__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pwall__logo { padding: 14px 16px; }
  .pwall__tier--top .pwall__logo { min-height: 104px; }
}
