:root{--red:#d91920;--black:#111;--white:#fff;scroll-behavior:smooth}
*{box-sizing:border-box}body{margin:0;color:var(--black);background:var(--white);font-family:Arial,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;line-height:1.8}a{color:inherit}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h1,h2{font-weight:900;letter-spacing:-.045em;line-height:1.3}a:focus-visible,summary:focus-visible{outline:3px solid var(--red);outline-offset:5px}.skip{position:absolute;left:12px;top:-100px;z-index:20}.skip:focus{top:12px;background:white;padding:12px}
.race-header{height:80px;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd}.brand{font-weight:900;letter-spacing:-.07em;font-size:30px;text-decoration:none;line-height:1}.brand span{color:var(--red)}.header-entry{font-size:14px;font-weight:700;text-decoration:none;border-bottom:2px solid var(--red)}.header-entry span{color:var(--red);margin-left:20px}
.hero{display:grid;grid-template-columns:1.1fr 1fr}.hero-copy{padding:64px 4vw 64px 5vw}.eyebrow{font-size:clamp(22px,2.6vw,38px);font-weight:900;line-height:1.5;margin-bottom:28px}.matchup{font-size:clamp(18px,2vw,28px);font-weight:800;line-height:1.5;margin-bottom:24px}.matchup b{color:var(--red);font-family:Arial,sans-serif;margin-left:10px}.hero h1{font-size:clamp(32px,4.1vw,65px)}.hero h1 span{color:var(--red);font-size:1.25em;letter-spacing:-.065em}.hero-description{font-size:14px;margin-top:28px}.hero-offer{margin:16px 0 28px;font-size:15px}.hero-offer strong{font-size:24px;color:var(--red);margin:0 3px}.hero-offer>span{margin:0 8px}.cta{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--red);color:#fff;padding:18px 24px;font-size:16px;font-weight:700;max-width:420px;text-decoration:none;transition:background .15s}.cta:hover{background:#b61017}.cta span{font-size:26px;line-height:1}
.hero-photo{position:relative;overflow:hidden;background:#111}.hero-photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);opacity:.72}.photo-type{position:absolute;bottom:36px;left:32px;color:white;font-size:clamp(36px,6.7vw,108px);font-weight:900;line-height:.92;letter-spacing:-.065em}
.section{padding:110px max(6vw,calc((100vw - 1200px)/2))}.dark{background:var(--black);color:white}.label{font-size:13px;font-weight:700;letter-spacing:.16em;line-height:1.5;margin-bottom:48px;display:flex;align-items:center;gap:16px}.label:before{content:'';width:32px;height:2px;background:var(--red)}.section h2{font-size:clamp(28px,4vw,58px)}.distance-pair{display:flex;align-items:center;gap:5vw;margin-bottom:56px;line-height:1;font-size:clamp(44px,8vw,112px);font-weight:900;letter-spacing:-.06em}.distance-pair small{font-size:.24em;margin-left:5px;letter-spacing:0}.distance-pair b{font-size:.4em;color:var(--red)}.why-body{display:flex;gap:100px;margin-top:44px;font-size:18px}.why-body strong{color:var(--red)}
.big-english{font-size:clamp(41px,6.6vw,102px);font-weight:900;letter-spacing:-.065em;line-height:.94;margin-bottom:32px}.challenge h2{font-size:clamp(28px,3.1vw,45px)}.challenge-body{margin-top:48px;display:flex;justify-content:space-between;gap:48px;max-width:800px;font-size:20px;font-weight:700}.sprinters{display:grid;grid-template-columns:1fr 1fr}.sprinter-photo img{height:100%;width:100%;object-fit:cover;filter:grayscale(1)}.sprinter-copy{padding:80px 5vw}.sprinter-copy h2{font-size:clamp(32px,3.6vw,54px);margin-bottom:32px}.announcement{margin-top:32px;color:#aaa;font-size:13px}.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-top:56px}.entry-limit{font-size:20px;font-weight:900;margin-bottom:16px}.entry-limit strong{font-size:56px;color:var(--red);letter-spacing:-.05em}.price{margin-top:32px;font-size:20px}.price>span{display:block;font-size:14px}.price strong{font-size:64px;color:var(--red);letter-spacing:-.06em;line-height:1.4;margin-right:10px}dl{margin:0}dl>div{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid #ccc;font-size:15px}dt{font-weight:700}dd{margin:0}.entry-status{margin-top:48px;padding-top:24px;border-top:2px solid var(--red);font-size:14px}
.flow ol{list-style:none;padding:0;margin:48px 0 0}.flow li{display:flex;gap:40px;padding:32px 0;border-top:1px solid #444}.flow li>span{font-size:32px;font-weight:900;color:var(--red);line-height:1.4}.flow h3{font-size:24px}.flow li p{font-size:15px;color:#bbb;margin-top:8px}.faq h2{margin-bottom:48px}.faq details{border-top:1px solid #ccc;padding:24px 0}.faq details:last-child{border-bottom:1px solid #ccc}.faq summary{cursor:pointer;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:20px}.faq summary:after{content:'+';color:var(--red);font-size:24px;line-height:1}.faq summary::-webkit-details-marker{display:none}.faq details[open] summary:after{content:'−'}.faq details p{margin-top:20px;font-size:15px}.final{padding:100px 6vw;text-align:center}.final .label{justify-content:center}.final h2{font-size:clamp(40px,6vw,88px)}.final h2 span{color:var(--red)}.final>p:not(.label){margin:28px 0}.final .cta{margin:auto}footer{padding:48px 5vw;display:flex;gap:32px;align-items:center;justify-content:space-between}footer p,footer nav{font-size:12px}footer nav{display:flex;gap:24px}
@media(max-width:767px){.race-header{height:64px;padding:0 20px}.brand{font-size:25px}.hero{grid-template-columns:1fr}.hero-copy{padding:36px 24px 40px}.eyebrow{font-size:clamp(19px,5.3vw,25px);margin-bottom:24px}.matchup{font-size:19px;margin-bottom:20px}.hero h1{font-size:clamp(30px,7.4vw,48px)}.hero-description{font-size:13px;margin-top:24px}.hero-offer{font-size:13px}.hero-offer strong{font-size:22px}.hero-photo{height:350px}.photo-type{font-size:clamp(36px,10vw,68px);bottom:24px;left:24px}.section{padding:72px 24px}.label{font-size:11px;margin-bottom:32px}.distance-pair{gap:20px;font-size:clamp(36px,9.5vw,64px);margin-bottom:36px}.why-body{flex-direction:column;gap:24px;margin-top:32px;font-size:16px}.big-english{font-size:clamp(34px,8.8vw,61px);margin-bottom:24px}.challenge h2{font-size:clamp(23px,6.2vw,34px)}.challenge-body{flex-direction:column;gap:24px;margin-top:32px;font-size:18px}.sprinters{grid-template-columns:1fr}.sprinter-photo img{height:280px}.sprinter-copy{padding:48px 24px}.entry-grid{grid-template-columns:1fr;gap:36px;margin-top:32px}.entry-limit strong{font-size:48px}.price strong{font-size:56px}.entry-status{margin-top:32px}.flow li{gap:24px}.flow h3{font-size:21px}.faq summary{font-size:14px}.final{padding:72px 24px}.final h2{font-size:40px}.cta{font-size:14px;padding:18px 20px}footer{padding:36px 24px;flex-wrap:wrap;gap:20px}footer nav{flex-wrap:wrap;gap:12px 20px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}.cta{transition:none}}

/* 1000m企画の日本語ロゴとCTAのバランス。 */
.brand { font-size: 26px; letter-spacing: -.05em; }
.cta { justify-content: center; text-align: center; }
@media(max-width:767px) { .brand { font-size: 22px; } }

/* 持久力と爆発力を、中央で向き合うひとつの対戦ビジュアルに。 */
.why { padding-top: 68px; padding-bottom: 80px; }
.why .label { margin-bottom: 40px; }
.why .distance-pair { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: center; gap: 28px; margin: 0 0 48px; font-size: inherit; }
.distance-side { min-width: 0; }
.distance-side p { font-size: clamp(11px,1.2vw,17px); letter-spacing: .1em; font-weight: 800; line-height: 1.5; margin-bottom: 14px; }
.distance-side > span { display: block; font-size: clamp(44px,7.4vw,112px); letter-spacing: -.065em; line-height: 1; white-space: nowrap; font-weight: 900; }
.distance-side small { font-size: .25em; letter-spacing: -.02em; margin-left: 5px; }
.distance-marathon { text-align: right; }
.distance-sprint { text-align: left; }
.why .distance-vs { font-size: clamp(42px,5.5vw,80px); color: var(--red); font-style: italic; letter-spacing: -.07em; line-height: 1; padding-top: 32px; }
.why h2 { text-align: center; font-size: clamp(32px,4.8vw,70px); line-height: 1.3; }
.why .why-body { display: block; text-align: center; margin-top: 32px; font-size: 16px; color: #bbb; }
.why-body p + p { margin-top: 20px; }
.why-stage { margin-top: 32px; text-align: center; color: var(--red); font-size: clamp(28px,3.2vw,46px); font-weight: 900; letter-spacing: -.04em; line-height: 1.4; }
@media(max-width:767px) {
  .why { padding: 44px 20px 56px; }
  .why .label { margin-bottom: 32px; }
  .why .distance-pair { gap: 10px; margin-bottom: 36px; }
  .distance-side p { font-size: 9px; letter-spacing: .03em; margin-bottom: 12px; min-height: 27px; display: flex; align-items: flex-end; }
  .distance-marathon p { justify-content: flex-end; }
  .distance-side > span { font-size: clamp(28px,8.5vw,60px); }
  .distance-side small { margin-left: 2px; }
  .why .distance-vs { font-size: clamp(30px,9vw,52px); padding-top: 34px; }
  .why h2 { font-size: clamp(28px,7.2vw,42px); }
  .why .why-body { font-size: 14px; margin-top: 28px; }
  .why-stage { margin-top: 28px; font-size: 30px; }
}

.challenge h2 { text-wrap: balance; }

/* 日本語のメッセージを主役に、本文を一続きで読む。 */
.challenge .big-english { font-size: clamp(32px,4.8vw,74px); margin-bottom: 28px; }
.challenge h2 { font-size: clamp(30px,3.4vw,50px); }
.challenge .challenge-body { display: block; max-width: 760px; margin-top: 32px; font-size: 17px; font-weight: 400; line-height: 2; text-align: left; }
@media(max-width:767px) {
  .challenge .big-english { font-size: clamp(28px,7.4vw,48px); margin-bottom: 22px; }
  .challenge h2 { font-size: clamp(25px,6.6vw,36px); }
  .challenge .challenge-body { margin-top: 28px; font-size: 15px; line-height: 2; }
}

/* 対戦メンバーを、番号と区切り線で力強く紹介する。 */
.sprinter-roster { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 64px; list-style: none; padding: 0; margin: 48px max(6vw,calc((100vw - 1200px)/2)) 80px; }
.sprinter-roster li { display: flex; align-items: flex-start; gap: 24px; padding: 28px 0; border-top: 1px solid #444; min-width: 0; }
.roster-number { color: var(--red); font-size: 18px; font-weight: 900; line-height: 2; }
.sprinter-roster h3 { font-size: clamp(26px,2.6vw,38px); font-weight: 900; line-height: 1.35; letter-spacing: .03em; }
.sprinter-roster li p { margin-top: 12px; font-size: 14px; line-height: 1.8; color: #ccc; overflow-wrap: anywhere; }
@media(max-width:767px) {
  .sprinter-roster { grid-template-columns: 1fr; margin: 0 24px 48px; gap: 0; }
  .sprinter-roster li { gap: 20px; padding: 24px 0; }
  .sprinter-roster h3 { font-size: 28px; }
  .sprinter-roster li p { font-size: 13px; margin-top: 8px; }
}

/* ENTRYは見出しと開催情報だけに整理する。 */
.entry-info { max-width: 800px; margin-top: 48px; }
.entry-info > div { grid-template-columns: 120px minmax(0,1fr); gap: 32px; padding: 22px 0; font-size: 17px; }
.entry-info > div:first-child { border-top: 2px solid var(--red); }
@media(max-width:767px) {
  .entry-info { margin-top: 32px; }
  .entry-info > div { grid-template-columns: 76px minmax(0,1fr); gap: 16px; padding: 18px 0; font-size: 14px; }
}

/* 開催情報は帯ではなく、FVの申込情報に添える。 */
.hero-copy { padding-top: 48px; padding-bottom: 48px; }
.hero-offer { margin-bottom: 14px; }
.hero-event-info { margin-bottom: 24px; font-size: 14px; font-weight: 600; line-height: 1.8; }
.hero-event-info time { font-size: 13px; letter-spacing: .025em; }
.hero-event-info p { margin-top: 2px; }
@media(max-width:767px) {
  .hero-copy { padding-top: 32px; padding-bottom: 32px; }
  .hero-event-info { font-size: 13px; margin-bottom: 24px; }
  .hero-event-info time { font-size: 12px; }
}

/* 対決写真は文字の背後へ。スマホは左右の人物を個別にトリミング。 */
.why { position: relative; isolation: isolate; }
.why-backdrop { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.why-backdrop::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.67); }
.why-backdrop img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.why-backdrop-left,.why-backdrop-right { display: none; }
.why .why-body { color: #ddd; }
@media(max-width:767px) {
  .why-backdrop-full { display: none; }
  .why-backdrop .why-backdrop-left,.why-backdrop .why-backdrop-right { display: block; position: absolute; top: 0; width: 50%; height: 100%; }
  .why-backdrop-left { left: 0; object-position: 19% center !important; }
  .why-backdrop-right { right: 0; object-position: 90% center !important; }
  .why-backdrop::after { background: rgba(0,0,0,.72); }
}

.why h2 .why-explosive { color: var(--red); }

.why-heading-duel { display: flex; justify-content: center; align-items: baseline; gap: clamp(16px,3vw,48px); margin-top: .15em; }
.why-heading-duel > span { white-space: nowrap; }
@media(max-width:767px) {
  .why h2 { font-size: clamp(25px,6.8vw,40px); }
  .why-heading-duel { gap: 10px; }
}

/* 名前を主役に、記録・実績を白で準主役にする。 */
.sprinter-roster li p { font-size: 16px; font-weight: 600; line-height: 1.75; color: #fff; }
.sprinter-roster li p strong { color: inherit; font-weight: 800; }
@media(max-width:767px) { .sprinter-roster li p { font-size: 15px; } }

/* Mobile hero: photo first, followed by the event and entry information. */
@media (max-width: 767px) {
  .hero-photo {
    grid-row: 1;
    height: auto;
    aspect-ratio: 1 / 1;
  }
  .hero-photo img { object-position: 50% 45%; }
  .hero-copy {
    grid-row: 2;
    display: flex;
    flex-direction: column;
    padding-top: 36px;
  }
  .hero-copy .eyebrow { order: 1; }
  .hero-copy .matchup { order: 2; }
  .hero-copy h1 { order: 3; }
  .hero-copy .hero-event-info { order: 4; margin-top: 24px; margin-bottom: 0; }
  .hero-copy .hero-description { order: 5; margin-top: 20px; }
  .hero-copy .hero-offer { order: 6; margin-bottom: 24px; }
  .hero-copy .cta { order: 7; width: 100%; }
}

/* 申込CTAと区別した、本イベントへのテキスト導線。 */
.main-event-return { padding: 12px 5vw; border-bottom: 1px solid #ddd; font-size: 13px; }
.main-event-return a, .main-event-context a, .main-event-bottom-link { display: inline-flex; align-items: center; min-height: 44px; text-underline-offset: 4px; }
.main-event-context { margin-bottom: 24px; font-size: 13px; line-height: 1.6; }
.main-event-context p { font-weight: 700; }
.main-event-context a { font-size: 12px; }
.final .main-event-bottom-link { margin-top: 24px; color: #fff; font-size: 13px; font-weight: 400; }
@media (max-width: 767px) {
  .main-event-return { padding: 8px 20px; font-size: 12px; }
  .main-event-context { margin-bottom: 20px; }
}
