/* ===== css/00-tokens.css ===== */
/* デザイントークンと共通部品。出典=Figma デザインファイル(IjYZa7FR6XSvTbyNFHmpa6)のPC版1425px/SP版375px
   ブレークポイントは1つだけ: >=1024px がPCレイアウト、それ未満がSPレイアウト（モバイルファースト）。 */
:root {
  --c-bg: #fbfaf7;
  --c-text: #333;
  --c-muted: #666;
  --c-accent: #2db2b1;      /* ティール: 日付・ボタン・イベント見出し */
  --c-line: #c6c6c6;
  --c-red: #b70f16;         /* 告知・必須条件・発表会 */
  --c-note-red: #f60000;    /* 「※最長3年間支援」 */
  --c-purple: #7a7ad1;      /* オンライン個別相談会 */
  --c-link: #002068;        /* 交付要綱などのリンク */
  --c-sidebar: #f4f2ed;
  --c-white: #fff;
  --f-jp: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
  --f-en: "Lato", "Noto Sans JP", sans-serif;
  --sidebar-w: 220px;
  --header-h: 66px;         /* SP固定ヘッダー */
  --announce-h: 57px;       /* PC告知バー */
  --inner-w: 1000px;        /* PCの本文幅 */
  --gutter: 19px;           /* SPの左右余白 */
  --sec-pad-top: 120px;     /* セクション上余白(SP) */
  --sec-pad-bottom: 90px;   /* セクション下余白(SP) */
}
@media (min-width: 1024px) {
  :root { --gutter: 40px; --sec-pad-top: 150px; --sec-pad-bottom: 120px; }
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--f-jp);
  font-size: 16px;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}
img, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, p, ul, ol, dl, dd, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button { font: inherit; color: inherit; }
section[id], [id="top"] { scroll-margin-top: var(--header-h); }
@media (min-width: 1024px) { section[id], [id="top"] { scroll-margin-top: var(--announce-h); } }

.skip-link { position: absolute; left: -9999px; top: 0; background: #fff; padding: 8px 12px; z-index: 1000; }
.skip-link:focus { left: 8px; top: 8px; }

/* ---- セクション共通 ---- */
.sec { background: var(--c-bg); padding: var(--sec-pad-top) 0 var(--sec-pad-bottom); }
.inner { width: 100%; max-width: var(--inner-w); margin-inline: auto; padding-inline: var(--gutter); }
@media (min-width: 1024px) { .inner { padding-inline: 0; width: min(var(--inner-w), calc(100% - 80px)); } }

/* 見出し: 英字(Lato Black) + 日本語サブタイトル(下線つき) */
.sec-title { text-align: center; display: flex; flex-direction: column; align-items: center; font-weight: 400; }
.sec-title__en {
  font-family: var(--f-en); font-weight: 900; font-size: 28px; line-height: 1.4; letter-spacing: 0;
}
.sec-title__ja {
  display: inline-block; margin-top: 20px; padding-bottom: 8px; font-size: 16px; line-height: 1.5;
  border-bottom: 1px solid var(--c-line);
}
@media (min-width: 1024px) {
  .sec-title__en { font-size: 40px; line-height: 1.4; }
  .sec-title__ja { font-size: 20px; margin-top: 10px; }
}

/* ボタン */
.btn {
  display: inline-flex; align-items: center; justify-content: center; text-align: center; text-decoration: none;
  font-weight: 700; line-height: 1.5; border-radius: 6px; padding: 15px 24px; border: 0; cursor: pointer;
  transition: opacity .2s;
}
.btn:hover { opacity: .85; }
.btn--accent { background: var(--c-accent); color: #fff; border-radius: 12px; font-size: 20px; }
.btn--dark { background: var(--c-text); color: #fff; font-size: 20px; }
.btn--red { background: var(--c-red); color: #fff; font-size: 20px; }
.btn--block { display: flex; width: 100%; }
.btn[aria-disabled="true"] { pointer-events: none; }

/* 本文の強調・注記 */
.u-red { color: var(--c-red); font-weight: 700; }

/* ---- スクロールで現れる動き（Studioのfade-inに相当） ---- */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s ease, transform .8s ease; }
.reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
}
/* JSが無効でも内容が見えるように */
.no-js .reveal { opacity: 1; transform: none; }

.visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ===== css/10-shell.css ===== */
/* シェル: サイドバー(PC) / ヘッダーとメニュー(SP) / 告知バー / 先頭へ戻る / ヒーロー / 帯画像 */

/* ===== 既定=SPレイアウト ===== */
.sidebar { display: none; }

.sp-header {
  position: fixed; inset: 0 0 auto 0; height: var(--header-h); background: #fff; z-index: 60;
  display: flex; align-items: center; padding: 0 15px; gap: 16px;
}
.sp-header__logo { margin-right: auto; display: block; width: 120px; }
.sp-header__logo img { width: 120px; height: 54px; object-fit: contain; }
.sp-header__ig, .sp-header__burger { display: grid; place-items: center; background: none; border: 0; padding: 0; cursor: pointer; }
.sp-header__burger { width: 25px; height: 25px; margin-left: 4px; }
.sp-menu {
  position: fixed; inset: var(--header-h) 0 0 0; z-index: 55; background: var(--c-bg); overflow-y: auto; padding: 24px var(--gutter) 120px;
}
.sp-menu[hidden] { display: none; }
.sp-menu ul { display: grid; gap: 4px; }
.sp-menu li a { display: block; padding: 14px 4px; font-weight: 700; font-size: 18px; text-decoration: none; border-bottom: 1px solid var(--c-line); }
.sp-menu__cta { display: grid; gap: 12px; margin-top: 28px; }

.shell-main { padding-top: var(--header-h); padding-bottom: 83px; }

/* 告知バー: SPは画面下に固定。アイコン+文言の行、その下にピルボタン */
.announce {
  position: fixed; inset: auto 0 0 0; z-index: 50; background: var(--c-red); color: #fff;
  display: grid; grid-template-columns: auto auto; justify-content: center; align-items: center; gap: 10px 8px; padding: 10px 12px; text-align: center;
}
.announce__icon { width: 20px; height: 20px; }
.announce__text { font-size: 14px; line-height: 1.4; }
.announce__btn {
  grid-column: 1 / -1; justify-self: center; font-weight: 700; font-size: 14px; line-height: 1.4; color: #fff; text-decoration: none;
  border: 1px solid #fff; border-radius: 30px; padding: 6px 19px;
}

.page-top { position: fixed; right: 12px; bottom: 100px; z-index: 40; width: 60px; opacity: 0; pointer-events: none; transition: opacity .3s; }
.page-top.is-visible { opacity: 1; pointer-events: auto; }
.page-top img { width: 100%; height: auto; }

/* ヒーロー（SP: 白ヘッダー分66px + 背景画像534px の上にロゴ） */
.hero { position: relative; background: #fff; }
.hero__bg-wrap { display: block; }
.hero__bg { display: block; width: 100%; height: auto; aspect-ratio: 375 / 534; object-fit: cover; }
.hero__logo { position: absolute; left: 50%; top: 50%; width: min(95%, 357px); height: auto; transform: translate(-50%, -50%); }
.shell-main > main > .hero:first-child { margin-top: -1px; }

/* 帯画像（読み込み前に高さが潰れないよう縦横比を固定） */
.band { display: block; width: 100%; height: auto; }
/* Figma（PC 74:17・SP 88:26）は乗算。画像の白をページの背景色（--c-bg）になじませる */
.band img { width: 100%; height: auto; aspect-ratio: 375 / 1092; object-fit: cover; mix-blend-mode: multiply; }
.band--pc-only { display: none; }

/* ===== PCレイアウト ===== */
@media (min-width: 1024px) {
  .sp-header, .sp-menu { display: none !important; }
  .page-top { right: 30px; bottom: 25px; width: 90px; }

  .sidebar {
    display: flex; flex-direction: column; align-items: center; position: fixed; inset: 0 auto 0 0; width: var(--sidebar-w);
    background: var(--c-sidebar); padding: 50px 0 40px; z-index: 60; overflow-y: auto;
  }
  .sidebar__logo { display: block; width: 160px; margin-bottom: 40px; }
  .sidebar__logo img { width: 160px; height: auto; }
  .sidebar__nav ul { display: grid; gap: 22px; text-align: center; }
  .sidebar__nav a { text-decoration: none; font-weight: 700; font-size: 16px; line-height: 24px; display: inline-block; position: relative; }
  .sidebar__nav a span { display: inline-block; padding-bottom: 5px; background: linear-gradient(var(--c-text), var(--c-text)) 0 100% / 0 2px no-repeat; transition: background-size .25s; }
  .sidebar__nav a:hover span, .sidebar__nav a.is-active span { background-size: 100% 2px; }
  .sidebar__ig { margin-top: 22px; }
  .sidebar__pref { margin-top: 40px; width: 60px; height: auto; }

  .shell-main { margin-left: var(--sidebar-w); padding-top: 0; padding-bottom: 0; }

  .announce {
    position: sticky; top: 0; inset-inline: auto; height: var(--announce-h); padding: 0; gap: 0 12px;
    display: flex; justify-content: center; align-items: center;
  }
  .announce__icon { width: 32px; height: 32px; }
  .announce__text { font-weight: 700; margin-right: 18px; }
  .announce__btn { grid-column: auto; padding: 9px 20px; }

  /* PC: 背景のイラスト（Figma 165:3）をヒーロー全面に敷き、乗算で背景色になじませる。高さに合わせて中央で切り抜く */
  .hero { background: var(--c-bg); min-height: min(860px, calc(100svh - var(--announce-h))); display: grid; place-items: center; overflow: hidden; isolation: isolate; }
  .hero__bg-wrap { position: absolute; inset: 0; }
  .hero__bg { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; object-position: center; mix-blend-mode: multiply; }
  .hero__logo { position: relative; inset: auto; transform: none; width: min(972px, 80%); }
  .band img { aspect-ratio: 1205 / 583; }
  .band--pc-only { display: block; aspect-ratio: 1205 / 373; }
}

/* 告知バーを出さない表示（2026-10-09 の発表会の終了表示への切替の後の状態を、通常の規則として持つ）: その分の高さ・余白を0にする */
body { --announce-h: 0px; }
.shell-main { padding-bottom: 0; }

/* ===== css/20-purpose.css ===== */
/* INTRODUCTION (#purpose)  Figma: PC=74:6 / SP=88:19
   SP: 上120 下60 / 見出し→リード 60 / リード→本文 30 / 本文16px・行間32px
   PC: 上下90 / 見出し→リード→本文 各60 / 本文幅1000px・20px・行間40px */

.purpose { padding: 120px 0 60px; }

/* 見出しは英字のみ（日本語サブタイトル無し）。サイズは共通 .sec-title__en（SP28/PC40）をそのまま使う */
.purpose__title { margin: 0; }

/* リード: 太字・中央寄せ。SPのみ Figma 通りの位置で改行（.purpose__br を表示）
   SPは 1文目 / 2文目+3文目 の2ブロック（ブロック間30px、ブロック内は行間30pxで連続） */
.purpose__lead {
  margin-top: 60px;
  text-align: center;
  font-weight: 700;
  font-size: 20px;
  line-height: 30px;
}
.purpose__lead p:nth-child(2) { margin-top: 30px; }
.purpose__br { display: inline; }

/* 本文: 2段落。段落間はFigmaの空行1行ぶん（SP32px / PC40px） */
.purpose__body {
  margin-top: 30px;
  font-size: 16px;
  line-height: 32px;
  text-spacing-trim: space-all; /* 「、「」等の連続を詰めない（Figmaの折り返し位置に合わせる） */
}
.purpose__body p + p { margin-top: 32px; }

@media (min-width: 1024px) {
  .purpose { padding: 90px 0; }

  .purpose__lead {
    font-size: 26px;
    line-height: 39px;
  }
  .purpose__lead p:nth-child(2) { margin-top: 0; }
  .purpose__br { display: none; }

  .purpose__body {
    margin-top: 60px;
    font-size: 20px;
    line-height: 40px;
  }
  .purpose__body p + p { margin-top: 40px; }
}

/* ===== css/30-news.css ===== */
/* NEWS (#news)  Figma: PC=74:18 / SP=88:27
   SP: 上150 下90 / NEWS中央 → 30 → リスト（上下に薄い罫線）/ 行は縦積み（日付→見出し→外部リンクアイコン）py24
   PC: 上下120 / 本文幅1000pxの上に罫線 pt60 / 左に「NEWS」(pt30)・右にリスト(gap120) / 行 p40・日付幅160 */

.news { padding: 150px 0 90px; }

/* SP: 縦積み。PC側で横並びに切り替える */
.news__inner { display: flex; flex-direction: column; gap: 30px; }
.news__title { margin: 0; }

.news__body { min-width: 0; }
.news__list { border-top: 1px solid var(--c-line); }
.news__list:empty { display: none; }
.news__item { border-bottom: 1px solid var(--c-line); }
.news__item[hidden] { display: none; }

/* 行全体がリンク（リンクが無い行は <div>） */
.news__row {
  display: flex; flex-direction: column; gap: 6px;
  padding: 24px 0; color: inherit; text-decoration: none;
}
.news__date {
  font-weight: 700; font-size: 16px; line-height: 24px; color: var(--c-accent); white-space: nowrap;
}
.news__text { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
.news__headline {
  font-weight: 700; font-size: 16px; line-height: 24px; color: var(--c-text); overflow-wrap: anywhere;
  transition: opacity .2s;
}
a.news__row:hover .news__headline { opacity: .6; }
.news__ext { width: 24px; height: 24px; }

/* 読み込み失敗・データ無し */
.news__empty { font-size: 16px; line-height: 24px; padding: 24px 0; text-align: center; }

/* もっと見る */
.news__more { display: flex; justify-content: center; padding-top: 30px; }
.news__more[hidden] { display: none; }
.news__more-btn {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 0; background: none; border: 0; cursor: pointer;
  font-size: 16px; line-height: 24px; font-weight: 400; color: var(--c-text);
}
.news__more-btn img { width: 71px; height: 28px; transition: transform .2s; }
.news__more-btn:hover img { transform: translateY(3px); }
@media (prefers-reduced-motion: reduce) {
  .news__headline, .news__more-btn img { transition: none; }
  .news__more-btn:hover img { transform: none; }
}

@media (min-width: 1024px) {
  .news { padding: 120px 0; }

  .news__inner {
    flex-direction: row; align-items: flex-start; gap: 120px;
    padding-top: 60px; border-top: 1px solid var(--c-line);
  }
  .news__title { flex: none; padding-top: 30px; text-align: left; }
  .news__body { flex: 1 1 0; }
  .news__list { border-top: 0; }

  .news__row { flex-direction: row; gap: 0; padding: 40px; }
  .news__date { flex: none; width: 160px; font-size: 20px; line-height: 30px; }
  .news__text { flex: 1 1 0; }
  .news__headline { font-size: 22px; line-height: 33px; }
  .news__empty { padding: 40px; text-align: left; }
}

/* ===== css/40-project.css ===== */
/* PROJECT（事業進捗）: noteの記事カルーセル。Figma PC=75:2 / SP=88:46
   既定=SPレイアウト、>=1024px でPCレイアウト。カードの並べ替え・自動送りは js/40-project.js */

/* ===== 既定=SP ===== */
.project {
  display: flex; flex-direction: column; align-items: center; gap: 40px;
  padding-top: 120px; padding-bottom: 90px; /* Figma SP: 上120 / 下90 */
}

.project__carousel { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 40px; }
.no-js .project__carousel, .project.is-empty .project__carousel { display: none; } /* 記事が取れない時はバナーだけ残す */

/* 窓: 幅いっぱい。はみ出したカードは見切れる（overflow:clipはフォーカス移動による勝手なスクロールも防ぐ） */
.project__viewport {
  width: 100%; min-height: 300px; /* Figma SP の窓の高さ。3行タイトルでも収まるよう高さ自体はカード次第で伸びる */
  overflow: hidden; overflow: clip; touch-action: pan-y; cursor: grab;
}
.project__viewport.is-dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }

/* 動くのはtrackだけ。位置はJSがtransformで指定する（中央のカードが窓の中央に来る） */
.project__track {
  display: flex; align-items: flex-start; gap: 15px; width: max-content;
  transition: transform .6s cubic-bezier(.22, .61, .36, 1); will-change: transform;
}
.project__viewport.is-dragging .project__track { transition: none; }

.project__slide { flex: none; width: 297px; } /* SPのカード幅 */
.project__card { display: flex; flex-direction: column; gap: 10px; color: var(--c-text); text-decoration: none; }
.project__card:focus-visible { outline: 3px solid var(--c-accent); outline-offset: -3px; }

/* カバー画像は縦横比を固定（約1.91:1）してレイアウトずれを防ぐ */
.project__cover { display: block; width: 100%; aspect-ratio: 297 / 155; overflow: hidden; background: #e9e6df; }
.project__cover img { width: 100%; height: 100%; object-fit: cover; -webkit-user-drag: none; user-select: none; transition: opacity .2s; }

.project__title, .project__excerpt {
  display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word;
}
.project__title { font-size: 16px; line-height: 24px; font-weight: 700; -webkit-line-clamp: 3; line-clamp: 3; }
.project__excerpt { font-size: 14px; line-height: 21px; font-weight: 400; -webkit-line-clamp: 2; line-clamp: 2; }
@media (hover: hover) {
  .project__card:hover .project__cover img { opacity: .85; }
  .project__card:hover .project__title { text-decoration: underline; text-underline-offset: 3px; }
}

/* 操作ボタン: 丸40px・ティール・白アイコン（Figma: 40px×3 + 間隔24px = 168px） */
.project__controls { display: flex; justify-content: center; gap: 24px; }
.project__btn {
  display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%;
  background: var(--c-accent); color: #fff; cursor: pointer; transition: opacity .2s;
}
.project__btn:hover { opacity: .85; }
.project__btn:focus-visible { outline: 2px solid var(--c-text); outline-offset: 3px; }
.project__btn svg { width: 16px; height: 16px; }
.project__carousel.is-single .project__controls { display: none; } /* 1件だけの時は操作ボタンを出さない */
.project__btn--toggle .project__icon-play { display: none; }
.project__btn--toggle.is-paused .project__icon-pause { display: none; }
.project__btn--toggle.is-paused .project__icon-play { display: block; }

/* noteバナー: SP 300px / PC 450px */
.project__note { display: block; width: 300px; max-width: 100%; } /* .reveal の transition を上書きしないよう、動きは画像側に付ける */
.project__note:focus-visible { outline: 2px solid var(--c-text); outline-offset: 3px; }
.project__note img { width: 100%; height: auto; transition: opacity .2s; }
.project__note:hover img { opacity: .8; }

@media (prefers-reduced-motion: reduce) {
  .project__track, .project__cover img, .project__btn, .project__note img { transition: none; }
}

/* ===== PCレイアウト ===== */
@media (min-width: 1024px) {
  .project { gap: 60px; padding-top: 120px; padding-bottom: 120px; } /* Figma PC: 上下120 */
  .project__carousel { gap: 60px; }
  .project__viewport { min-height: 280px; } /* Figma PC の窓の高さ */
  .project__slide { width: 290px; }
  .project__cover { aspect-ratio: 290 / 152; }
  .project__title { font-size: 20px; line-height: 30px; }
  .project__excerpt { font-size: 16px; line-height: 24px; }
  .project__note { width: 450px; }
}

/* ===== css/50-participants.css ===== */
/* PARTICIPANTS（採択プロジェクト紹介）。Figma: PC=75:35 / SP=88:79
   既定=SPレイアウト、>=1024px でPCレイアウト。 */

/* 余白: SPはFigmaが上下とも120px（共通トークンの下余白は90px）。PCは共通トークン(150/120)どおり */
.participants { position: relative; padding-bottom: 120px; }

/* 水彩の背景: セクション上端に敷く（SP 375x330 / PC 1205x1060）。内容はその上に重なる */
.participants__bg {
  position: absolute; top: 0; left: 0; z-index: 0;
  width: 100%; height: 330px; object-fit: cover; pointer-events: none;
}

.participants__inner {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center; gap: 60px;
}

/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする
   （Figma: SP 間隔20px / PC 間隔10px は共通トークンの margin-top で再現）。
   日本語サブタイトルはFigmaでRegular。h2 の太字を継承しないよう 400 に戻す */
.participants .sec-title { display: flex; flex-direction: column; align-items: center; }
.participants .sec-title__ja { font-weight: 400; }

/* ロゴ一覧: SP 2列(152x79)・隙間なし。最後の1枚は左寄せ */
.participants__grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  width: min(304px, 100%);
}
.participants__tile {
  aspect-ratio: 152 / 79;
  background: var(--c-white);
  border: 1px solid var(--c-bg);
  overflow: hidden;
}
.participants__tile img { width: 100%; height: 100%; object-fit: cover; }

/* 「詳しくはこちら」: SP 300x60 / PC 368x76 */
.participants__cta { width: 100%; display: flex; justify-content: center; }
.participants__btn {
  width: min(300px, 100%); height: 60px; padding: 0;
  font-size: 20px; line-height: 30px;
}

@media (min-width: 1024px) {
  .participants__bg { height: 1060px; }
  .participants__inner { gap: 0; }
  /* 見出し→ロゴ一覧 30px / ロゴ一覧→ボタン 60px */
  .participants__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: min(798px, 100%); margin-top: 30px;
  }
  .participants__tile { aspect-ratio: 266 / 137; }
  .participants__cta { margin-top: 60px; }
  .participants__btn { width: 368px; max-width: 100%; height: 76px; font-size: 24px; line-height: 36px; }
}

/* ===== css/52-adopted.css ===== */
/* 採択プロジェクト紹介ページ（/project）。仕様: SPEC-project-page.md（元サイトの公開データから読み取った実測値）
   既定=SPレイアウト、>=1024px でPC。セレクタは .adopt-* に限定。 */

/* ---- 導入（バナー画像＋リード文） ---- */
/* SPの上余白は元サイト・Figmaとも「ページ上端から100px」。固定ヘッダー分(66px)は .shell-main の padding-top で既に取っているので差し引く */
.adopt-intro { padding: calc(100px - var(--header-h)) 0 30px; }
.adopt-intro__inner {
  width: 90%; max-width: 1000px; margin-inline: auto;
  display: flex; flex-direction: column; align-items: center; gap: 30px;
}
.adopt-intro__hero { display: block; width: 100%; }
.adopt-intro__hero img { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; }
.adopt-intro__lead { width: 100%; font-size: 16px; line-height: 1.8; }

/* ---- 年度セクション ---- */
.adopt-year { position: relative; padding: 60px 0; }
/* 水彩の背景装飾: セクションの縦中央に、幅いっぱい（PC 1205x1060 / SP 375x330）で敷く。元サイトも ::before の背景画像 */
.adopt-year::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: url('/assets/img/participants-bg.webp') center / 100% auto no-repeat;
}
.adopt-year__inner {
  position: relative; z-index: 1;
  width: 90%; max-width: 1000px; margin-inline: auto;
  display: flex; flex-direction: column; align-items: center; gap: 40px;
}
.adopt-year__title { font-size: 24px; font-weight: 700; line-height: 1.8; text-align: center; }

/* 一覧: SPは1列（カード間 30＋カード下余白30＝60）。カードの高さが違っても上揃え */
.adopt-list { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr); gap: 60px; align-items: start; padding-bottom: 30px; /* 元サイトはSPで最後のカードにも下余白30が付く */ }

/* ---- カード ---- */
.adopt-card { display: flex; flex-direction: column; gap: 30px; }
.adopt-card__bar {
  background: var(--c-accent); color: #fff; border-radius: 4px; padding: 10px 0;
  text-align: center; font-size: 20px; font-weight: 700; line-height: 1.5;
}
.adopt-card__logo { border: 1px solid var(--c-line); border-radius: 4px; overflow: hidden; background: #fff; aspect-ratio: 977 / 500; }
.adopt-card__logo img { width: 100%; height: 100%; object-fit: cover; }
.adopt-card__info { display: flex; flex-direction: column; gap: 15px; }
.adopt-field { display: flex; flex-direction: column; gap: 5px; }
.adopt-field__head { display: flex; align-items: center; gap: 15px; font-size: 16px; font-weight: 700; line-height: 1.5; }
.adopt-field__head::after { content: ''; flex: 1 1 auto; height: 1px; background: var(--c-text); }
.adopt-field__body { display: flex; flex-direction: column; gap: 5px; }
.adopt-field__text { font-size: 16px; line-height: 1.5; overflow-wrap: anywhere; }

/* リンク行（アイコン＋URL/記事タイトル）。元サイトの青 #176ec5 */
.adopt-link { display: flex; align-items: center; gap: 3px; color: #176ec5; font-size: 14px; line-height: 1.5; }
.adopt-link__icon { flex: none; width: 24px; height: 24px; }
.adopt-link__text { text-decoration: underline; overflow-wrap: anywhere; }
.adopt-links { display: flex; flex-direction: column; gap: 10px; }

/* ===== PC ===== */
@media (min-width: 1024px) {
  .adopt-intro { padding: 90px 0 60px; }
  .adopt-intro__hero img { aspect-ratio: 1200 / 630; }

  .adopt-year__title { font-size: 32px; }

  .adopt-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 80px 40px; padding-bottom: 0; }
  .adopt-card__bar { font-size: 24px; }
}

/* ===== css/55-program.css ===== */
/* PROGRAM（全体スケジュール・支援体制・募集テーマ）。Figma: PC=75:66 / SP=89:2
   既定=SPレイアウト、>=1024px でPCレイアウト。 */

/* 余白: SPはFigmaが上70px・下120px（共通トークンは120/90）。PCは共通トークン(150/120)どおり。
   上の PARTICIPANTS の下余白(120px)と合わせて、SP=190px / PC=270px の間が空く */
.program { padding-top: 70px; padding-bottom: 120px; }
@media (min-width: 1024px) { .program { padding-top: 150px; padding-bottom: 120px; } }

.program__inner {
  display: flex; flex-direction: column; align-items: center; gap: 60px;
}

/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする。
   日本語サブタイトルはFigmaでRegular。h2 の太字を継承しないよう 400 に戻す */
.program .sec-title { display: flex; flex-direction: column; align-items: center; }
.program .sec-title__ja { font-weight: 400; }

/* 小見出し（支援体制・募集テーマ）: .sec-title__ja と同じ見た目（SP16px / PC20px・下線つき） */
.program__sub {
  display: inline-block; padding-bottom: 8px;
  font-size: 16px; font-weight: 400; line-height: 1.5; text-align: center;
  border-bottom: 1px solid var(--c-line);
}
@media (min-width: 1024px) { .program__sub { font-size: 20px; } }

/* スケジュール図: SP 304x463 / PC 1000x387 */
.program__schedule { width: 100%; max-width: 304px; }
.program__schedule img { width: 100%; aspect-ratio: 304 / 463; }
@media (min-width: 1024px) {
  .program__schedule { max-width: 1000px; }
  .program__schedule img { aspect-ratio: 1000 / 387; }
}

/* 日程: SP=見出しの下に日付を10pxインデント(16px/行高24px) / PC=1行(20px/行高30px) */
.program__dates { width: 100%; display: grid; gap: 10px; }
.program__date { display: flex; flex-direction: column; font-size: 16px; line-height: 24px; }
.program__date dt { font-weight: 700; }
.program__date dd { padding-left: 10px; }
@media (min-width: 1024px) {
  .program__date { flex-direction: row; font-size: 20px; line-height: 30px; }
  .program__date dd { padding-left: 0; }
}

/* 支援体制・募集テーマの共通ブロック: 小見出し + 中身 */
.program__block {
  width: 100%; display: flex; flex-direction: column; align-items: center;
  padding-top: 30px; gap: 60px;
}
@media (min-width: 1024px) { .program__block { padding-top: 60px; } }

/* 支援体制図: SP 304x416 / PC 950x385 */
.program__support-fig { width: 100%; max-width: 304px; }
.program__support-fig img { width: 100%; aspect-ratio: 304 / 416; }
@media (min-width: 1024px) {
  .program__support { gap: 30px; }
  .program__support-fig { max-width: 950px; }
  .program__support-fig img { aspect-ratio: 950 / 385; }
}

/* 募集テーマ: SP=2列(カード164・間隔10・最後の9枚目は中央) / PC=3列(カード306・横間隔41・縦間隔40) */
.program__theme-list {
  width: 100%; max-width: 338px;
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
  align-items: start; /* Figmaは文字量に応じて同じ行でもカードの高さが異なる */
}
.program__theme {
  background: var(--c-white); border: 1px solid var(--c-line); border-radius: 4px; overflow: hidden;
}
.program__theme img { width: 100%; aspect-ratio: 304 / 196; object-fit: cover; }
.program__theme-text {
  padding: 10px; background: var(--c-white);
  font-size: 16px; font-weight: 700; line-height: 1.6; /* 25.6px */
}
.program__theme:last-child {
  grid-column: 1 / -1; justify-self: center; width: calc((100% - 10px) / 2);
}

/* 注記: SPは「受け付けします。」の前で改行、PCは1行 */
.program__note { font-size: 16px; line-height: 32px; text-align: center; }
.program__note span { display: block; }

@media (min-width: 1024px) {
  .program__theme-list { max-width: 1000px; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 41px; }
  .program__theme-text { padding: 20px; font-size: 20px; line-height: 32px; }
  .program__theme:last-child { grid-column: auto; justify-self: stretch; width: auto; }
  .program__note span { display: inline; }
}

/* ===== css/60-benefits.css ===== */
/* BENEFITS（参加メリット）  Figma: PC=76:2 / SP=89:78
   SP: 1列・画像幅270px・項目間80px ／ PC: 2列(各425px・列間150px・行間60px。1000px幅のとき) */

/* ===== 既定=SPレイアウト ===== */
/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする */
.benefits .sec-title { display: flex; flex-direction: column; align-items: center; }

.benefits__list {
  display: flex; flex-direction: column; gap: 80px;
  margin-top: 60px;
}
.benefits__item {
  display: flex; flex-direction: column; gap: 30px; align-items: stretch;
}
.benefits__img {
  width: 270px; max-width: 100%; height: auto;
  margin-inline: auto; object-fit: cover;
}
.benefits__name {
  font-size: 20px; font-weight: 700; line-height: 30px; text-align: center; color: var(--c-text);
}
.benefits__text {
  font-size: 16px; line-height: 28.8px; color: var(--c-text);
}
.benefits__note {
  font-size: 16px; line-height: 28.8px; color: var(--c-note-red);
}

/* ===== PCレイアウト ===== */
@media (min-width: 1024px) {
  .benefits__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 15%;           /* 1000px幅で150px（列幅425px）。幅が狭い時は比例して縮む */
    row-gap: 60px;
    align-items: start;
  }
  .benefits__item { min-width: 0; }
  .benefits__img { width: 100%; margin-inline: 0; }
  .benefits__name { font-size: 26px; line-height: 39px; }
}

/* ===== css/70-events.css ===== */
/* EVENTS（イベント）  Figma: PC=76:37 / SP=89:116
   SP: 1列・カード間60px ／ PC: 2列(カード幅480px・列間40px・行間60px。1000px幅のとき。高さは内容なり) */

/* ===== 既定=SPレイアウト ===== */
/* SPのFigmaは上下とも90px（共通トークンは上120px）なので上だけ合わせる */
.events { padding-top: 90px; }

/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする */
.events .sec-title { display: flex; flex-direction: column; align-items: center; }
/* 見出しの日本語: SP=「イベント」 / PC=「募集セミナー」（Figma通り） */
.events__ja--pc { display: none; }

.events__list {
  display: flex; flex-direction: column; gap: 60px;
  margin-top: 60px;
}

.events__card {
  border: 1px solid var(--c-line); border-radius: 8px; overflow: hidden; background: var(--c-white);
}
.events__head {
  display: flex; align-items: center; justify-content: center;
  padding: 20px 15px; background: var(--c-accent); color: #fff;
  font-size: 20px; font-weight: 700; line-height: 30px; text-align: center;
}
.events__card--red .events__head { background: var(--c-red); }
.events__card--purple .events__head { background: var(--c-purple); }

.events__body {
  display: flex; flex-direction: column; gap: 30px;
  padding: 20px 15px; background: var(--c-white);
}

/* 日時・開催場所の行（アイコン + 情報） */
.events__row { display: flex; align-items: flex-start; gap: 5px; }
.events__icon { flex: none; width: 30px; height: 30px; }
.events__info { flex: 1 1 0; min-width: 0; overflow-wrap: break-word; color: var(--c-text); }
.events__label { font-size: 14px; font-weight: 400; line-height: 21px; }
/* letter-spacing: ①の日時がブラウザの文字幅だと375px幅で1.3px足りず折り返すため（Figmaは1行）、SPのみ微調整 */
.events__value { font-size: 18px; font-weight: 700; line-height: 27px; letter-spacing: -.01em; }
.events__sub { font-size: 14px; line-height: 21px; }
.events__map { color: var(--c-accent); text-decoration: none; }
.events__map:hover { text-decoration: underline; }

/* 説明ボックス・案内文 */
.events__desc {
  padding: 10px; background: var(--c-bg); border-radius: 4px;
  font-size: 14px; line-height: 21px; color: var(--c-text); overflow-wrap: break-word;
}
.events__lead { font-size: 14px; line-height: 21px; color: var(--c-muted); }

/* ボタン: 共通の .btn を使い、高さだけFigmaに合わせる（SP=60px / PC=70px） */
.events__btn { line-height: 30px; }
.events__btn[aria-disabled="true"] { cursor: default; }

/* ===== PCレイアウト ===== */
@media (min-width: 1024px) {
  .events { padding-top: var(--sec-pad-top); }

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

  .events__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 4%;            /* 1000px幅で40px（カード幅480px）。幅が狭い時は比例して縮む */
    row-gap: 60px;
    align-items: start;        /* 左右でカードの高さが違っても引き伸ばさない */
  }

  .events__head { min-height: 70px; padding: 0 15px; line-height: 40px; }
  .events__body { padding: 30px; }
  .events__row { gap: 15px; }
  .events__value { letter-spacing: 0; }
  .events__icon { width: 36px; height: 36px; }
  .events__desc { padding: 15px; }
  .events__btn { line-height: 40px; }
}

/* ===== css/80-apply.css ===== */
/* APPLY 募集要項  Figma PC=77:3 / SP=90:3
   既定=SP（<1024px）、>=1024px でPC。セレクタは .apply / .apply__* に限定。 */

.apply { padding-top: 90px; padding-bottom: 90px; }

/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする。
   また h2 の既定の太字が日本語サブタイトルに効いてしまうので Regular(400) に戻す（Figma=Regular） */
.apply .sec-title { display: flex; flex-direction: column; align-items: center; font-weight: 400; }

/* 見出し直下から表まで 60px（PC・SP共通） */
.apply__table {
  margin-top: 60px;
  border: 2px solid var(--c-line);
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
}

/* ---- 行（SP: ラベルの下に内容を縦積み / PC: ラベル列150px＋内容の横並び） ---- */
.apply__row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 20px;
  padding: 20px 15px;
  background: #fff;
}
.apply__row + .apply__row { border-top: 2px solid var(--c-line); }

.apply__label { flex: none; }
.apply__label img { width: var(--lw, 150px); max-width: none; height: auto; }
/* ラベル画像の幅（Figma SP） */
.apply__row--other { --lw: 130px; }

.apply__body { width: 100%; min-width: 0; overflow-wrap: break-word; }

/* 応募期間 */
.apply__period { font-weight: 700; font-size: 20px; line-height: 30px; }
.apply__period-note { font-size: 16px; line-height: 24px; }

/* 応募方法の小見出し（①プレエントリー / ②応募）。
   箇条書き(.apply__list)の「・」は文言の一部で、折り返しは左端に戻る＝Figma通り（ぶら下げインデントなし） */
.apply__step { font-weight: 700; font-size: 16px; line-height: 1.8; }

/* ボタン（応募は締め切りました）: SPは幅いっぱい・角丸8px */
.apply__btn-wrap { padding-top: 14px; }
.apply__btn {
  display: flex;
  width: 100%;
  padding: 15px 24px;
  border-radius: 8px;
  font-size: 20px;
  line-height: 30px;
}

/* 評価項目: SPのみ「④貢献性」の後で改行 */
.apply__br-sp { display: inline; }

/* 締切バー（SP: 2行） */
.apply__deadline {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 40px 15px;
  background: var(--c-text);
  color: #fff;
  font-weight: 700;
  font-size: 20px;
  line-height: 36px;
  text-align: center;
}

/* 交付要綱などの案内 */
.apply__docs { margin-top: 60px; }
.apply__doc { padding-top: 14px; }
.apply__doc-link { color: var(--c-link); text-decoration: none; }
.apply__doc-link:hover, .apply__doc-link:focus-visible { text-decoration: underline; }

/* ===== PC ===== */
@media (min-width: 1024px) {
  .apply { padding-bottom: 120px; }

  .apply__row { flex-direction: row; align-items: center; gap: 30px; padding: 32px 30px; }
  .apply__row--top { align-items: flex-start; }

  /* ラベル列を150px幅に揃え、内容の開始位置を行ごとに合わせる */
  .apply__label { width: 150px; }
  .apply__label img { width: var(--lw, 150px); }
  .apply__row--period { --lw: 149px; }
  .apply__row--condition { --lw: 149px; }
  .apply__row--evaluation { --lw: 147px; }
  .apply__row--other { --lw: 131px; }

  .apply__body { flex: 1 1 0; width: auto; }

  .apply__br-sp { display: none; }

  .apply__btn-wrap { display: flex; justify-content: center; padding: 15px 0; }
  .apply__btn { width: 400px; max-width: 100%; padding: 20px 24px; border-radius: 12px; font-size: 24px; line-height: 36px; }

  .apply__deadline { flex-direction: row; justify-content: center; gap: 30px; padding: 40px 30px; font-size: 28px; line-height: 50.4px; }

  .apply__docs { padding-top: 30px; }
}

/* ===== css/90-contact.css ===== */
/* CONTACT 問い合わせ先  Figma PC=77:80 / SP=90:81
   既定=SP（<1024px）、>=1024px でPC。セレクタは .contact / .contact__* に限定。 */

.contact { padding-top: 120px; padding-bottom: 100px; }

.contact__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px;
  text-align: center;
}

/* 見出し: 共通 .sec-title__en が inline のため、英字と日本語が横並びにならないよう縦積みにする。
   また h2 の既定の太字が日本語サブタイトルに効いてしまうので Regular(400) に戻す（Figma=Regular） */
.contact .sec-title { display: flex; flex-direction: column; align-items: center; font-weight: 400; }

/* 事務局名＋メールアドレス（SP: 20px間隔 / PC: 他と同じ60px間隔） */
.contact__org { display: flex; flex-direction: column; align-items: center; gap: 20px; }
.contact__name { font-weight: 700; font-size: 20px; line-height: 30px; }
.contact__mail { font-family: var(--f-en); font-weight: 700; font-size: 20px; line-height: 30px; overflow-wrap: anywhere; }
.contact__mail a { text-decoration: none; }
.contact__mail a:hover, .contact__mail a:focus-visible { text-decoration: underline; }

.contact__logo { display: block; width: 300px; max-width: 100%; }
.contact__logo img { width: 100%; height: auto; }

/* 個人情報の取り扱い / 免責事項（SP: 縦並び / PC: 横並び） */
.contact__policy { display: flex; flex-direction: column; align-items: center; gap: 20px; font-weight: 700; font-size: 16px; line-height: 24px; }
.contact__policy a { text-decoration: none; }
.contact__policy a:hover, .contact__policy a:focus-visible { text-decoration: underline; }

/* コピーライト。SPのFigmaは直前に「PAGE TOP」ボタン(高さ54px＋上下gap40px)が入るため、
   同じ余白を残している（ボタン自体は共通部品 .page-top が担当）。不要なら下の margin-top を削除。 */
.contact__copy { margin-top: 94px; font-family: var(--f-en); font-weight: 700; font-size: 12px; line-height: 18px; overflow-wrap: anywhere; }

/* ===== PC ===== */
@media (min-width: 1024px) {
  .contact { padding-bottom: 90px; }
  .contact__inner { gap: 60px; }

  .contact__org { gap: 60px; }
  .contact__name { font-size: 28px; line-height: 42px; }
  .contact__mail { font-size: 40px; line-height: 60px; }

  .contact__logo { width: 214px; }

  .contact__policy { flex-direction: row; justify-content: center; gap: 30px; font-size: 20px; line-height: 30px; }

  .contact__copy { margin-top: 0; font-size: 16px; line-height: 24px; }
}
