@charset "UTF-8";

/* =========================================================
   NINEJP in BioJapan 2026 LP / style.css
   デザイン : Figma  PC 1440 / SP 375
   設計     : PCベース + @media (max-width: 899px) でSP上書き
   フォント : Inter（英字・数字）/ Noto Sans JP（和文）
   ========================================================= */

:root {
  /* --- カラー（Figma変数より） --- */
  --color-bg: #05040f;          /* 背景（ダーク） */
  --color-purple: #382086;      /* アクセント（パープル） */
  --color-gray: #a1a1a1;        /* サブテキスト */
  --color-white: #ffffff;
  --color-text: #ffffff;
  --color-line: #ffffff;         /* セクション区切り（1px白） */
  --color-line-frame: #494949;   /* 囲み枠・罫線 */
  --color-card: rgba(255, 255, 255, .06);

  /* --- タイポグラフィ --- */
  --font-en: 'Inter', sans-serif;
  --font-jp: 'Inter', 'Noto Sans JP', sans-serif;

  /* --- レイアウト --- */
  --container: 1200px;          /* PCコンテンツ幅 */
  --container-padding: 20px;
  --header-height: 55px;        /* SPは47px（下部のメディアクエリで上書き） */
}

/* =========================================================
   基本
   ========================================================= */
body {
  font-family: var(--font-jp);
  color: var(--color-text);
  background: var(--color-bg);
  line-height: 1.7;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  /* Figmaはpalt無効でレンダリングされているため、こちらも詰めない
     （有効にすると和文が約10%狭くなりデザインと行数・幅が合わなくなる） */
  overflow-x: hidden;

  /* 背景：1枚のタイルを上下反転で繰り返して継ぎ目なく敷く */
  background-image: url("../img/bg-tile.webp");
  background-repeat: repeat-y;
  background-position: top center;
  background-size: 100% auto;
  background-attachment: scroll;
}

:focus-visible {
  outline: 2px solid var(--color-purple);
  outline-offset: 2px;
}

/* アンカー位置調整（固定ヘッダー分） */
:where(section[id]) { scroll-margin-top: var(--header-height); }

/* =========================================================
   共通ユーティリティ
   ========================================================= */
.l-container {
  width: 100%;
  max-width: calc(var(--container) + var(--container-padding) * 2);
  margin-inline: auto;
  padding-inline: var(--container-padding);
}

/* セクション見出し（CONTENTS / INFORMATION / PARTNERS 等） */
.sec-head {
  text-align: center;
  /* inline-block の見出しがベースライン分の余白を作るのを止める */
  line-height: 0;
}
.sec-head__en {
  /* グラデーションは背景を文字幅に合わせないと見えないので inline-block にする
     （block のままだとコンテナ幅1200pxに対して背景が引き伸ばされ、
       文字が白100%区間に収まってグラデが消える） */
  display: inline-block;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 68px;
  line-height: 1;
  /* 左右が薄くなるグラデーション文字 */
  background-image: linear-gradient(90deg,
    rgba(255, 255, 255, .5) 0%,
    #ffffff 25.5%,
    #ffffff 73%,
    rgba(255, 255, 255, .5) 100%);
  background-clip: text;
  -webkit-background-clip: text;
  color: transparent;
}
/* セクション見出しの中サイズ（グローバル・ピッチカンファレンス等） */
.sec-head__en--md { font-size: 54px; line-height: 1.3; }
/* SPだけ「グローバル・」で折り返す（PCは1行） */
.sec-head__br { display: none; }
.sec-head__sub {
  display: block;
  margin-top: 16px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 35px;
  line-height: 1;
}
.sec-head__ja {
  display: block;
  margin-top: 16px;
  font-size: 20px;
  font-weight: 500;
}

.u-en { font-family: var(--font-en); }
/* 一次公開では出さない要素（Figmaコメント「一次公開コメントアウト」）。
   本公開で出す想定なので、そのときにクラスを外す */
.u-first-hidden { display: none !important; }

/* 本公開でも出さない要素（Figmaコメント「本公開、コメントアウトします」）。
   u-first-hidden とは戻すタイミングが違うので別クラスにしている。
   一次公開→本公開のときに u-first-hidden を一括で外しても、こちらは残る */
.u-hidden { display: none !important; }

/* 両端揃えは和文前提の指定。欧文だと単語間が大きく空いて読みにくいので英語版では解除する */
html[lang="en"] .card__text,
html[lang="en"] .about__text,
html[lang="en"] .panel__lead,
html[lang="en"] .panel__note,
html[lang="en"] .pitch-row__title,
html[lang="en"] .pitch-row__label,
html[lang="en"] .booth-card__text,
html[lang="en"] .booth-card__title,
html[lang="en"] .booth-card__meta,
html[lang="en"] .booth-card__meta-key,
html[lang="en"] .booth-card__meta-value,
html[lang="en"] .panel-block__text,
html[lang="en"] .modal-step__text,
html[lang="en"] .modal-card__text { text-align: left; }

.u-sp-only { display: none; }
.u-pc-only { display: block; }

/* セクション間の区切り線（Figma Vector 1〜8 相当） */
.sec-divider {
  width: 100%;
  height: 1px;
  margin: 0;
  border: 0;
  background: var(--color-line);
}

@media (max-width: 899px) {
  :root {
    --container-padding: 20px;
    --header-height: 47px;
  }
  /* SPのコンテンツ幅は他案件（oohiro / g-wic）と同じ335px固定 */
  .l-container {
    width: min(100%, 375px);
    max-width: none;
    margin-inline: auto;
    padding-inline: 20px;
  }
  .sec-head__en { font-size: 40px; }
  .sec-head__ja { font-size: 15px; margin-top: 10px; }
  .u-sp-only { display: block; }
  .u-pc-only { display: none; }
}

/* =========================================================
   ヘッダー
   PC : h55 / padding 20px 40px / ナビ7項目 Inter Bold 15px gap36
   SP : h47 / padding 15px 25px / ハンバーガーのみ
   ========================================================= */
.header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  height: var(--header-height);
  background: var(--color-bg);
}
.header__inner {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding-inline: 40px;
}

.header__nav-list {
  display: flex;
  align-items: center;
  gap: 36px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 15px;
  line-height: 1;
}
.header__nav-list a { transition: opacity .3s; }
.header__nav-list a:hover { opacity: .6; }

/* 言語切替（表示中の言語を opacity .4 で薄く出すデザイン） */
.lang-switch {
  display: flex;
  align-items: center;
  gap: 20px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 15px;
  line-height: 1;
}
.lang-switch__item { transition: opacity .3s; }
.lang-switch__item.is-current { opacity: .4; }
.lang-switch__item:not(.is-current):hover { opacity: .6; }
/* JP / EN の間の区切り線 */
.lang-switch__sep {
  width: 1px;
  height: 13px;
  background: rgba(255, 255, 255, .4);
}

/* ハンバーガー（SPのみ / 26×3px の3本線・間隔7px） */
.header__hamburger {
  display: none;
  width: 26px;
  height: 17px;
  position: relative;
}
.header__hamburger span {
  position: absolute;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--color-white);
  transition: transform .3s, opacity .3s;
}
.header__hamburger span:nth-child(1) { top: 0; }
.header__hamburger span:nth-child(2) { top: 7px; }
.header__hamburger span:nth-child(3) { top: 14px; }
.header__hamburger.is-open span:nth-child(1) { top: 7px; transform: rotate(45deg); }
.header__hamburger.is-open span:nth-child(2) { opacity: 0; }
.header__hamburger.is-open span:nth-child(3) { top: 7px; transform: rotate(-45deg); }

@media (max-width: 899px) {
  .header__inner { padding-inline: 25px; }
  .header__nav { display: none; }
  .header__hamburger { display: block; }
  .lang-switch { font-size: 13px; }
}

/* =========================================================
   ドロワー（SP）
   ========================================================= */
.drawer {
  position: fixed;
  inset: var(--header-height) 0 0 0;
  z-index: 90;
  background: var(--color-bg);
  padding: 24px 25px 48px;
  overflow-y: auto;
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s, visibility .3s;
}
.drawer.is-open { opacity: 1; visibility: visible; }
.drawer__list a {
  display: block;
  padding: 16px 4px;
  border-bottom: 1px solid var(--color-line);
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 15px;
}

/* =========================================================
   SHARE（画面右端に固定）
   ========================================================= */
.share {
  position: fixed;
  right: 0;
  /* デザインは359px。ただし画面が低いと右下の追従CTAと重なるので、
     必要なときだけ上に逃がす（高い画面では359pxのまま） */
  top: clamp(80px, calc(100vh - 360px), 359px);
  z-index: 80;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  width: 41px;
  padding: 20px 10px;
  background: var(--color-purple);
  border-radius: 10px 0 0 10px;
}
.share__label {
  height: 42px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  writing-mode: vertical-rl;
  transform: rotate(180deg);   /* 下から上へ読ませる */
}
.share__list {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.share__link { display: block; transition: opacity .3s; }
.share__link:hover { opacity: .7; }
.share__link img { width: auto; }
.js-share-facebook img { height: 20px; }
.js-share-linkedin img { height: 18px; }

@media (max-width: 899px) {
  /* SPデザインにSHAREボタンの記載がないため非表示 */
  .share { display: none; }
}

/* =========================================================
   FV
   PC : 上107px（ヘッダー55 + 52）/ 下69px
   SP : 上82px（ヘッダー47 + 35）/ 下60px
   ========================================================= */
.hero {
  padding-top: calc(var(--header-height) + 52px);
  padding-bottom: 69px;
  text-align: center;
}
.hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* --- 主催ロゴ --- */
.hero__logos {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
  margin-bottom: 10px;
}
.hero__logo--ninejp { width: 253px; height: auto; }
.hero__logo--biojapan { width: 205px; height: auto; }

/* --- タイトル画像 --- */
.hero__title { width: 858px; max-width: 100%; }
.hero__title img { width: 100%; height: auto; }

/* --- 会期 --- */
.hero__date {
  display: flex;
  align-items: baseline;
  justify-content: center;
  font-family: var(--font-en);
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
.hero__date-year { font-size: 49.7px; margin-right: .1em; }
.hero__date-day  { font-size: 83.5px; }
.hero__date-dash { font-size: 83.5px; font-weight: 200; margin-inline: .04em; }
.hero__date-week { font-size: 28.4px; font-weight: 700; margin-inline: -.16em; }
.hero__date-note { font-size: 42.6px; font-weight: 700; margin-left: .06em; }
/* 英語版のみ使用（October 7(Wed)-9(Fri), 2026 のカンマ） */
.hero__date-comma { font-size: 49.7px; margin-right: .12em; }

/* --- 会場 --- */
.hero__place {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  margin-top: 5px;
  font-size: 34px;
  font-weight: 700;
  line-height: 1.3;
}
.hero__place-icon { width: 26px; height: auto; }

/* --- リード文 --- */
.hero__lead {
  margin-top: 35px;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.3;
}

/* 改行位置の出し分け */
.br-pc { display: inline; }
.br-sp { display: none; }

@media (max-width: 899px) {
  .hero {
    padding-top: calc(var(--header-height) + 35px);
    padding-bottom: 60px;
  }
  .hero__logos { gap: 17.8px; margin-bottom: 15px; }
  .hero__logo--ninejp { width: 112px; }
  .hero__logo--biojapan { width: 91px; }

  .hero__title { width: 323px; }

  .hero__date { margin-top: 9px; }
  .hero__date-year { font-size: 22px; }
  .hero__date-day  { font-size: 36px; }
  .hero__date-dash { font-size: 36px; }
  .hero__date-week { font-size: 12px; }
  .hero__date-note { font-size: 18px; }
  .hero__date-comma { font-size: 22px; }

  .hero__place {
    gap: 4.8px;
    margin-top: 2.2px;
    font-size: 15px;
  }
  .hero__place-icon { width: 11.4px; }

  .hero__lead { margin-top: 25px; font-size: 14px; }

  .br-pc { display: none; }
  .br-sp { display: inline; }
}

/* =========================================================
   共通：テキストリンク（丸アイコン + 下線テキスト）
   ========================================================= */
.link-item {
  display: inline-flex;
  align-items: flex-start;
  gap: 7px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 12px;
  line-height: 1.25;
  color: var(--color-white);
  transition: opacity .3s;
}
.link-item:hover { opacity: .7; }
.link-item__icon {
  flex-shrink: 0;
  width: 21.2px;
  height: 21.2px;
}
.link-item__text {
  padding-top: 3.2px;
  text-decoration: underline;
  text-underline-position: from-font;
}

/* =========================================================
   CONTENTS
   PC : 区切り線から88px下に見出し / 3カラム（360px × gap60）
   ========================================================= */
.contents { padding-top: 88px; padding-bottom: 0; }

/* --- カード3枚 --- */
.card-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 60px;
  margin-top: 50px;
}
.card { display: flex; flex-direction: column; }

/* 見出しブロック：画像の位置を3枚で揃えるため高さを固定 */
.card__head {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: 107px;
}
.card__date {
  align-self: flex-start;
  padding: 6px 10px;
  border-radius: 5px;
  background: linear-gradient(90deg, #323c4b 0%, rgba(50, 60, 75, .1) 100%);
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 12px;
  line-height: 1.25;
}
.card__title {
  margin-block: auto;   /* 1行見出し（ブース出展）を上下中央に置く */
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 28px;
  line-height: 1.21;
}

/* 下端がフェードアウトする画像 */
.card__image {
  margin-top: 15px;
  aspect-ratio: 360 / 216;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 58.1%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 58.1%, transparent 100%);
}
.card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.card__image--pitch img { object-position: left center; }
.card__image--panel img { object-position: center 14%; }
.card__image--booth img { object-position: center top; }

.card__text {
  margin-top: 6px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-gray);
  text-align: justify;
}
/* リンクは3枚で高さを揃えたいのでカード下端に寄せる */
.card__link { margin-top: auto; padding-top: 15px; align-self: flex-start; }

/* --- BioJapan2026とは？（十字に伸びる罫線の囲み） --- */
.about {
  position: relative;
  margin-top: 36px;
  padding: 20px 0;   /* 罫線が上下に20pxはみ出す分 */
}
/* 横罫線（左右いっぱい） */
.about::before,
.about::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--color-line-frame);
}
.about::before { top: 20px; }
.about::after { bottom: 20px; }

.about__frame {
  position: relative;
  display: flex;
  align-items: center;
  gap: 78px;
  min-height: 320px;
  padding-inline: 100px 90px;
}
/* 縦罫線（上下にはみ出す） */
.about__frame::before,
.about__frame::after {
  content: "";
  position: absolute;
  top: -20px;
  bottom: -20px;
  width: 1px;
  background: var(--color-line-frame);
}
.about__frame::before { left: 20px; }
.about__frame::after { right: 20px; }

.about__logo { flex-shrink: 0; width: 347px; }
.about__body { flex: 1; }
.about__title {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 28px;
  line-height: 1.21;
}
.about__text {
  margin-top: 20px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-gray);
  text-align: justify;
}
.about__links {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 20px;
}

@media (max-width: 899px) {
  .contents { padding-top: 60px; padding-bottom: 0; }

  .card-list {
    grid-template-columns: 1fr;
    gap: 40px;
    margin-top: 35px;
  }
  .card__head { gap: 12px; min-height: 0; }
  .card__title { font-size: 26px; }
  .card__image { margin-top: 15px; }
  .card__text { margin-top: 15px; font-size: 13px; }

  .about { margin-top: 40px; padding: 15px 10px; margin-inline: -10px; }
  .about::before { top: 15px; }
  .about::after { bottom: 15px; }
  .about__frame {
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
    min-height: 0;
    padding: 32px 30px;
  }
  .about__body { width: 100%; }
  .about__frame::before { left: 15px; }
  .about__frame::after { right: 15px; }
  .about__logo { width: 220px; align-self: center; }
  .about__title { font-size: 22px; }
  .about__text { margin-top: 15px; font-size: 13px; }
  .about__links { flex-direction: column; gap: 12px; }
}

/* =========================================================
   共通：ボタン
   ========================================================= */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 15px 20px;
  border-radius: 6px;
  background: var(--color-purple);
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 13px;
  line-height: 1.5;
  transition: opacity .3s;
}
.btn:hover { opacity: .85; }
.btn--outline {
  padding: 14px 20px;
  border: 1px solid var(--color-white);
  background: transparent;
}
.btn__arrow { width: 10px; height: auto; margin-left: auto; }

/* 小さいタグ型ボタン（表の行内） */
.tag-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: var(--color-purple);
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 13px;
  line-height: 1.5;
  text-align: center;
  transition: opacity .3s;
}
.tag-btn:hover { opacity: .85; }
.tag-btn--outline { border-color: var(--color-white); background: transparent; }

/* 共通：日時 / 場所 */
.meta { font-family: var(--font-en); font-weight: 700; }
.meta__row { display: flex; align-items: baseline; }
/* 値は「日時 /」の先頭から50pxの位置から始まる */
.meta__key { flex-shrink: 0; width: 50px; font-size: 16px; line-height: 1.5; white-space: nowrap; }
/* 英語版はラベルが「Date & Time /」等で長く、固定50pxだと値が押し出されて横スクロールする。
   Figma英語版もラベル幅＋13pxの可変レイアウトなので合わせる */
html[lang="en"] .meta__key { width: auto; padding-right: 13px; }
.meta__value { font-size: 24px; line-height: 1.5; }

/* =========================================================
   PITCH（グローバル・ピッチカンファレンス）
   ========================================================= */
.pitch { padding-top: 100px; padding-bottom: 120px; }

/* --- 半透明の角丸パネル --- */
.panel {
  position: relative;
  margin-top: 50px;
  padding: 60px 59px;
  border-radius: 10px;
  background: rgba(29, 31, 37, .5);
  /* FigmaのGLASSエフェクト（radius 9 / lightAngle -45°）の近似。
     背景をぼかしつつ、左上から光が当たったような縁を1pxで描く */
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
}
.panel::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg,
    rgba(255, 255, 255, .45) 0%,
    rgba(255, 255, 255, .14) 35%,
    rgba(255, 255, 255, .04) 60%,
    rgba(255, 255, 255, 0) 85%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
}
.panel + .panel { margin-top: 30px; }

/* 右カラムは常に左から428pxの位置。ラベル幅の差はgapが吸収する設計 */
.panel__head { display: flex; gap: 0; align-items: flex-start; }
.panel__head--stack { flex-direction: column; gap: 25px; }

/* 右カラム(.panel__detail)は固定654pxなので、左の見出し側を縮められるようにする。
   日本語は元々余裕があるので影響なし。英語は見出しが長く、縮まないと右カラムを潰す。
   max-width はFigma英語版の比率（479/1082≒44%）に合わせた上限 */
.panel__label { flex: 0 1 auto; min-width: 0; width: auto; max-width: 44%; }
/* 審査員・ネットワーキングは右カラム(.panel__detail)を持たないので、
   .panel__label の44%上限は外す。Figmaでは見出しブロックが690px（1082中）ある */
.panel__label--wide { width: auto; max-width: none; }
.panel__label-en {
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 16px;
  line-height: 1.3;
}
.panel__label-ja {
  margin-top: 12px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 40px;
  line-height: 1.3;
}
.panel__label-row { display: flex; align-items: center; gap: 31px; margin-top: 12px; }
.panel__label-row .panel__label-ja { margin-top: 0; }
.panel__label-note { font-size: 15px; font-weight: 500; line-height: 1.5; }

/* 縦罫線で区切られた右カラム */
.panel__detail {
  flex-shrink: 0;
  width: 654px;
  margin-left: auto;
  padding-left: 50px;
  border-left: 1px solid rgba(255, 255, 255, .3);
}
.panel__lead,
.panel__note { font-size: 15px; line-height: 1.5; }
.panel__detail .meta { margin-top: 20px; }
.panel__note { margin-top: 20px; }
.panel__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 25px; }
.panel__head--stack .panel__actions,
.panel__head--stack .meta { margin-top: 0; }

/* --- タイムテーブル --- */
.timetable { display: flex; flex-direction: column; gap: 10px; margin-top: 50px; }

.pitch-row {
  display: flex;
  /* 中身は自然幅で左から積み、ボタン列だけ右端に固定する
     （2名登壇の行は中身が785pxになり、間隔が85→20pxに詰まる設計） */
  gap: 0;
  align-items: flex-start;
  padding: 20px 25px;
  border: 1px solid rgba(255, 255, 255, .05);
  border-radius: 6px;
  background: linear-gradient(96deg, rgba(255, 255, 255, .027) 20%, rgba(255, 255, 255, .09) 100%);
}
/* オープニング等のシンプル行 */
.pitch-row--simple { align-items: center; gap: 26px; min-height: 84px; }
.pitch-row__label {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 23px;
  line-height: 1.3;
}

.pitch-row__main { display: flex; align-items: center; gap: 0; flex: 0 1 auto; min-width: 0; }
.pitch-row__time {
  flex-shrink: 0;
  width: 64px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 16px;
  line-height: 1.3;
}
.pitch-row__logo {
  flex-shrink: 0;
  width: 71px;
  height: 73px;
  margin-left: 26px;
  border-radius: 4px;
  background: var(--color-white);
  overflow: hidden;
}
.pitch-row__logo img { width: 100%; height: 100%; object-fit: contain; }
.pitch-row__logo--empty { background: transparent; }

.pitch-row__body { flex-shrink: 0; width: 440px; margin-left: 22px; }
/* 「…革新的細胞治療薬により」の1行目が440pxに2pxだけ届かず「り」が折り返してしまう。
   本文枠(440px)は変えず見出しだけ右に数pxはみ出させる（右側は136px空いている）。
   1240px未満は本文枠が可変になるので効かせない */
@media (min-width: 1240px) {
  .pitch-row__title--wide { width: 446px; }
}
.pitch-row__title {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 17px;
  line-height: 1.3;
  text-align: justify;
}
.pitch-row__affil {
  margin-top: 8px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 12px;
  line-height: 1.3;
}

/* 登壇者（1〜2名）と注記 */
.pitch-row__people {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  flex-shrink: 0;
  margin-left: 20px;
}
.pitch-row__photos { display: flex; }
/* 2人並ぶときは13px重ねる。重なりは左が前面 */
.pitch-row__photos > * + * { margin-left: -13px; }
.pitch-row__photos > :first-child { z-index: 1; }
.pitch-row__note {
  /* 行の高さを増やさないよう写真の下に絶対配置する */
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 3px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 9px;
  line-height: 1.3;
  color: #919191;
  white-space: nowrap;
}
/* 円形写真のリングはグラデーションstroke（上=#7A72CF → 下=白4%）
   登壇者2px / 審査員5px */
.pitch-row__photo::after,
.judge__photo::after,
.person__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  padding: var(--ring-width, 2px);
  background: linear-gradient(180deg, #7a72cf 0%, rgba(255, 255, 255, .04) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
}
.pitch-row__photo {
  position: relative;
  flex-shrink: 0;
  width: 77px;
  height: 77px;
  border-radius: 50%;
  overflow: hidden;
}
.pitch-row__photo img { width: 100%; height: 100%; object-fit: cover; }
/* 写真未定の枠。デザインは写真の上に #3E3E3E を重ねて塗りつぶしている */
.pitch-row__photo--empty { background: #3e3e3e; }

/* ボタンが1つだけの行は上下中央（デザインでは Frame 55 が y=19.5 に来る） */
.pitch-row__links {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  flex-shrink: 0;
  align-self: center;
  width: 226px;
  margin-left: auto;
}

/* --- ピッチ審査員 --- */
.judges { display: flex; gap: 53px; align-items: flex-start; margin-top: 45px; }
.judges__list {
  display: grid;
  grid-template-columns: repeat(5, 144px);
  gap: 41px 28px;
  flex-shrink: 0;
  width: 832px;
}
.judge,
.judges__mc {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 144px;
  text-align: center;
}
/* 審査員一覧と MC の間の縦罫線 */
.judges__mc { position: relative; flex-shrink: 0; padding-left: 53px; width: 197px; }
.judges__mc::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 1px;
  height: 388px;
  background: rgba(255, 255, 255, .3);
}
/* 審査員一覧を隠しているときは、一覧とMCを分ける罫線と寄せ余白も一緒に消す
   （u-first-hidden を外せば自動で戻る） */
.judges__list.u-first-hidden + .judges__mc { width: 144px; padding: 0; }
.judges__list.u-first-hidden + .judges__mc::before { content: none; }

.judge__photo {
  position: relative;
  width: 116px;
  height: 116px;
  border-radius: 50%;
  --ring-width: 5px;
}
.judge__photo img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.judge__photo--empty { background: #616161; }
/* MCバッジは円の外接矩形の左上に置く（＝円弧の外側にはみ出す） */
.judge__badge {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  padding: 2px 10px;
  border-radius: 20px;
  background: linear-gradient(120deg, #382086 19%, #746b92 99%);
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 14px;
  line-height: 1.3;
}
.judge__role {
  margin-top: 17px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 10px;
  line-height: 1.3;
}
.judge__name {
  margin-top: 4px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 16px;
  letter-spacing: .06em;
  line-height: 1.3;
}

@media (max-width: 899px) {
  /* 区切り線（.about::after）から見出しまで70px。.contents の下余白は持たせない */
  .pitch { padding-top: 55px; padding-bottom: 60px; }
  .sec-head__en--md { font-size: 30px; }
  .sec-head__br { display: inline; }
  .sec-head__sub { margin-top: 12px; font-size: 16px; }
  /* PITCHの見出し直下だけパネルまで30px */
  .pitch .sec-head + .panel { margin-top: 30px; }

  /* パネルは左右10px（=355px幅）まで広げる */
  .panel {
    margin-top: 35px;
    margin-inline: -10px;
    padding: 25px;
    border-radius: 10px;
  }
  .panel + .panel { margin-top: 20px; }
  .panel__head { flex-direction: column; gap: 19px; }
  /* 縦積みパネル（ネットワーキング）は見出し→日時→ボタンが15px間隔 */
  .panel__head--stack { gap: 15px; }
  /* 英語版は "Networking Sponsored by LINK-J" が24pxだと305pxに収まらず2行になる。
     1行で見せる指示なので、この見出しだけ詰める（--stack はこのパネルのみ）。
     19pxだと枠ぴったりで余裕が無いため18pxにしている */
  html[lang="en"] .panel__head--stack .panel__label-ja { font-size: 18px; }
  .panel__label { width: 100%; max-width: none; }
  .panel__label-en { font-size: 12px; }
  .panel__label-ja { font-size: 24px; }
  .panel__label-row { flex-direction: column; align-items: flex-start; gap: 10px; }
  .panel__label-note { font-size: 13px; }
  /* 区切りは縦罫線 → 上罫線に変わる */
  .panel__detail {
    width: 100%;
    padding-left: 0;
    padding-top: 20px;
    border-left: 0;
    border-top: 1px solid rgba(255, 255, 255, .3);
  }
  .panel__lead,
  .panel__note { font-size: 14px; }
  .panel__detail .meta,
  .panel__note { margin-top: 15px; }
  .meta__key { width: 39px; font-size: 13px; }
  .meta__value { font-size: 15px; }
  .panel__actions { flex-direction: column; align-items: stretch; gap: 10px; }
  /* 縦積みパネル（ネットワーキング）は .panel__head の align-items: flex-start で
     アクション欄が内容幅に縮むので、パネル幅いっぱいに戻す */
  .panel__head--stack .panel__actions { width: 100%; }
  .btn { justify-content: center; gap: 10px; font-size: 13px; }
  .btn__arrow { margin-left: 0; }

  .timetable { margin-top: 30px; }
  .pitch-row { flex-direction: column; gap: 15px; padding: 20px; }
  .pitch-row--simple { flex-direction: row; align-items: center; gap: 16px; min-height: 92px; }
  /* オープニング等の1行タイプは時刻を折り返さない */
  .pitch-row--simple .pitch-row__time {
    width: auto;
    flex-shrink: 0;
    margin-bottom: 0;
  }
  .pitch-row__label { font-size: 20px; }
  /* 時刻 → ロゴ+顔写真 → タイトル の縦積みに変わる */
  .pitch-row__main {
    flex-wrap: wrap;
    column-gap: 14px;
    row-gap: 12px;
    width: 100%;
  }
  .pitch-row__time { width: 100%; margin-bottom: -2px; font-size: 14px; }
  .pitch-row__logo { width: 59px; height: 61px; margin-left: 0; }
  .pitch-row__photo { width: 60.6px; height: 60.6px; }
  .pitch-row__photos > * + * { margin-left: -10px; }
  .pitch-row__people { margin-left: 0; align-items: flex-start; }
  /* SPは絶対配置をやめて写真の下に置く。写真ブロックの右端に揃える */
  .pitch-row__note { position: static; align-self: flex-end; }
  .pitch-row__body { order: 3; width: 100%; margin-left: 0; }
  .pitch-row__title { font-size: 15px; }
  .pitch-row__affil { margin-top: 8px; }
  .pitch-row__links { width: 100%; gap: 6px; margin-left: 0; }
  .tag-btn { font-size: 13px; }

  /* 一覧とMCは縦積み。罫線は一覧の40px下 */
  .judges { flex-direction: column; align-items: stretch; gap: 40px; margin-top: 30px; }
  /* 2列 × 5段（カード144px・列間22px・行間30px） */
  .judges__list {
    grid-template-columns: repeat(2, 144px);
    justify-content: space-between;
    column-gap: 0;
    row-gap: 30px;
    width: 100%;
  }
  .judge { width: 144px; }
  /* MCはパネル幅いっぱいに広げて中央寄せ、上の罫線も全幅に伸ばす */
  .judges__mc { width: 100%; padding-left: 0; padding-top: 41px; }
  /* SPでは一覧を隠していてもMCは中央寄せのまま全幅 */
  .judges__list.u-first-hidden + .judges__mc { width: 100%; }
  .judges__mc::before { width: 100%; height: 1px; }
  .judge__role { margin-top: 9px; }
}

/* ロゴのリンク化（Figmaコメントの遷移先指示）。img と同じ箱にする */
.partners__link { display: block; line-height: 0; transition: opacity .3s; }
.partners__link:hover { opacity: .8; }

/* =========================================================
   追従CTA（画面右下に固定・3ボタン）
   ========================================================= */
.fixed-cta {
  position: fixed;
  /* 右と下の余白は同じ */
  right: 24px;
  bottom: 24px;
  z-index: 85;
}
/* FVを通り過ぎてから出す。初期状態（非表示）はJSが is-ready を付けてから有効にするので、
   JSが動かない環境では常時表示のまま */
.fixed-cta.is-ready {
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity .4s, transform .4s, visibility .4s;
}
.fixed-cta.is-ready.is-visible {
  opacity: 1;
  visibility: visible;
  transform: none;
  pointer-events: auto;
}
.fixed-cta__list { display: flex; flex-direction: column; gap: 8px; }
.fixed-cta__btn {
  position: relative;
  display: block;
  /* 1・2番目が1行に収まる幅。3番目だけ2行になる */
  width: 344px;
  padding: 12px 38px 12px 16px;
  border-radius: 5px;
  background: var(--color-purple);
  box-shadow: 0 4px 16px rgba(0, 0, 0, .45);
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 13px;
  line-height: 1.5;
  text-align: left;
  transition: opacity .3s;
}
.fixed-cta__btn:hover { opacity: .85; }
/* 英語版は文言が長く344pxだと1番目も2行になるため少し広げる（3番目は日英とも2行） */
@media (min-width: 900px) {
  html[lang="en"] .fixed-cta__btn { width: 380px; }
}
.fixed-cta__arrow {
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  width: 10px;
  height: auto;
}

@media (max-width: 899px) {
  /* SPはSHAREバーが無いので画面下端いっぱいに置く */
  .fixed-cta { right: 10px; left: 10px; bottom: 10px; }
  .fixed-cta__list { gap: 6px; }
  .fixed-cta__btn {
    width: 100%;
    padding: 10px 30px 10px 12px;
    font-size: 11px;
    line-height: 1.4;
  }
  .fixed-cta__arrow { right: 12px; }
}

/* =========================================================
   共通：セクション末尾の大きめCTA
   ========================================================= */
.cta-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 32px;
  margin-top: 50px;
}
.cta-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 398px;
  min-height: 65px;
  /* 文字は左30px起点・矢印は右32px（デザイン実測）。均等paddingだと折り返す */
  padding: 10px 68px 10px 30px;
  border-radius: 5px;
  background: var(--color-purple);
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 20px;
  line-height: 1.4;
  text-align: center;
  transition: opacity .3s;
}
.cta-btn:hover { opacity: .85; }
.cta-btn--wide { width: 525px; padding-right: 58px; }
.cta-btn__arrow {
  position: absolute;
  right: 32px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: auto;
}

/* =========================================================
   スペシャルパネル & ピッチセッション
   ========================================================= */
.session { padding-block: 120px; }
.session .panel { margin-top: 60px; }

.panel__label--lg { width: 360px; }
.panel__label--lg .panel__label-ja { margin-top: 0; }
.btn--2line { text-align: left; line-height: 1.4; }

/* --- パネル内の見出し付きブロック --- */
.panel-block {
  padding: 40px;
  border: 1px solid rgba(255, 255, 255, .05);
  border-radius: 6px;
  background: linear-gradient(92deg, rgba(255, 255, 255, .027) 20%, rgba(255, 255, 255, .09) 100%);
}
.panel-block__title {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 25px;
  line-height: 1.3;
}
.panel-block__text {
  margin-top: 15px;
  font-size: 15px;
  line-height: 1.5;
  text-align: justify;
}

/* --- 登壇者 --- */
.panelists { display: flex; gap: 60px; align-items: flex-end; margin-top: 29px; }
.panelists__label {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 16px;
  line-height: 1.3;
}
.panelists__list { display: flex; gap: 52px; margin-top: 11px; }
/* Moderator は縦罫線で区切る */
.panelists__group--moderator {
  position: relative;
  padding-left: 60px;
}
.panelists__group--moderator::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 1px;
  height: 215px;
  background: rgba(255, 255, 255, .3);
}

.person {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 144px;
  text-align: center;
}
.person__photo {
  position: relative;
  width: 116px;
  height: 116px;
  border-radius: 50%;
  --ring-width: 5px;
}
.person__photo img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.person__photo--soon::after { content: none; }
.person__soon {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 18px;
  line-height: 1.1;
  color: var(--color-purple);
}
.person__role {
  margin-top: 17px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 10px;
  line-height: 1.3;
}
.person__name {
  margin-top: 4px;
  font-family: var(--font-en);
  font-weight: 500;
  font-size: 16px;
  letter-spacing: .06em;
  line-height: 1.3;
}

/* 「Coming Soon...」を見出しの後ろに余白付きで置く */
.pitch-row__soon { margin-left: 6em; }

@media (max-width: 899px) {
  .cta-row { flex-direction: column; align-items: stretch; gap: 12px; margin-top: 32px; }
  .cta-btn,
  .cta-btn--wide { width: 100%; min-height: 65px; padding: 10px 40px; font-size: 16px; }
  .cta-btn__arrow { right: 20px; width: 12px; }

  .session { padding-block: 60px; }
  .session .panel { margin-top: 35px; }
  .session .panel__head { gap: 24px; }
  .panel__label--lg { width: 100%; }

  .panel-block { padding: 20px 16px; }
  .panel-block__title { font-size: 18px; }
  .panel-block__text { margin-top: 10px; font-size: 13px; }

  .panelists { flex-direction: column; gap: 32px; align-items: stretch; margin-top: 24px; }
  /* 審査員グリッドと同じ 2列 × カード144px */
  .panelists__list {
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 30px 16px;
  }
  .panelists__group--moderator { padding-left: 0; padding-top: 32px; }
  .panelists__group--moderator::before { width: 100%; height: 1px; top: 0; bottom: auto; }
  .person { width: calc(50% - 8px); max-width: 144px; }
  .person__role { margin-top: 9px; }
  .pitch-row__soon { display: block; margin-left: 0; }
}

/* =========================================================
   BOOTH（ブース出展）
   ========================================================= */
.booth { padding-block: 88px 120px; }
.sec-head__sub--sm { font-size: 23px; font-weight: 500; margin-top: 30px; }
.booth .panel { margin-top: 60px; }
.booth .meta { width: 727px; max-width: 100%; }

.booth__layout { margin-top: 40px; }
.booth__layout img { width: 100%; height: auto; border-radius: 6px; }

.booth__list { margin-top: 50px; }
.booth__list-title {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 36px;
  line-height: 1.3;
}

.booth-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 20px;
}
.booth-card {
  display: flex;
  flex-direction: column;
  padding: 40px;
  border: 1px solid rgba(255, 255, 255, .05);
  border-radius: 10px;
  background: linear-gradient(140deg, rgba(255, 255, 255, .027) 8%, rgba(255, 255, 255, .09) 97%);
}
/* 見出しと分類行は高さ固定。Coming Soon等で行数が減っても
   下の要素（ロゴ・罫線・ボタン）の位置が揃うようにするため */
.booth-card__title {
  min-height: 102px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 26px;
  line-height: 1.3;
  text-align: justify;
}
.booth-card__body { display: flex; gap: 18px; align-items: flex-start; margin-top: 23px; }
/* ロゴは白枠ごとFigmaから書き出しているため、背景・余白はCSSで持たない */
.booth-card__logo {
  flex-shrink: 0;
  width: 117px;
  height: 120px;
  border-radius: 7px;
  overflow: hidden;
}
.booth-card__logo img { width: 100%; height: 100%; object-fit: cover; }
.booth-card__logo--empty { background: rgba(255, 255, 255, .08); }
.booth-card__text { font-size: 16px; line-height: 1.4; text-align: justify; }

.booth-card__meta {
  display: flex;
  align-items: flex-start;
  min-height: 54px;
  margin-top: 23px;
  padding-top: 12px;
  /* 罫線は2階調（ラベル幅140pxまで白100%、その先は白40%）・1px */
  background-image: linear-gradient(90deg,
    #ffffff 0, #ffffff 140px,
    rgba(255, 255, 255, .4) 140px, rgba(255, 255, 255, .4) 100%);
  background-repeat: no-repeat;
  background-size: 100% 1px;
  background-position: left top;
  font-size: 15px;
  line-height: 1.4;
  text-align: justify;
}
.booth-card__meta-key { flex-shrink: 0; width: 140px; font-weight: 600; }
.booth-card__meta-value { font-weight: 500; }

.booth-card__actions { display: flex; gap: 10px; margin-top: auto; padding-top: 25px; }
.cta-btn--sm {
  width: 222px;
  min-height: 53px;
  padding: 8px 34px;
  font-size: 13px;
  line-height: 1.4;
}
.cta-btn--sm .cta-btn__arrow { right: 20px; width: 10px; }
.cta-btn--outline { border: 1px solid var(--color-white); background: transparent; }

@media (max-width: 899px) {
  .booth { padding-block: 60px; }
  .sec-head__sub--sm { font-size: 17px; margin-top: 18px; }
  .booth .panel { margin-top: 35px; }
  .booth .meta { width: 100%; }
  .booth__layout { margin-top: 24px; }
  .booth__list { margin-top: 32px; }
  .booth__list-title { font-size: 22px; }
  .booth-cards { grid-template-columns: 1fr; gap: 12px; }
  /* SPは「見出し + ロゴ」を横並びにし、説明文をその下に回す */
  .booth-card {
    display: grid;
    grid-template-columns: 1fr 74px;
    column-gap: 23px;
    row-gap: 15px;
    padding: 20px;
  }
  .booth-card__body { display: contents; }
  /* 狭い列でjustifyすると字間が開くため左寄せにする */
  .booth-card__title { grid-area: 1 / 1; min-height: 76px; font-size: 20px; text-align: left; }
  .booth-card__logo {
    grid-area: 1 / 2;
    width: 74px;
    height: 76px;
  }
  .booth-card__text { grid-area: 2 / 1 / auto / -1; font-size: 14px; }
  .booth-card__meta {
    grid-area: 3 / 1 / auto / -1;
    min-height: 52px;
    margin-top: 0;
    /* SPは左38pxまで白100% */
    background-image: linear-gradient(90deg,
      #ffffff 0, #ffffff 38px,
      rgba(255, 255, 255, .4) 38px, rgba(255, 255, 255, .4) 100%);
    font-size: 15px;
  }
  .booth-card__meta-key { width: 51px; }
  /* 英語の "Category" は68px必要で51pxだと値に重なる。罫線の白い区間もラベル幅に合わせる */
  html[lang="en"] .booth-card__meta-key { width: 80px; }
  html[lang="en"] .booth-card__meta {
    background-image: linear-gradient(90deg,
      #ffffff 0, #ffffff 68px,
      rgba(255, 255, 255, .4) 68px, rgba(255, 255, 255, .4) 100%);
  }
  .booth-card__actions {
    grid-area: 4 / 1 / auto / -1;
    flex-direction: column;
    gap: 6px;
    padding-top: 0;
  }
  .cta-btn--sm { width: 100%; min-height: 36px; padding: 8px; }
  .booth-card__actions .cta-btn__arrow { display: none; }
}

/* =========================================================
   INFORMATION（開催概要）
   ラベル246px + 内容620px の定義リスト（合計866px・中央寄せ）
   ========================================================= */
.information { padding-block: 88px 0; }

.info {
  width: 866px;
  max-width: 100%;
  margin: 80px auto 0;
}
.info__row {
  padding-top: 25px;
  /* 罫線は2階調（ラベル幅246pxまで白100%、その先は白20%）・太さ2px */
  background-image: linear-gradient(90deg,
    #ffffff 0, #ffffff 246px,
    rgba(255, 255, 255, .2) 246px, rgba(255, 255, 255, .2) 100%);
  background-repeat: no-repeat;
  background-size: 100% 2px;
  background-position: left top;
}
.info__row + .info__row { margin-top: 50px; }
.info__row,
.info__line { display: flex; align-items: flex-start; }
.info__row--stack { display: block; }
.info__row--stack .info__figure { margin-top: 24px; margin-left: 246px; }

.info__key {
  flex-shrink: 0;
  width: 246px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 26px;
  line-height: 1;
}
.info__value { width: 620px; }
.info__value--strong {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 26px;
  line-height: 1;
}
.info__address {
  margin-top: 16px;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 16px;
  line-height: 1;
}
.info__figure img { width: 100%; height: auto; }
/* Googleマップ埋め込み。width/height属性のままだと縮まず横スクロールするので比率で持つ */
.info__figure--gmap iframe {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  aspect-ratio: 620 / 344;
  border-radius: 5px;
}

/* 地図上の赤枠と補足ラベル */
.info__figure--map { position: relative; }
.info__marker {
  position: absolute;
  border: 5px solid #d50a0a;
}
.info__map-label {
  position: absolute;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 20px;
  line-height: normal;
  color: #000000;
  white-space: nowrap;
}

@media (max-width: 899px) {
  .information { padding-block: 60px 0; }
  .info { margin-top: 40px; }
  .info__row {
    padding-top: 22px;
    /* SPは左67pxまで白100% */
    background-image: linear-gradient(90deg,
      #ffffff 0, #ffffff 67px,
      rgba(255, 255, 255, .2) 67px, rgba(255, 255, 255, .2) 100%);
  }
  .info__row + .info__row { margin-top: 30px; }
  .info__row,
  .info__line { display: block; }
  .info__row--stack .info__figure { margin-top: 8px; margin-left: 0; }
  .info__key { width: auto; font-size: 14px; }
  .info__value { width: auto; margin-top: 12px; }
  .info__value--strong { font-size: 17px; }
  .info__address { margin-top: 8px; font-size: 13px; line-height: 1.3; }
  .info__marker { border-width: 3px; }
  .info__map-label { font-size: 11px; }
}

/* =========================================================
   PARTNERS（白背景）
   ========================================================= */
.partners {
  margin-top: 120px;
  padding-block: 120px;
  background: var(--color-white);
}
/* 見出しだけ濃色グラデーションに切り替える */
.sec-head__en--dark {
  background-image: linear-gradient(90deg, #382086 0%, #05040f 63.6%);
}

.partners__list {
  width: 866px;
  max-width: 100%;
  margin: 80px auto 0;
}
/* 罫線→ロゴの距離は行ごとに違う（30 / 37 / 48px）。行の高さも設計値で固定 */
.partners__row:nth-child(1) { height: 220px; }
.partners__row:nth-child(2) { height: 308px; }
.partners__row:nth-child(1) .partners__logos { margin-top: 30px; }
.partners__row:nth-child(2) .partners__logos { margin-top: 37px; }
.partners__row:nth-child(3) .partners__logos { margin-top: 48px; }
.partners__row {
  display: flex;
  align-items: flex-start;
  padding-top: 0;
  /* 罫線は2階調（左246pxが濃色、その先は20%）・太さ2px */
  background-image: linear-gradient(90deg,
    #05040f 0, #05040f 246px,
    rgba(5, 4, 15, .2) 246px, rgba(5, 4, 15, .2) 100%);
  background-repeat: no-repeat;
  background-size: 100% 2px;
  background-position: left top;
}
.partners__label {
  flex-shrink: 0;
  width: 246px;
  margin-top: 47px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 24px;
  line-height: 1;
  color: var(--color-bg);
}
.partners__logos {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 29px;
  width: 620px;
}
/* CO-ORGANIZERは2段。4点の外接ブロック(496px)を中央に置き、段ごとに間隔が違う */
.partners__logo-row { display: flex; align-items: center; width: 496px; }
.partners__logo-row:first-child { gap: 71px; padding-left: 26px; }
.partners__logo-row:last-child { gap: 28px; }
.partners__logos img { height: auto; }
.partners__logos img[alt="NINEJP"] { width: 445px; }
.partners__logos img[alt="MEDU-NET"] { width: 210px; }
.partners__logos img[alt="LINK-J"] { width: 172px; }
.partners__logos img[alt="Science Tokyo"] { width: 263px; }
.partners__logos img[alt="SMBC グループ"] { width: 205px; }
.partners__logos img[alt="Symphonity"] { width: 261px; }

@media (max-width: 899px) {
  .partners { margin-top: 60px; padding-block: 60px; }
  .partners__list { margin-top: 40px; }
  .partners__row {
    display: block;
    min-height: 0;
    padding-top: 22px;
    /* SPは左168pxまでパープル100%、その先は20% */
    background-image: linear-gradient(90deg,
      #382086 0, #382086 168px,
      rgba(56, 32, 134, .2) 168px, rgba(56, 32, 134, .2) 100%);
  }
  .partners__row + .partners__row { margin-top: 40px; }
  /* PCの行高・ロゴ位置はSPでは使わない */
  .partners__row:nth-child(1),
  .partners__row:nth-child(2) { height: auto; }
  .partners__label { width: auto; margin-top: 0; font-size: 14px; line-height: 1; }
  /* CO-ORGANIZERは2段。SPは段内48px / 19px、段間19px */
  .partners__row:nth-child(1) .partners__logos,
  .partners__row:nth-child(2) .partners__logos,
  .partners__row:nth-child(3) .partners__logos {
    width: 100%;
    gap: 19px;
    margin-top: 15px;
  }
  .partners__logo-row { width: 100%; justify-content: center; }
  .partners__logo-row:first-child { gap: 48px; padding-left: 0; }
  .partners__logo-row:last-child { gap: 19px; }
  /* SUPPORTERのロゴだけ10px下げる（デザインの pt-10 相当） */
  .partners__row:nth-child(3) .partners__logos { margin-top: 25px; }
  .partners__logos img { max-width: 100%; }
  .partners__logos img[alt="NINEJP"] { width: 335px; }
  .partners__logos img[alt="MEDU-NET"] { width: 142px; }
  .partners__logos img[alt="LINK-J"] { width: 116px; }
  .partners__logos img[alt="Science Tokyo"] { width: 178px; }
  .partners__logos img[alt="SMBC グループ"] { width: 139px; }
  .partners__logos img[alt="Symphonity"] { width: 205px; }
}

/* =========================================================
   フッター
   ========================================================= */
.footer {
  padding-block: 60px;
  text-align: center;
}
.footer__copyright {
  font-family: var(--font-en);
  font-weight: 400;
  font-size: 12px;
  line-height: 1.2;
  color: var(--color-white);
}

/* =========================================================
   スクロールインアニメーション
   ========================================================= */
/* 初期状態（透明）は JS が .is-fade-ready を付けてから適用する
   （JS無効時に本文が消えないようにするため） */
.js-fade.is-fade-ready {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .8s ease, transform .8s ease;
}
.js-fade.is-fade-ready.is-visible {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .js-fade.is-fade-ready { opacity: 1; transform: none; transition: none; }
  .fixed-cta.is-ready { transition: none; transform: none; }
  .fixed-cta.is-ready.is-visible { transform: none; }
}

/* =========================================================
   参加方法モーダル
   オーバーレイ #050410 50% + ぼかし / 本体1200px・#1D1F25・角丸10
   ========================================================= */
.modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 20px;
  overflow-y: auto;
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s, visibility .3s;
}
.modal.is-open { opacity: 1; visibility: visible; }

.modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(5, 4, 16, .5);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
}

.modal__box {
  position: relative;
  width: 100%;
  max-width: var(--container);
  margin: auto;
  padding: 60px 59px;
  border-radius: 10px;
  background: #1d1f25;
  /* パネルと同じGLASSエフェクトの縁 */
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
}
.modal__box::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg,
    rgba(255, 255, 255, .45) 0%,
    rgba(255, 255, 255, .14) 35%,
    rgba(255, 255, 255, .04) 60%,
    rgba(255, 255, 255, 0) 85%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
}

/* 閉じるボタン（2px の×） */
.modal__close {
  position: absolute;
  top: 40px;
  right: 40px;
  width: 37px;
  height: 37px;
  transition: opacity .3s;
}
.modal__close:hover { opacity: .6; }
.modal__close::before,
.modal__close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 2px;
  background: var(--color-white);
}
.modal__close::before { transform: translate(-50%, -50%) rotate(45deg); }
.modal__close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

.modal__head { width: 727px; max-width: 100%; }
/* 英語版は「Date & Time / October 8 (Thu), 2026, 13:00–16:40 (Doors Open at 12:45)」が
   727pxに収まらず折り返すので、この見出しブロックだけ広げる（枠1082pxの範囲内） */
html[lang="en"] .modal__head { width: 800px; }
.modal__title {
  padding-bottom: 30px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 50px;
  line-height: 1.3;
}
.modal__subtitle {
  margin-top: 10px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 30px;
  line-height: 1.3;
}
.modal__head .meta { margin-top: 10px; }

/* --- 3ステップ（縦罫線つき） --- */
.modal__steps {
  display: flex;
  gap: 50px;
  align-items: flex-start;
  margin-top: 50px;
}
.modal-step {
  width: 326px;
  padding-left: 25px;
  border-left: 2px solid var(--color-white);
}
.modal-step__title {
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 28px;
  line-height: 1.21;
}
/* 見出しに添える「（参加無料）」。同じ字送りだと枠(326px)で折り返すので小さくする */
.modal-step__free { font-size: 16px; }
/* 日本語は全角括弧が間隔を作るが、英語の「※For Free」は見出しに密着するので少し離す */
html[lang="en"] .modal-step__free { margin-left: 6px; }
.modal-step__text,
.modal-card__text {
  margin-top: 15px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-gray);
  text-align: justify;
}
.modal-step__text strong { font-weight: 700; }
.modal-step .link-item { margin-top: 15px; }

/* --- ネットワーキング用の2カード --- */
.modal__cards { display: flex; gap: 20px; align-items: stretch; margin-top: 30px; }
.modal-card {
  flex: 1;
  padding: 50px;
  border: 1px solid rgba(255, 255, 255, .05);
  border-radius: 6px;
  background: linear-gradient(92deg, rgba(255, 255, 255, .027) 20%, rgba(255, 255, 255, .09) 100%);
}
.modal-card--wide {
  display: flex;
  gap: 8px;
  align-items: flex-end;
  flex: 0 0 621px;
}
.modal-card__body { width: 301px; }
.modal-card__body .modal-card__text { margin-top: 14px; font-size: 16px; }
.modal-card__btn { flex-shrink: 0; width: 210px; }
.modal-card > .modal-card__text { font-size: 16px; }

.modal__notes {
  margin-top: 30px;
  font-family: var(--font-en);
  font-weight: 600;
  font-size: 12px;
  line-height: 1.3;
  color: var(--color-gray);
}
.modal__notes a { text-decoration: underline; }

@media (max-width: 899px) {
  .modal { padding: 20px 10px; }
  .modal__box { padding: 40px 20px; }
  .modal__close { top: 16px; right: 16px; width: 28px; height: 28px; }
  .modal__title { padding-bottom: 16px; font-size: 28px; }
  .modal__subtitle { font-size: 18px; }
  .modal__steps { flex-direction: column; gap: 24px; margin-top: 30px; }
  .modal-step { width: 100%; padding-left: 16px; }
  .modal-step__title { font-size: 20px; }
  .modal-step__free { font-size: 13px; }
  .modal-step__text,
  .modal-card__text { font-size: 13px; }
  .modal__cards { flex-direction: column; gap: 12px; margin-top: 24px; }
  .modal-card { flex: none; padding: 20px 16px; }
  .modal-card--wide { flex-direction: column; align-items: stretch; gap: 16px; }
  .modal-card__body { width: 100%; }
  .modal-card__body .modal-card__text,
  .modal-card > .modal-card__text { font-size: 13px; }
  .modal-card__btn { width: 100%; }
  .modal__notes { margin-top: 24px; font-size: 11px; }
}

/* =========================================================
   中間幅（900px〜1239px）
   PCデザインは1440px基準のため、固定幅を可変に落として収める
   ========================================================= */
@media (min-width: 900px) and (max-width: 1239px) {
  .panel { padding: 40px 30px; }
  .panel__head { gap: 40px; }
  .panel__label--lg { width: 280px; }
  .panel__detail { flex: 1; width: auto; min-width: 0; padding-left: 30px; }

  .pitch-row { gap: 0; }
  .pitch-row__main { flex-wrap: wrap; }
  .pitch-row__body { flex: 1; width: auto; min-width: 220px; margin-left: 0; }
  .pitch-row__logo { margin-left: 0; }

  .judges { gap: 30px; }
  .judges__list {
    flex: 1;
    width: auto;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 28px 12px;
  }
  .judge { width: auto; }
  .judges__mc { width: auto; min-width: 150px; padding-left: 30px; }

  .panelists { gap: 30px; }
  .panelists__list { flex-wrap: wrap; gap: 28px 24px; }
  .panelists__group--moderator { padding-left: 30px; }
  .person { width: 130px; }

  /* 英語版はモーダルの日時行が900〜953pxで折り返すので、この帯だけ左右余白を詰める */
  html[lang="en"] .modal__box { padding-inline: 30px; }

  .booth-card { padding: 24px; }
  .booth-card__meta-key { width: 90px; }
  .booth-card__actions { gap: 8px; }
  .booth-card__actions .cta-btn--sm { flex: 1; width: auto; min-width: 0; padding-inline: 12px 28px; }
  .booth-card__actions .cta-btn__arrow { right: 10px; }
  .booth .meta { width: 100%; }

  .info,
  .partners__list { width: 100%; }
  .info__value { flex: 1; width: auto; min-width: 0; }
  .info__row--stack .info__figure { margin-left: 0; }
  .partners__logos { flex: 1; width: auto; }
}
