/* =====================================================================
   CyberGuild ローカルプレビュー
   オフホワイト × 深緑 × ティール（2026-10-25（13）で濃紺・紫から刷新）。HiTalent人材向けページの構成を基準に再現。
   2026-10-25（6）：ナレッジ図を小さなライブラリ図に簡素化、preview-bar・フッター注記・「（仮称）」を削除。
   2026-10-25（8）第1段階：ヒーロー eyebrow ピルを廃止（対象者は本文へ）、六角形図2行の間隔を 24px に、
   支援 3 STEP を削除、支援体制を「提供ロゴ＋大きな文字」の3者構成（イラスト・タグなし）に変更。
   2026-10-25（9）第2段階：選ばれる理由を淡い紫背景＋番号付き白カード3枚に、ナレッジ図を SVG（domain-network）に、
   インタビュー図を SVG（career-stairs）の全幅表示に。旧 .kb-* / .story-grid / .page-figure（29:10 トリミング）は削除。
   2026-10-25（10）：改行の修正。.nowrap に white-space: nowrap、支援体制 .role-name を block、理由3の見出し行を block、
   ナレッジ見出し（.knowledge-title）は 359px 以下で 22px、本文（.knowledge-lead）は text-wrap: pretty。
   2026-10-25（11）シンプル構成：課題（.concern-* / .hex-*）、支援体制（.roles / .role-*）、理由カード画像（.reason-figure）、
   案件イラスト（.project-visual / .project-art / .project-detail-figure）、図解（.diagram-img / .story-figure / .knowledge-*）、
   インタビュー詳細の図ブロック（.story-detail）を削除。「CyberGuildとは」（.about-*）と、文字だけの案件カード
   （.project-summary / .project-meta）を追加。
   2026-10-25（13）配色刷新：濃紺・紫・グローを全廃し、オフホワイト #F7F8F3／深緑 #163E3B／アクセント #007E80／
   シアン #21BFC5／淡いセージ #EDF5F2 に統一。旧変数 --navy* / --purple* は --green-deep / --accent 等へ整理。
   ヘッダー白地、ボタンはティール単色・角丸 8px、hero-background.png と発光・大きな影は撤去。
   ヒーローは左コピー＋右図（assets/diagrams/guild-hero.svg）の2カラム、理由カードに元画像（reason-*.png）を戻した。
   2026-10-25（14）配色のみ復元（ユーザー指示：元の濃紺・紫のほうがよい）：レイアウト（左右分割ヒーロー・理由画像・主CTA＝相談）は（13）のまま、
   色を濃紺 #071126／紫 #7C3AED／シアン #38CFF3／本文 #17233E／補助 #526079／薄背景 #F5F7FC／罫線 #DCE2EF に戻した。
   ヘッダー・ヒーロー・entry・フッターは濃紺＋白文字、ヒーロー／entry は hero-background.png ＋ 濃紺の暗幕、案件は紫帯＋白カード、
   理由は薄紫、ボタンは紫グラデーション。変数は --navy / --purple / --purple-light 等（旧 --green-deep / --accent / --sage を置換）。
   2026-10-25（15）：ヒーローを元の中央寄せ1カラムに戻した（.hero-inner 最大 1000px、h1 最大 58px、本文中央、CTA 縦並び）。
   右図（.hero-figure / .hero-img）を削除。hero の背景画像を assets/hero-network-v2.png に変更（entry は hero-background.png のまま）。
   色は（14）の濃紺・紫を維持。他セクション・フォームは不変。
   2026-10-26（17）：案件カタログ。旧 .project-card / .project-meta / .project-table / .project-actions を削除し、
   チップ（.chip-*）、横型カード（.catalog-card）、一覧のフィルタ＋結果の2カラム（.catalog、899px 以下は縦積み）、
   詳細の募集条件パネル（.fact-panel）とサイド CTA（.detail-side、999px 以下は本文の下）を追加。配色は濃紺・紫のまま。
   ヒーロー・理由・インタビュー・流れ・FAQ・entry・フォームは不変。
   2026-10-26（18）：ヒーロー背景の差替えと微動。背景画像を assets/hero-guild-cycle-v1.png（文字なし・左右に細い紫青のループ）に、
   82〜90% の全面暗幕をやめて中央だけを暗くする楕円マスク（.hero::after）に変更。画像は .hero::before（transform のみ、40s ease-in-out）で
   ゆっくり拡大・平行移動し、.hero の overflow: hidden で切り抜く。停止／再生ボタン（.hero-motion-toggle、右下）。
   prefers-reduced-motion は既定で停止（ボタンで明示的に再生したときだけ動く）。見出し・本文・CTA・配色・他セクションは不変。
   2026-10-27（19）：ヒーロー背景を案 C「重なる光層」（.hero-wash ＋ .hero-art SVG ＋ .hero::after マスク）に差替え。
   ビットマップの .hero::before と hero-drift は削除。停止／再生・reduced-motion の規則は全レイヤーに適用のまま。
   2026-10-27（20）：「CyberGuildで得られること」3カード（.benefit-*）を追加。トップ #projects を濃紺→くすんだ紫のグラデーション
   ＋青の放射光に（2色の紫でほぼ単色に見えていたのを、変化が見える配色に）。報酬の強調（.catalog-rate / .fact-rate / .side-rate）を
   削除し、条件の行と同じ体裁に（補足 .fact-note）。entry をメールのみフォーム（.entry-form）に。インタビュー（.story-* / .interview-*）
   と旧複数ステップフォーム（.form-steps / .choice / .confirm-table / .send-box 等）の規則を削除。ヒーロー・理由・流れ・FAQ は不変。
   ===================================================================== */

:root {
  --navy: #071126;
  --navy-2: #1A2A5C;
  --purple: #7C3AED;
  --purple-deep: #5B21B6;
  --purple-light: #F4F3FB;
  --cyan: #38CFF3;
  --text: #17233E;
  --muted: #526079;
  --white: #FFFFFF;
  --bg-soft: #F5F7FC;
  --line: #DCE2EF;
  --danger: #B42318;
  --danger-bg: #FEF3F2;
  --ok-bg: var(--purple-light);

  --font: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Meiryo", "Segoe UI", system-ui, sans-serif;
  --container: 1120px;
  --gutter: 24px;
  --radius: 10px;
  --radius-lg: 14px;
  --btn-radius: 8px;
  --header-h: 68px;
  --section-nav-h: 48px;
  --shadow: 0 2px 8px rgba(7, 17, 38, 0.06);
  --focus: 0 0 0 3px #FFFFFF, 0 0 0 6px var(--purple);
  --focus-dark: 0 0 0 3px var(--navy), 0 0 0 6px var(--cyan);
}

/* ---------- Reset / base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  /* （18）ヒーロー背景の ::before だけは例外にし、下の規則で「ユーザーが明示的に再生したとき（data-motion="running"）以外は停止」にする。
     app.js は reduce のとき既定で data-motion="paused" を付け、設定が切り替わったら付け直す */
  *, *::before, *::after { transition: none !important; }
  :not(.hero, .hero *), :not(.hero, .hero *)::before, :not(.hero, .hero *)::after { animation: none !important; }
  /* ヒーロー内の装飾レイヤー（::before / ::after / 子要素とその擬似要素）はすべて data-motion="running" のときだけ動く */
  .hero:not([data-motion="running"]), .hero:not([data-motion="running"]) *,
  .hero:not([data-motion="running"])::before, .hero:not([data-motion="running"])::after,
  .hero:not([data-motion="running"]) *::before, .hero:not([data-motion="running"]) *::after { animation: none !important; }
}
body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.8;
  color: var(--text);
  background: var(--white);
  overflow-x: hidden;
  overflow-wrap: anywhere;
  word-break: normal;
  line-break: strict;
}
img, svg { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: var(--purple); text-underline-offset: 0.2em; }
a:hover { color: var(--navy); }
button { font: inherit; color: inherit; }
small { font-size: 0.8em; }
.nowrap { display: inline-block; word-break: keep-all; white-space: nowrap; }
.pc-br { display: none; }
@media (min-width: 720px) { .pc-br { display: inline; } }
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

:focus-visible { outline: none; box-shadow: var(--focus); border-radius: 6px; }
.on-dark :focus-visible, .site-header :focus-visible, .hero :focus-visible, .entry :focus-visible,
.section#projects :focus-visible, .site-footer :focus-visible { box-shadow: var(--focus-dark); }
/* 見出し・main へのプログラム的フォーカスは目立つ枠を付けない */
.site-main:focus, .site-main:focus-visible,
.page-title:focus, .page-title:focus-visible,
.section-title:focus, .section-title:focus-visible { outline: none; box-shadow: none; }

.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}
@media (max-width: 479px) { :root { --gutter: 20px; } }

/* ---------- Skip link ---------- */
.skip-link {
  position: absolute; top: -100px; left: 16px; z-index: 1000;
  padding: 10px 16px; background: var(--purple); color: var(--white);
  border-radius: var(--btn-radius); text-decoration: none; font-weight: 700;
}
.skip-link:focus { top: 12px; }

/* ---------- Header（14）：濃紺背景・白文字。hover / current は白＋シアン下線 ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: var(--navy);
  color: var(--white);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.header-inner {
  min-height: var(--header-h);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
/* （33）ロゴ：マーク（高さ 34px）とロゴタイプ（大文字の高さ ≒ マークの 0.56）。
   ロゴタイプの画像は y の下がりを含むので、大文字の中心がマークの中心にそろうよう 10% 下げる */
.brand {
  display: flex; align-items: center; gap: 10px; color: var(--white); text-decoration: none; min-width: 0;
}
.brand:hover { color: var(--white); }
.brand-mark { flex: none; display: block; width: auto; height: 34px; }
.brand-wordmark { flex: none; display: block; width: auto; height: 24px; max-width: none; transform: translateY(10%); }

.global-nav-list { display: flex; align-items: center; gap: 4px 22px; }
.global-nav-list a:not(.btn) {
  color: rgba(255, 255, 255, 0.88); text-decoration: none; font-size: 14px; font-weight: 600; padding: 8px 0; display: inline-block;
}
.global-nav-list a:not(.btn):hover,
.global-nav-list a:not(.btn)[aria-current="page"] { color: var(--white); text-decoration: underline; text-underline-offset: 0.35em; text-decoration-color: var(--cyan); }

.menu-toggle {
  display: none; align-items: center; gap: 8px; background: transparent; border: 1px solid rgba(255, 255, 255, 0.35);
  color: var(--white); border-radius: var(--btn-radius); padding: 8px 12px; min-height: 44px; cursor: pointer;
}
.menu-toggle-icon { width: 20px; display: inline-flex; flex-direction: column; gap: 4px; }
.menu-toggle-icon span { display: block; height: 2px; background: currentColor; border-radius: 2px; transition: transform .2s, opacity .2s; }
.site-header.is-open .menu-toggle-icon span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.site-header.is-open .menu-toggle-icon span:nth-child(2) { opacity: 0; }
.site-header.is-open .menu-toggle-icon span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.menu-toggle-label { font-size: 13px; font-weight: 600; }

@media (max-width: 479px) {
  .menu-toggle-label { display: none; }
  .menu-toggle { padding: 8px 11px; }
  .brand { gap: 8px; }
  .brand-mark { height: 30px; }
  .brand-wordmark { height: 21px; }
}
@media (max-width: 899px) {
  .menu-toggle { display: inline-flex; }
  .global-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; background: var(--navy); border-bottom: 1px solid rgba(255, 255, 255, 0.12); box-shadow: 0 8px 20px rgba(7, 17, 38, 0.4); }
  .site-header.is-open .global-nav { display: block; }
  .global-nav-list { flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--gutter) 16px; }
  .global-nav-list li { border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
  .global-nav-list li.global-nav-cta { border-bottom: 0; padding-top: 14px; }
  .global-nav-list a:not(.btn) { display: block; padding: 12px 4px; font-size: 15px; min-height: 44px; }
  .global-nav-list .btn { width: 100%; }
}

/* ---------- Buttons（14）：主ボタンは旧紫グラデーション・白文字。角丸 8px、グロー・浮き上がりなし ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 10px 28px; border-radius: var(--btn-radius); border: 2px solid transparent;
  font-weight: 700; font-size: 16px; text-decoration: none; cursor: pointer; line-height: 1.3; text-align: center;
  transition: background-color .2s, color .2s, border-color .2s;
}
.btn-primary { background: linear-gradient(135deg, var(--purple), var(--purple-deep)); color: var(--white); }
.btn-primary:hover { color: var(--white); background: linear-gradient(135deg, #6D28D9, #4C1D95); }
.btn-outline { background: var(--white); color: var(--purple); border-color: var(--purple); }
.btn-outline:hover { background: var(--purple-light); color: var(--navy); border-color: var(--navy); }
.btn-ghost { background: transparent; color: var(--text); border-color: var(--line); }
.btn-ghost:hover { background: var(--purple-light); }
.btn-sm { min-height: 40px; padding: 6px 18px; font-size: 14px; }
.btn-lg { min-height: 56px; padding: 12px 40px; font-size: 17px; }
.btn[aria-disabled="true"], .btn:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; }
.btn .icon { width: 18px; height: 18px; flex: none; }
.text-link { font-weight: 700; color: var(--purple); text-decoration: underline; text-underline-offset: 0.25em; display: inline-flex; align-items: center; gap: 6px; }
.text-link:hover { color: var(--navy); }
.text-link .icon { width: 16px; height: 16px; }

/* ---------- Sections ---------- */
.section { padding: 88px 0; scroll-margin-top: calc(var(--header-h) + var(--section-nav-h) + 8px); }
.section-tight { padding: 64px 0; }
.section-soft { background: var(--bg-soft); }
.section-sage { background: var(--purple-light); }
/* .on-dark は下層ページの深緑帯（.page-hero）だけで使用 */
.on-dark a { color: var(--white); }
.section-head { text-align: center; max-width: 760px; margin: 0 auto 48px; }
.section-title { font-size: clamp(24px, 3.4vw, 36px); line-height: 1.4; font-weight: 800; letter-spacing: 0.01em; text-wrap: balance; color: var(--navy); }
.section-title:focus { outline: none; }
.section-lead { margin-top: 14px; font-size: 16px; color: var(--muted); }
.section-lead-small { font-size: 14px; }
.section-note { margin-top: 24px; font-size: 14px; color: var(--muted); text-align: center; }
.tag {
  display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: 0.06em; padding: 3px 10px; border-radius: 999px;
  background: var(--navy); color: var(--white); line-height: 1.6; vertical-align: middle;
}
.on-dark .tag { background: rgba(255,255,255,0.16); }
.tag-light, .on-dark .tag-light { background: var(--purple-light); color: var(--purple); }
.icon { width: 24px; height: 24px; }

@media (max-width: 719px) {
  .section { padding: 56px 0; }
  .section-tight { padding: 44px 0; }
  .section-head { margin-bottom: 32px; }
}

/* ---------- Hero（15）：元の中央寄せ1カラム。白文字。
   .hero-inner は最大 1000px で中央。h1 は「セキュリティ専門家の」「副業・フリーランスを支える」の2行（PC 最大 58px）。
   各行は block の span、行内は意味単位の nowrap span（セキュリティ｜専門家の／副業・フリーランスを｜支える）なので、
   幅が足りないモバイルでは意味単位の境目だけで折り返す。320px（内容幅 280px）では 26px × 10文字 ≒ 260px で収まる。
   本文は中央、CTA は縦並び（主ボタン → 補助リンク）。右図なし。
   （19）背景：work/hero-c-reference.html の案 C「重なる光層」を移植（ビットマップ hero-guild-cycle-v1.png は不使用）。
   重なり順（.hero は isolation: isolate なので負の z-index は hero の背景色の上・文字の下）：
     .hero-wash（z -3）… 斜めの帯グラデーション（blur 39px、10s で揺れる）＋ ::after の2つの楕円（7s で逆方向に揺れる）
     .hero-art（z -2）… SVG。左右3本ずつの細い曲線 .hero-art-base と、その上を走る光 .hero-art-runner（stroke-dashoffset、5s）
     .hero::after（z -1）… 中央の楕円マスク（文字の下だけ暗く）
   すべて pointer-events: none（app.js 側で aria-hidden）。wash は hero より大きい（inset -16% -8%）ので .hero の overflow: clip で
   切り抜く（hidden にするとフォーカス移動で内部スクロールが起きるため clip）。
   見出し・本文・CTA は .hero-inner（z-index 1）に載せて動かさない ---------- */
.hero {
  /* clip prevents focus/scrollIntoView from scrolling the oversized decorative layer. */
  position: relative; overflow: clip; isolation: isolate;
  color: var(--white); text-align: center;
  background: var(--navy);
  padding: 96px 0 88px;
}
.hero::after {
  content: ""; position: absolute; z-index: -1; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse 50% 85% at center, #071126c8 0%, #071126a0 58%, transparent 100%);
}
.hero-wash {
  position: absolute; z-index: -3; inset: -16% -8%; pointer-events: none;
  background: linear-gradient(125deg, transparent 4%, #3b5c9359 20%, #473f8852 31%, transparent 45%, transparent 61%, #59468d59 76%, #28738b55 88%, transparent 100%);
  filter: blur(39px);
  animation: hero-atmosphere 10s ease-in-out infinite alternate;
}
.hero-wash::after {
  content: ""; position: absolute; inset: 4% 0; pointer-events: none;
  background: radial-gradient(ellipse 42% 65% at 11% 75%, #365d98a3, transparent 75%), radial-gradient(ellipse 44% 70% at 91% 27%, #694999a8, transparent 76%);
  animation: hero-atmosphere-inner 7s ease-in-out infinite alternate;
}
.hero-art { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; max-width: none; pointer-events: none; }
.hero-art-base { fill: none; stroke: #8992d5; stroke-width: .8; opacity: .32; }
.hero-art-runner {
  fill: none; stroke: #a6a3ff; stroke-width: 1.75; stroke-linecap: round; stroke-dasharray: 85 915;
  animation: hero-run 5s linear infinite; filter: drop-shadow(0 0 5px #6f77e1);
}
.hero-art-runner-blue { stroke: #7ab4f1; filter: drop-shadow(0 0 5px #377fdd); }
.hero-art-delay-1 { animation-delay: -1.5s; }
.hero-art-delay-2 { animation-delay: -3s; }
.hero-art-delay-3 { animation-delay: -4.5s; }
/* 停止はヒーロー内の全レイヤー（擬似要素・子要素・その擬似要素）に適用。再開時は途中から続く */
.hero[data-motion="paused"]::before, .hero[data-motion="paused"]::after,
.hero[data-motion="paused"] *, .hero[data-motion="paused"] *::before, .hero[data-motion="paused"] *::after { animation-play-state: paused; }
@keyframes hero-atmosphere {
  from { transform: translate3d(-3%, -4%, 0) rotate(-1deg) scale(1.02); }
  to   { transform: translate3d(4%, 4%, 0) rotate(1.5deg) scale(1.1); }
}
@keyframes hero-atmosphere-inner {
  from { transform: translate3d(3%, 5%, 0); opacity: .75; }
  to   { transform: translate3d(-5%, -6%, 0); opacity: 1; }
}
@keyframes hero-run {
  from { stroke-dashoffset: 0; }
  to   { stroke-dashoffset: -1000; }
}
.hero-inner { position: relative; z-index: 1; max-width: calc(1000px + var(--gutter) * 2); }
/* 停止／再生ボタン（18）：右下の小さなピル。CTA は中央寄せで下余白（88 / 64 / 68px）より上にあるので重ならない。
   文言は app.js が切り替える（背景の動きを止める／背景を動かす）。フォーカスは .hero :focus-visible（濃紺＋シアンの二重枠） */
.hero-motion-toggle {
  position: absolute; right: 20px; bottom: 20px; z-index: 2;
  min-height: 36px; padding: 6px 14px; border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.38); background: rgba(7, 17, 38, 0.6); color: rgba(255, 255, 255, 0.9);
  font-size: 12px; font-weight: 600; line-height: 1.4; white-space: nowrap; cursor: pointer;
  transition: background-color .2s, border-color .2s, color .2s;
}
.hero-motion-toggle:hover { background: rgba(7, 17, 38, 0.85); border-color: rgba(255, 255, 255, 0.7); color: var(--white); }
/* 共通の :focus-visible が border-radius 6px を当てるので、ピル形状を保つ（枠は .hero :focus-visible の濃紺＋シアン） */
.hero-motion-toggle:focus-visible { border-radius: 999px; }
.hero-copy { min-width: 0; }
.hero-title { font-size: clamp(26px, 5.4vw, 58px); line-height: 1.3; font-weight: 800; letter-spacing: 0.01em; color: var(--white); }
.hero-title > span { display: block; }
.hero-title .nowrap { display: inline-block; }
/* （33）本文を少し大きくし、下の登録欄（.entry-form-hero、最大 460px）と幅をそろえる */
.hero-body { margin: 24px auto 0; max-width: 680px; font-size: clamp(16px, 1.9vw, 22px); line-height: 1.8; color: rgba(255, 255, 255, 0.9); }
.hero-actions { margin-top: 36px; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.hero .text-link { color: var(--white); }
.hero .text-link:hover { color: var(--cyan); }
.hero-actions .btn-lg { min-width: 300px; max-width: 100%; }
/* （31）最上部のメール登録欄：入力欄＋ボタンの横並び（狭い画面は縦）。同意は下に1行。色は #entry と同じ濃紺地向け */
/* .hero を付けて、後出の .entry-form（最大 520px・上余白）より優先させる */
.hero .entry-form-hero { margin: 0 auto; width: 100%; max-width: 460px; text-align: left; }
.entry-form-hero .entry-inline { display: flex; gap: 10px; }
.entry-form-hero .entry-input { flex: 1; min-width: 0; height: 52px; border-color: rgba(255, 255, 255, 0.55); }
.entry-form-hero .entry-inline .btn { flex: none; height: 52px; }
.entry-form-hero .entry-field + .entry-field { margin-top: 12px; }
.entry-form-hero .entry-consent { font-size: 14px; justify-content: center; }
.entry-form-hero .req { color: #FFB4AB; }
.entry-form-hero .error-msg { color: #FFB4AB; }
.entry-form-hero .entry-result { margin-top: 12px; }
.hero-consult-note { margin: 0; font-size: 14px; color: rgba(255, 255, 255, 0.82); }
@media (max-width: 559px) {
  .entry-form-hero .entry-inline { flex-direction: column; }
  .entry-form-hero .entry-inline .btn { width: 100%; }
  .entry-form-hero .entry-consent { justify-content: flex-start; }
}
@media (max-width: 899px) {
  .hero { padding: 72px 0 64px; }
}
@media (max-width: 719px) {
  /* 下余白 48 → 68px（18）：右下の停止ボタン（高さ 36px・bottom 14px）が全幅の補助リンクに重ならないようにする */
  .hero { padding: 56px 0 68px; }
  .hero-actions { align-items: stretch; gap: 14px; }
  .hero-actions .btn-lg { width: 100%; min-width: 0; }
  .hero-actions .text-link { justify-content: center; }
  .hero-motion-toggle { right: 12px; bottom: 14px; padding: 6px 12px; }
}

/* ---------- Section nav ---------- */
.section-nav {
  position: sticky; top: var(--header-h); z-index: 90;
  background: var(--white); border-bottom: 1px solid var(--line); box-shadow: 0 2px 8px rgba(7, 17, 38, 0.05);
}
.section-nav-list {
  display: flex; align-items: stretch; justify-content: center; gap: 0;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin;
  min-height: var(--section-nav-h);
}
.section-nav-list li { flex: none; display: flex; }
.section-nav-list li + li::before { content: ""; width: 1px; background: var(--line); margin: 12px 0; }
.section-nav-btn {
  background: none; border: 0; cursor: pointer; padding: 0 18px; min-height: var(--section-nav-h);
  font-size: 14px; font-weight: 600; color: var(--text); white-space: nowrap; border-bottom: 3px solid transparent;
}
.section-nav-btn:hover { color: var(--purple); }
.section-nav-btn[aria-current="true"] { color: var(--navy); border-bottom-color: var(--purple); }
.section-nav-btn:focus-visible { box-shadow: inset 0 0 0 3px var(--purple); border-radius: 0; }
@media (max-width: 899px) {
  .section-nav-list { justify-content: flex-start; padding: 0 8px; }
  .section-nav-btn { padding: 0 14px; font-size: 13px; }
}

/* ---------- Benefits（20）：「CyberGuildで得られること」。薄い地（.section-soft）に白カード3枚。
   カード：線アイコン（薄紫の角丸地に紫）＋番号 → 見出し（20px）→ 本文（15px）。左揃え。画像・影・アニメなし。
   理由カード（中央揃え・画像・上辺の紫線）とは体裁を分けて重複感を避ける。モバイルは縦1列 ---------- */
.benefit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.benefit {
  background: var(--white); border: 1px solid var(--line); border-radius: 16px; padding: 28px 28px 30px;
  min-width: 0; display: flex; flex-direction: column;
}
.benefit-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.benefit-icon {
  width: 52px; height: 52px; border-radius: 14px; background: var(--purple-light); color: var(--purple);
  display: flex; align-items: center; justify-content: center; flex: none;
}
.benefit-icon .icon { width: 26px; height: 26px; }
.benefit-no { font-size: 14px; font-weight: 800; letter-spacing: 0.08em; color: var(--purple); }
.benefit h3 { margin-top: 18px; font-size: 20px; font-weight: 800; line-height: 1.45; color: var(--navy); }
.benefit h3 .nowrap { display: block; }
.benefit p { margin-top: 10px; color: var(--muted); font-size: 15px; line-height: 1.8; text-wrap: pretty; }
@media (max-width: 899px) {
  .benefit-grid { grid-template-columns: minmax(0, 1fr); }
  .benefit h3 .nowrap { display: inline-block; }
}
@media (max-width: 479px) {
  .benefit { padding: 24px 20px 26px; }
  .benefit h3 { font-size: 19px; }
}

/* ---------- About（11）：「CyberGuildとは」。見出し＋本文2文の中央揃えブロック。画像・空枠なし ---------- */
.about-block { max-width: 760px; margin: 0 auto; text-align: center; }
.about-text { margin-top: 24px; font-size: clamp(16px, 1.7vw, 18px); line-height: 2; }
.about-text p + p { margin-top: 12px; }
.about-text p { text-wrap: pretty; }
.about-text .nowrap { display: inline-block; white-space: nowrap; }
/* サービス説明画像（12）：説明文の下、全幅・最大 1000px・中央。比率保持（切り抜きなし）。モバイルも幅 100% で横はみ出しなし */
.about-figure { margin: 0; }
.about-img { display: block; width: 100%; height: auto; max-width: 1000px; margin: 32px auto 0; }
@media (max-width: 719px) {
  .about-block { text-align: left; }
  .about-block .section-title { text-align: center; }
  .about-text { margin-top: 20px; }
}

/* ---------- Reasons（13）：薄紫背景（.section-sage ＝ --purple-light、クラス名は app.js 互換で維持）の上に白カード3枚 ----------
   カード：白背景・細い罫線・上辺 4px ティール・角丸 16px・padding 32px、gap 24px。影・発光・アニメなし。
   先頭に元画像（assets/generated/reason-*.png）を最大 160×120px・object-fit: contain で配置（alt 空）、
   続いて 01/02/03（28px・ティール）、見出し 23px、本文 16px / 1.8。モバイルは縦1列 */
.reason-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.reason {
  background: var(--white); border: 1px solid var(--line); border-top: 4px solid var(--purple); border-radius: 16px; padding: 32px;
  text-align: center; min-width: 0;
}
.reason-figure { display: flex; align-items: center; justify-content: center; height: 120px; margin: 0 auto 20px; }
.reason-img { display: block; width: auto; height: auto; max-width: 160px; max-height: 120px; object-fit: contain; }
.reason-no { font-size: 28px; font-weight: 800; line-height: 1; letter-spacing: 0.04em; color: var(--purple); margin-bottom: 14px; }
.reason h3 { font-size: 23px; font-weight: 800; line-height: 1.45; color: var(--navy); }
/* 理由3「専門アドバイザーとの」「定期面談」：行ごとの span を block にして単語の途中で切らない
   （1行目 10文字 × 23px ≒ 230px。320px 画面の本文幅 236px に収まるが余裕がないため 359px 以下は 20px） */
.reason h3 .nowrap { display: block; }
.reason p { margin-top: 12px; color: var(--muted); font-size: 16px; line-height: 1.8; text-align: left; }
@media (max-width: 899px) {
  .reason-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 479px) {
  .reason { padding: 28px 22px; }
}
@media (max-width: 359px) {
  .reason h3 { font-size: 20px; }
}

/* ---------- Projects（17）：トップの #projects は暗い帯＋白カード（先頭3件・コンパクト）。一覧 #/projects は .section-soft 上に
   フィルタ＋結果の2カラム。カードは白地の横型（左：分類／募集状況チップ → タイトル → 概要 → 条件（報酬を含む） → タグ、右：確認日＋詳細）。
   詳細は募集条件パネル（条件の表 → タグ）→ 本文、PC は右にサイド CTA（sticky）。配色・装飾は本サイトの濃紺・紫。イラストなし。
   （20）帯の背景：左上の濃紺 #0B1A3D → 右下のくすんだ紫 #4C3B80 の斜めグラデーションに、左上から青（シアン系）の放射光を薄く重ねる。
   旧（#3B1E8A → #2E1A6E）は差が小さく単色に見えたため、始点と終点の色相・明度の差を広げた。白カードの可読性は不変 ---------- */
.section#projects {
  background:
    radial-gradient(ellipse 70% 80% at 12% 10%, rgba(56, 207, 243, 0.22), transparent 70%),
    radial-gradient(ellipse 50% 60% at 95% 100%, rgba(124, 58, 237, 0.28), transparent 72%),
    linear-gradient(155deg, #0B1A3D 0%, #1E2A66 45%, #4C3B80 100%);
  color: var(--white);
}
.section#projects .section-title { color: var(--white); }
.section#projects .section-note, .section#projects .text-link { color: var(--white); }
.section#projects .text-link:hover { color: var(--cyan); }
.section#projects .catalog-card :focus-visible { box-shadow: var(--focus); }
.project-list { display: flex; flex-direction: column; gap: 16px; max-width: 880px; margin: 0 auto; }

/* ---------- 仕事の領域（22）：トップ #projects の帯（背景は上の .section#projects のまま）に、ガラス調のタイル10枚。
   PC 5列 → 899px 以下 3列 → 719px 以下 2列 → 359px 以下 1列。ホバー／フォーカスで浮き、シアン→紫の縁と光。
   「いまの経験」を選ぶと .is-lit（光る・アイコンが脈打つ）／.is-dim（沈む）。reduced-motion では脈動・浮きなし ---------- */
/* （23→24）RPG は世界観（ジョブ・属性・ステータス・クラスチェンジ）だけ。書体・枠・点滅などのレトロな見た目は使わず、サイトの書体と
   ガラス調のパネルのまま。属性色：攻撃＝コーラル、防御＝シアン、統制＝金 */
:root { --offense: #FF8A94; --defense: var(--cyan); --governance: #F5C451; }
.field-kicker { font-size: 12px; font-weight: 800; letter-spacing: 0.24em; color: var(--cyan); margin-bottom: 10px; }
.field-kicker-dark { color: var(--purple); }
.section#projects .section-lead { color: rgba(255, 255, 255, 0.82); }

/* ---------- 役割 × テーマ（26）：Codex v20。.rolemap[data-layout] で A（3列）／B（層の地図、既定）／C（テーマから）を切り替える。
   共通：テーマのボタン（ピル、aria-pressed）＋ 3つのまとまり × 役割カード（アイコン｜役割名＋1行＋矢印）。テーマ選択中（.has-theme）は
   1行がシアンになり、カードの縁が淡く光る。899px 以下はどの案も、テーマ＝折り返しのピル、まとまり＝縦積み、カード＝1列 ---------- */
.rolemap-switch {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; margin: -40px auto 36px;
  font-size: 12px; color: rgba(255, 255, 255, 0.6);
}
.rolemap-switch span { margin-right: 4px; font-weight: 700; }
.rolemap-switch button {
  min-height: 32px; padding: 4px 12px; border-radius: 999px; cursor: pointer; font-size: 12px; font-weight: 700;
  border: 1px dashed rgba(255, 255, 255, 0.35); background: transparent; color: rgba(255, 255, 255, 0.8);
}
.rolemap-switch button[aria-pressed="true"] { border-style: solid; border-color: var(--white); background: var(--white); color: var(--navy); }
.rolemap { max-width: 1120px; margin: 0 auto; }
.rolemap-themes { display: flex; align-items: center; gap: 18px; margin-bottom: 28px; }
.rolemap-themes-label { flex: none; font-size: 16px; font-weight: 800; color: var(--white); }
.rolemap-theme-list { display: flex; flex-wrap: wrap; gap: 10px; }
.rolemap-theme {
  min-height: 44px; padding: 6px 24px; border-radius: 999px; cursor: pointer; font-size: 15px; font-weight: 700;
  border: 1px solid rgba(167, 139, 250, 0.75); background: rgba(11, 26, 61, 0.4); color: var(--white);
  transition: background-color .2s, border-color .2s, color .2s, box-shadow .2s;
}
.rolemap-theme:hover { border-color: var(--cyan); }
.rolemap-theme[aria-pressed="true"] { background: var(--cyan); border-color: var(--cyan); color: var(--navy); box-shadow: 0 0 22px rgba(56, 207, 243, 0.45); }
.rolemap-theme:focus-visible { border-radius: 999px; }
.rolemap-group-title { font-size: 22px; font-weight: 800; color: var(--white); }
.rolemap-role-list { display: grid; gap: 12px; }
/* （29）カードが li いっぱいに伸びるように（同じ行の高さをそろえる。全体の高さは app.js の equalizeRoleCards） */
.rolemap-role-list > li { display: flex; }
.rolemap-role-list > li > .rolemap-role { flex: 1; min-width: 0; }
.rolemap-role {
  display: flex; align-items: center; gap: 16px; min-height: 76px; padding: 14px 18px; border-radius: 14px; text-decoration: none; color: var(--white);
  border: 1px solid rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.05);
  transition: border-color .2s, background-color .2s, box-shadow .2s;
}
.rolemap-role-icon { flex: none; display: flex; align-items: center; padding-right: 16px; border-right: 1px solid rgba(255, 255, 255, 0.22); }
.rolemap-role-icon .icon { width: 28px; height: 28px; color: rgba(255, 255, 255, 0.9); }
.rolemap-role-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.rolemap-role-name { font-size: 16px; font-weight: 800; line-height: 1.45; }
.rolemap-role-name .nowrap, .rolemap-role-line .nowrap, .rolemap-group-title .nowrap { display: inline-block; white-space: nowrap; }
.rolemap-role-line { font-size: 13px; line-height: 1.6; color: rgba(255, 255, 255, 0.72); text-wrap: pretty; }
.rolemap-role-line.is-fresh { animation: rolemap-fade .3s ease-out; }
@keyframes rolemap-fade { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: none; } }
.rolemap-role-go { flex: none; display: flex; opacity: 0.45; transition: opacity .2s, transform .2s; }
.rolemap-role-go .icon { width: 16px; height: 16px; }
.rolemap-role:hover, .rolemap-role:focus-visible { color: var(--white); border-color: rgba(56, 207, 243, 0.75); background: rgba(56, 207, 243, 0.08); }
.rolemap-role:hover .rolemap-role-go, .rolemap-role:focus-visible .rolemap-role-go { opacity: 1; transform: translateX(3px); }
.section#projects .rolemap-role:focus-visible { box-shadow: var(--focus-dark); border-radius: 14px; }
.rolemap.has-theme .rolemap-role { border-color: rgba(56, 207, 243, 0.45); box-shadow: 0 0 18px rgba(56, 207, 243, 0.12); }
.rolemap.has-theme .rolemap-role-line { color: var(--cyan); font-weight: 700; }
.rolemap.has-theme .rolemap-role-icon .icon { color: var(--cyan); }

/* A：3列。まとまりの見出しは紫の帯、カードは縦積み */
.rolemap[data-layout="a"] .rolemap-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; align-items: start; }
.rolemap[data-layout="a"] .rolemap-group { border-radius: 16px; background: rgba(7, 17, 38, 0.45); padding-bottom: 14px; }
.rolemap[data-layout="a"] .rolemap-group-title {
  padding: 14px 18px; border-radius: 16px 16px 0 0; text-align: center; font-size: 20px;
  background: linear-gradient(135deg, var(--purple), #6D28D9);
}
.rolemap[data-layout="a"] .rolemap-role-list { padding: 14px 14px 0; }
.rolemap[data-layout="a"] .rolemap-role-line { font-size: 12.5px; }

/* B：層の地図。まとまりを横帯で上から重ね、左の縦線と点で層をつなぐ。役割は帯の中で2列 */
.rolemap[data-layout="b"] .rolemap-groups { position: relative; display: grid; gap: 16px; }
.rolemap[data-layout="b"] .rolemap-groups::before {
  content: ""; position: absolute; left: 28px; top: 40px; bottom: 40px; width: 2px; border-radius: 2px;
  background: linear-gradient(180deg, var(--cyan), rgba(56, 207, 243, 0.35));
}
.rolemap[data-layout="b"] .rolemap-group {
  position: relative; display: grid; grid-template-columns: 200px minmax(0, 1fr); align-items: center; gap: 20px;
  padding: 18px 20px 18px 56px; border-radius: 18px;
  border: 1px solid rgba(56, 207, 243, 0.35); background: linear-gradient(90deg, rgba(56, 207, 243, 0.1), rgba(255, 255, 255, 0.03));
}
.rolemap[data-layout="b"] .rolemap-group::before {
  content: ""; position: absolute; left: 22px; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%;
  background: var(--cyan); box-shadow: 0 0 12px rgba(56, 207, 243, 0.9);
}
.rolemap[data-layout="b"] .rolemap-role-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rolemap[data-layout="b"].has-theme .rolemap-group { border-color: rgba(56, 207, 243, 0.7); box-shadow: 0 0 28px rgba(56, 207, 243, 0.14); }

/* C：テーマから。左にテーマの縦リスト、右にまとまりごとの役割一覧（1列） */
.rolemap[data-layout="c"] { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 24px; align-items: start; }
.rolemap[data-layout="c"] .rolemap-themes {
  flex-direction: column; align-items: stretch; gap: 16px; margin: 0; padding: 26px 22px; border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.14); background: rgba(255, 255, 255, 0.04); position: sticky; top: calc(var(--header-h) + var(--section-nav-h) + 16px);
}
.rolemap[data-layout="c"] .rolemap-theme-list { flex-direction: column; gap: 10px; }
.rolemap[data-layout="c"] .rolemap-theme { width: 100%; text-align: left; border-radius: 12px; min-height: 52px; padding: 6px 20px; font-size: 17px; border-color: rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.05); }
.rolemap[data-layout="c"] .rolemap-theme[aria-pressed="true"] { background: rgba(56, 207, 243, 0.16); color: var(--white); border-color: var(--cyan); }
.rolemap[data-layout="c"] .rolemap-theme:focus-visible { border-radius: 12px; }
.rolemap[data-layout="c"] .rolemap-groups { display: grid; gap: 22px; padding: 24px 26px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.14); background: rgba(255, 255, 255, 0.04); }
.rolemap[data-layout="c"] .rolemap-group-title { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; font-size: 20px; }
.rolemap[data-layout="c"] .rolemap-group-title::before { content: ""; width: 5px; height: 26px; border-radius: 3px; background: #8B5CF6; }
.rolemap[data-layout="c"] .rolemap-role-list { gap: 8px; }
.rolemap[data-layout="c"] .rolemap-role { min-height: 62px; padding: 10px 18px; }
.rolemap[data-layout="c"] .rolemap-role-text { flex-direction: row; align-items: baseline; flex-wrap: wrap; column-gap: 16px; row-gap: 2px; }

@media (prefers-reduced-motion: reduce) {
  .rolemap-role-line.is-fresh { animation: none; }
  .rolemap-role-go { transition: none; }
}
@media (max-width: 1099px) {
  .rolemap[data-layout="b"] .rolemap-group { grid-template-columns: 170px minmax(0, 1fr); }
  .rolemap[data-layout="b"] .rolemap-group-title { font-size: 19px; }
}
@media (max-width: 899px) {
  .rolemap-switch { margin-top: -24px; margin-bottom: 28px; }
  .rolemap-themes, .rolemap[data-layout="c"] .rolemap-themes { flex-direction: column; align-items: flex-start; gap: 12px; position: static; padding: 0; border: 0; background: none; margin-bottom: 24px; }
  .rolemap-theme-list, .rolemap[data-layout="c"] .rolemap-theme-list { flex-direction: row; flex-wrap: wrap; gap: 8px; }
  .rolemap-theme, .rolemap[data-layout="c"] .rolemap-theme { width: auto; min-height: 40px; padding: 4px 16px; font-size: 14px; border-radius: 999px; }
  .rolemap[data-layout="c"] .rolemap-theme[aria-pressed="true"] { background: var(--cyan); color: var(--navy); }
  .rolemap[data-layout="c"] .rolemap-theme:focus-visible { border-radius: 999px; }
  .rolemap[data-layout="a"] .rolemap-groups, .rolemap[data-layout="c"] { grid-template-columns: minmax(0, 1fr); }
  .rolemap[data-layout="c"] .rolemap-groups { padding: 0; border: 0; background: none; }
  .rolemap[data-layout="c"] .rolemap-role-text { flex-direction: column; align-items: stretch; }
  .rolemap[data-layout="b"] .rolemap-group { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 18px 14px 14px 40px; }
  .rolemap[data-layout="b"] .rolemap-group::before { left: 14px; top: 28px; margin-top: 0; }
  .rolemap[data-layout="b"] .rolemap-groups::before { left: 20px; }
  .rolemap[data-layout="b"] .rolemap-role-list { grid-template-columns: minmax(0, 1fr); }
  .rolemap-group-title, .rolemap[data-layout="a"] .rolemap-group-title, .rolemap[data-layout="c"] .rolemap-group-title { font-size: 18px; }
  .rolemap-role { min-height: 64px; padding: 12px 14px; gap: 12px; }
  .rolemap-role-icon { padding-right: 12px; }
  .rolemap-role-icon .icon { width: 24px; height: 24px; }
  .rolemap-role-name { font-size: 15px; }
}

/* 領域ページと共通のパーツ（アイコン地・属性バッジ・ステータス） */
.field-icon {
  width: 44px; height: 44px; border-radius: 12px; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, rgba(56, 207, 243, 0.22), rgba(124, 58, 237, 0.32)); color: var(--white);
}
.field-icon .icon { width: 24px; height: 24px; }
/* 属性バッジ：攻撃＝コーラル、防御＝シアン、統制＝金 */
.field-type {
  font-size: 11px; font-weight: 800; line-height: 1; padding: 5px 10px; border-radius: 999px; white-space: nowrap;
  border: 1px solid currentColor; background: rgba(7, 17, 38, 0.5);
}
.field-type-offense { color: var(--offense); }
.field-type-defense { color: var(--defense); }
.field-type-governance { color: var(--governance); }
/* ステータス：細い角丸のバー（幅＝値/5）。（25）トップからは外し、領域ページの .is-large だけで使う */
.field-stats { display: grid; gap: 6px; margin-top: 14px; }
.field-stats > div { display: flex; align-items: center; gap: 10px; }
.field-stats dt { font-size: 11px; font-weight: 700; color: rgba(255, 255, 255, 0.7); width: 2.4em; flex: none; }
.field-stats dd { flex: 1; display: flex; min-width: 0; }
.field-bar { position: relative; flex: 1; max-width: 120px; height: 5px; border-radius: 999px; background: rgba(255, 255, 255, 0.14); overflow: hidden; }
.field-bar-fill { position: absolute; inset: 0 auto 0 0; border-radius: inherit; background: linear-gradient(90deg, rgba(56, 207, 243, 0.55), var(--defense)); }
.field-status-offense .field-bar-fill { background: linear-gradient(90deg, rgba(255, 138, 148, 0.55), var(--offense)); }
.field-status-governance .field-bar-fill { background: linear-gradient(90deg, rgba(245, 196, 81, 0.55), var(--governance)); }
.field-stats.is-large { gap: 10px; margin-top: 0; min-width: 260px; }
.field-stats.is-large dt { font-size: 13px; width: 2.6em; }
.field-stats.is-large .field-bar { max-width: 200px; height: 8px; }

/* 領域ページ（22）：3列（こんな仕事／生かせる経験／広がるキャリア）→ 注記 → 濃紺の CTA 帯 → 関連案件 → ほかの領域チップ */
.field-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.field-col { background: var(--white); border: 1px solid var(--line); border-top: 4px solid var(--purple); border-radius: 16px; padding: 28px; min-width: 0; }
.field-col.is-from { border-top-color: var(--cyan); }
.field-col.is-next { border-top-color: var(--navy-2); }
.field-col h2 { font-size: 19px; font-weight: 800; color: var(--navy); }
.field-col ul { margin-top: 14px; display: flex; flex-direction: column; gap: 10px; }
.field-col li { position: relative; padding-left: 18px; line-height: 1.7; }
.field-col li::before { content: ""; position: absolute; left: 0; top: 0.7em; width: 7px; height: 7px; border-radius: 2px; background: var(--purple); transform: rotate(45deg); }
.field-col.is-from li::before { background: var(--cyan); }
.field-col.is-next li::before { background: var(--navy-2); }
/* ジョブデータのパネル（23→24）：白い地の上に濃紺のグラデーション＋角丸。上段にラベルと属性バッジ */
.field-status-window {
  position: relative; margin: 0 0 40px; padding: 24px 32px 30px; color: var(--white);
  background:
    radial-gradient(ellipse 50% 120% at 100% 0%, rgba(124, 58, 237, 0.35), transparent 70%),
    linear-gradient(135deg, #0B1A3D, #1E2A66 60%, #33296B);
  border-radius: 18px; box-shadow: 0 16px 36px rgba(7, 17, 38, 0.22);
}
.field-status-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.field-status-window .field-window-label { margin-bottom: 0; }
.field-status-body { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 24px; }
.field-icon-lg { width: 72px; height: 72px; border-radius: 16px; }
.field-icon-lg .icon { width: 38px; height: 38px; }
.field-status-name { font-size: 26px; font-weight: 800; line-height: 1.4; }
.field-status-type { margin-top: 4px; font-size: 13px; color: rgba(255, 255, 255, 0.75); }
.field-status-window .field-stats dt { color: rgba(255, 255, 255, 0.8); }
.field-cta-kicker { font-size: 12px; font-weight: 800; letter-spacing: 0.2em; color: var(--cyan); margin-bottom: 4px; }
@media (max-width: 719px) {
  .field-status-window { padding: 26px 20px 22px; }
  .field-status-body { grid-template-columns: auto minmax(0, 1fr); gap: 16px 18px; }
  .field-status-body .field-stats { grid-column: 1 / -1; }
  .field-icon-lg { width: 56px; height: 56px; }
  .field-status-name { font-size: 21px; }
  .field-stats.is-large { min-width: 0; }
}
/* テーマ別の仕事（26）：4行の表。トップでテーマを選んで来た行（.is-focus）を強調 */
.field-themes { margin-top: 24px; background: var(--white); border: 1px solid var(--line); border-radius: 16px; padding: 26px 28px; }
.field-themes h2 { font-size: 19px; font-weight: 800; color: var(--navy); }
.field-theme-list { margin-top: 14px; display: grid; gap: 8px; }
.field-theme-row { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 16px; align-items: center; padding: 12px 16px; border-radius: 10px; background: var(--bg-soft); }
.field-theme-row dt { font-size: 14px; font-weight: 800; color: var(--purple-deep); }
.field-theme-row dd { line-height: 1.7; }
.field-theme-row.is-focus { background: var(--purple-light); box-shadow: inset 4px 0 0 var(--purple); }
@media (max-width: 719px) {
  .field-themes { padding: 22px 18px; }
  .field-theme-row { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}
.field-sample-note { margin-top: 16px; font-size: 13px; color: var(--muted); }
.field-cta {
  margin-top: 40px; padding: 32px 36px; border-radius: 18px; color: var(--white);
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  background:
    radial-gradient(ellipse 60% 120% at 0% 0%, rgba(56, 207, 243, 0.25), transparent 70%),
    linear-gradient(135deg, #0B1A3D, #2A2A70 60%, #4C3B80);
}
.field-cta-title { font-size: 20px; font-weight: 800; }
.field-cta-body { margin-top: 6px; font-size: 14px; color: rgba(255, 255, 255, 0.84); max-width: 560px; }
.field-cta .btn { flex: none; }
.field-cta :focus-visible { box-shadow: var(--focus-dark); }
.field-chip-list { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; max-width: 880px; margin: 0 auto; }
.field-chip {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 16px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--navy); font-size: 14px; font-weight: 700; text-decoration: none;
  transition: border-color .2s, background-color .2s;
}
.field-chip .icon { width: 18px; height: 18px; color: var(--purple); }
.field-chip:hover { border-color: var(--purple); background: var(--purple-light); color: var(--navy); }
@media (max-width: 899px) {
  .field-cols { grid-template-columns: minmax(0, 1fr); }
  .field-cta { flex-direction: column; align-items: stretch; text-align: left; }
  .field-cta .btn { width: 100%; }
}
@media (max-width: 479px) {
  .field-col { padding: 22px 20px; }
  .field-cta { padding: 26px 22px; }
}

/* チップ：分類（薄紫）、募集中（紫・白文字）、募集状況を確認（淡い琥珀）、募集終了（灰） */
.chip { display: inline-flex; align-items: center; font-size: 12px; font-weight: 700; line-height: 1.5; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.chip-cat { background: var(--purple-light); color: var(--purple-deep); border: 1px solid #E4DDF7; }
.chip-status-open { background: var(--purple); color: var(--white); }
.chip-status-unverified { background: #FFF3D6; color: #7A4B00; border: 1px solid #F2D387; }
.chip-status-closed { background: #EEF0F5; color: var(--muted); border: 1px solid var(--line); }
.page-badges { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }

/* 横型カード */
.catalog-card {
  background: var(--white); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: 22px 26px; display: grid; grid-template-columns: minmax(0, 1fr) 190px; gap: 16px 28px; min-width: 0;
}
.catalog-card-body { min-width: 0; }
.catalog-card-head { display: flex; flex-wrap: wrap; gap: 8px; }
.catalog-card-title { margin-top: 10px; font-size: 19px; font-weight: 800; line-height: 1.45; color: var(--navy); }
.catalog-card-title a { color: inherit; text-decoration: none; }
.catalog-card-title a:hover { color: var(--purple); text-decoration: underline; }
.catalog-card-summary { margin-top: 8px; font-size: 14px; color: var(--muted); }
.catalog-facts { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 6px 20px; font-size: 14px; }
.catalog-fact { display: flex; gap: 6px; align-items: baseline; min-width: 0; }
.catalog-fact dt { font-weight: 700; color: var(--text); flex: none; }
.catalog-fact dt::after { content: "："; }
.catalog-fact dd { color: var(--muted); min-width: 0; }
/* 条件の補足（20）：部分稼働の案件の稼働の隣に「（稼働日数・時間は柔軟に相談可能）」。値と同じ行・少し小さく */
.fact-note { font-size: 12px; color: var(--muted); margin-left: 2px; white-space: normal; }
.catalog-tags { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 6px; }
.catalog-tags li { font-size: 12px; font-weight: 600; color: var(--text); background: var(--bg-soft); border: 1px solid var(--line); border-radius: 6px; padding: 2px 9px; line-height: 1.6; }
.catalog-card-side { display: flex; flex-direction: column; justify-content: flex-end; gap: 12px; border-left: 1px solid var(--line); padding-left: 24px; min-width: 0; }
.catalog-checked { font-size: 12px; color: var(--muted); }
.catalog-card-side .btn { width: 100%; }
.catalog-card.is-compact { grid-template-columns: minmax(0, 1fr) 170px; padding: 20px 24px; }
@media (max-width: 719px) {
  .catalog-card, .catalog-card.is-compact { grid-template-columns: minmax(0, 1fr); padding: 18px 18px 20px; gap: 14px; }
  .catalog-card-title { font-size: 17px; }
  .catalog-card-side {
    border-left: 0; padding-left: 0; border-top: 1px solid var(--line); padding-top: 14px;
    display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 14px;
  }
  .catalog-checked { grid-column: 1 / -1; }
  .catalog-card-side .btn { width: auto; }
}
@media (max-width: 479px) {
  .catalog-card-side { grid-template-columns: minmax(0, 1fr); }
  .catalog-card-side .btn { width: 100%; }
}

/* 一覧：フィルタ（PC 左 280px・sticky）＋ 結果 */
.catalog { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 32px; align-items: start; }
.catalog-filters { position: sticky; top: calc(var(--header-h) + 16px); max-height: calc(100vh - var(--header-h) - 32px); overflow: auto; }
.catalog-form { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 20px 20px 22px; }
.catalog-form-title { font-size: 16px; font-weight: 800; color: var(--navy); padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.filter-field { margin-top: 14px; }
.filter-label { display: block; font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.input-sm, .select-sm { min-height: 44px; padding: 8px 12px; font-size: 15px; }
.filter-check { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; cursor: pointer; }
.filter-check input { width: 18px; height: 18px; margin: 4px 0 0; flex: none; accent-color: var(--purple); }
.filter-actions { margin-top: 18px; display: flex; flex-direction: column; gap: 10px; }
.filter-actions .btn { width: 100%; }
.catalog-main { min-width: 0; }
.catalog-count { font-size: 14px; color: var(--muted); scroll-margin-top: calc(var(--header-h) + 16px); }
.catalog-count strong { font-size: 20px; color: var(--navy); margin: 0 2px; }
.catalog-count:focus, .catalog-count:focus-visible { outline: none; box-shadow: none; }
.catalog-note { margin-top: 10px; font-size: 13px; color: #7A4B00; }
.catalog-list { margin-top: 14px; display: flex; flex-direction: column; gap: 16px; }
.catalog-empty { margin-top: 14px; background: var(--white); border: 1px dashed rgba(7, 17, 38, 0.3); border-radius: var(--radius-lg); padding: 36px 20px; text-align: center; color: var(--muted); }
.catalog-empty p + p { margin-top: 10px; }
@media (max-width: 899px) {
  .catalog { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .catalog-filters { position: static; max-height: none; overflow: visible; }
  .filter-actions { flex-direction: row; flex-wrap: wrap; }
  .filter-actions .btn { width: auto; flex: 1 1 160px; }
}

/* 詳細：募集条件パネル → 本文、右にサイド CTA（sticky） */
.detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; align-items: start; }
.detail-main { min-width: 0; }
.fact-panel { background: var(--white); border: 1px solid var(--line); border-top: 4px solid var(--purple); border-radius: var(--radius-lg); padding: 22px 26px 24px; }
.fact-title { font-size: 15px; font-weight: 800; color: var(--muted); letter-spacing: 0.04em; }
.fact-grid { margin-top: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
.fact-row { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 8px; font-size: 15px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.fact-row dt { font-weight: 700; color: var(--text); }
.fact-row dd { color: var(--muted); }
.fact-panel .catalog-tags { margin-top: 16px; }
.detail-prose { margin-top: 36px; }
.detail-prose h2:first-child { margin-top: 0; }
.detail-side { position: sticky; top: calc(var(--header-h) + 16px); min-width: 0; }
.side-card { background: var(--white); border: 1px solid var(--line); border-top: 4px solid var(--purple); border-radius: var(--radius-lg); padding: 22px 24px 24px; }
.side-card-head { display: flex; flex-wrap: wrap; gap: 8px; }
.side-line { margin-top: 6px; font-size: 14px; color: var(--muted); }
.side-card-head + .side-line { margin-top: 12px; }
.side-card .btn { width: 100%; margin-top: 18px; }
.side-note { margin-top: 12px; font-size: 13px; color: var(--muted); }
@media (max-width: 999px) {
  .detail-layout { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .detail-side { position: static; }
  .fact-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
}
@media (max-width: 479px) {
  .fact-panel, .side-card { padding: 18px 18px 20px; }
  .fact-row { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}

/* ---------- Flow (vertical, numbered) ---------- */
.flow-list { max-width: 820px; margin: 0 auto; display: flex; flex-direction: column; }
.flow-item { display: grid; grid-template-columns: 56px minmax(0, 220px) minmax(0, 1fr); gap: 20px; align-items: center; padding: 18px 0; border-top: 1px solid var(--line); }
.flow-item:last-child { border-bottom: 1px solid var(--line); }
.flow-no { width: 56px; height: 56px; border-radius: 50%; background: var(--navy); color: var(--white); font-weight: 800; display: flex; align-items: center; justify-content: center; font-size: 15px; letter-spacing: 0.05em; }
.flow-title { font-size: 18px; font-weight: 800; display: flex; align-items: center; gap: 10px; color: var(--navy); }
.flow-title .icon { width: 18px; height: 18px; color: var(--purple); flex: none; }
.flow-desc { font-size: 15px; color: var(--muted); }
@media (max-width: 719px) {
  .flow-item { grid-template-columns: 44px minmax(0, 1fr); gap: 8px 14px; }
  .flow-no { width: 44px; height: 44px; font-size: 13px; }
  .flow-desc { grid-column: 2; }
}

/* ---------- FAQ ---------- */
.faq-list { max-width: 880px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.faq-item { border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); }
.faq-item summary {
  list-style: none; cursor: pointer; display: grid; grid-template-columns: 36px minmax(0, 1fr) 24px; gap: 14px; align-items: center;
  padding: 16px 18px; font-weight: 700; font-size: 16px; min-height: 56px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:focus-visible { box-shadow: var(--focus); border-radius: var(--radius); }
.faq-q { width: 36px; height: 36px; border-radius: 50%; background: var(--purple-light); color: var(--purple); display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 16px; }
.faq-chevron { width: 24px; height: 24px; color: var(--purple); transition: transform .2s; }
.faq-item[open] .faq-chevron { transform: rotate(180deg); }
.faq-answer { padding: 0 18px 18px 68px; color: var(--muted); font-size: 15px; }
@media (max-width: 719px) { .faq-answer { padding-left: 18px; } }

/* ---------- Entry（20）：濃紺＋hero-background.png（暗幕）に白文字。メールのみの登録フォーム。
   見出し → 説明1文 → フォーム（メール入力・同意チェック・「登録する」）→ 常時表示のプレビュー注記 → 結果欄（送信されていません）。
   入力欄は白地、エラーは明るい赤（暗地で読めるように）、同意は初期未選択。氏名・立場・希望内容・案件選択・自由記述は置かない ---------- */
.entry {
  position: relative; color: var(--white); text-align: center;
  background:
    linear-gradient(180deg, rgba(7, 17, 38, 0.86), rgba(7, 17, 38, 0.92)),
    url("assets/hero-background.png") center / cover no-repeat,
    var(--navy);
  padding: 88px 0;
  scroll-margin-top: calc(var(--header-h) + 8px);
}
.entry-inner { max-width: 680px; margin: 0 auto; }
.entry h2 { font-size: clamp(24px, 3.4vw, 36px); font-weight: 800; line-height: 1.4; color: var(--white); }
.entry h2:focus, .entry h2:focus-visible { outline: none; box-shadow: none; }
.entry-lead { margin-top: 14px; color: rgba(255, 255, 255, 0.86); }
.entry-form { margin: 32px auto 0; max-width: 520px; text-align: left; }
.entry-field + .entry-field { margin-top: 18px; }
.entry-label { display: block; font-weight: 700; margin-bottom: 8px; color: var(--white); }
.entry .req { color: #FFB4AB; }
/* .entry を付けて後出の .input 系の規則（Form controls）より優先させる */
.entry .entry-input { border-color: rgba(255, 255, 255, 0.55); }
.entry .entry-input:focus-visible { box-shadow: var(--focus-dark); border-color: var(--cyan); }
.entry .entry-input[aria-invalid="true"] { border-color: #FFB4AB; background: #FFF4F2; }
.entry-consent { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; cursor: pointer; color: var(--white); }
.entry-consent input { width: 20px; height: 20px; margin: 4px 0 0; flex: none; accent-color: var(--purple); }
.entry-consent input:focus-visible { box-shadow: var(--focus-dark); border-radius: 4px; }
.entry-consent a { color: var(--white); text-decoration: underline; text-underline-offset: 0.2em; }
.entry-consent a:hover { color: var(--cyan); }
.entry .error-msg { color: #FFB4AB; }
.entry-actions { margin-top: 24px; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.entry-actions .btn-lg { min-width: 300px; max-width: 100%; }
/* 受付未接続の注記（常時）：情報アイコン＋1文。送信ボタンの直下に置き、見落とされないようにする */
.entry-preview-note {
  margin: 16px auto 0; display: flex; gap: 8px; align-items: flex-start; justify-content: center;
  font-size: 14px; font-weight: 700; color: #FFD98A; text-align: left;
}
.entry-preview-note .icon { flex: none; width: 20px; height: 20px; margin-top: 2px; }
/* 検証通過後の「送信されていません」：赤枠の明示。成功表示は存在しない */
.entry-result { display: none; margin-top: 16px; }
.entry-result.is-visible {
  display: flex; gap: 12px; align-items: flex-start; text-align: left;
  border: 2px solid #F5B5AE; border-radius: var(--radius); background: var(--danger-bg); color: var(--danger); padding: 14px 16px; font-size: 14px;
}
/* （28）API 接続後：通常時の注記は警告色にしない。送信成功は緑枠 */
.entry-preview-note.is-plain { color: inherit; font-weight: 500; opacity: 0.85; }
.entry-result.is-success { border-color: #86E0B0; background: #ECFDF3; color: #05603A; }
.entry-result .icon { flex: none; width: 22px; height: 22px; margin-top: 2px; }
.entry-result strong { display: block; margin-bottom: 2px; }
@media (max-width: 719px) {
  .entry { padding: 56px 0; }
  .entry-actions .btn-lg { width: 100%; min-width: 0; }
}

/* ---------- Sub pages（14）：濃紺グラデーションの帯 ---------- */
.page-hero { background: linear-gradient(135deg, var(--navy), var(--navy-2)); color: var(--white); padding: 56px 0 48px; }
.page-hero .tag { margin-bottom: 12px; }
.page-title { font-size: clamp(26px, 3.6vw, 40px); line-height: 1.35; font-weight: 800; }
.page-title:focus { outline: none; }
.page-lead { margin-top: 12px; color: rgba(255, 255, 255, 0.86); max-width: 760px; }
.breadcrumb { font-size: 13px; color: rgba(255, 255, 255, 0.78); margin-bottom: 14px; display: flex; flex-wrap: wrap; gap: 4px 8px; }
.breadcrumb a { color: var(--white); }
.breadcrumb li + li::before { content: "/"; margin-right: 8px; color: rgba(255, 255, 255, 0.5); }
.breadcrumb li { display: flex; }
.prose { max-width: 800px; }
.prose h2 { font-size: clamp(20px, 2.4vw, 26px); font-weight: 800; line-height: 1.45; margin: 40px 0 14px; padding-left: 14px; border-left: 4px solid var(--purple); color: var(--navy); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-size: 18px; font-weight: 800; margin: 24px 0 8px; }
.prose p { margin-top: 10px; }
.prose ul, .prose ol { margin: 10px 0 0 1.4em; list-style: disc; }
.prose ol { list-style: decimal; }
.prose li { margin-top: 4px; }
.notice {
  border-radius: var(--radius); padding: 16px 18px; border: 1px solid #F2D387; background: #FFF8E6; color: #5A3B00; font-size: 14px;
  display: flex; gap: 12px; align-items: flex-start;
}
.notice .icon { flex: none; width: 22px; height: 22px; margin-top: 2px; }
.notice-info { border-color: var(--line); background: var(--ok-bg); color: var(--navy); }
.notice-danger { border-color: #F5B5AE; background: var(--danger-bg); color: var(--danger); }
.notice strong { display: block; }
.notice + .notice { margin-top: 12px; }
.info-table { display: grid; grid-template-columns: 200px minmax(0, 1fr); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; max-width: 800px; }
.info-table dt, .info-table dd { padding: 12px 16px; border-top: 1px solid var(--line); font-size: 15px; }
.info-table dt:first-of-type, .info-table dd:first-of-type { border-top: 0; }
.info-table dt { background: var(--purple-light); font-weight: 700; }
.pending { color: #8A5A00; font-weight: 700; }
@media (max-width: 719px) {
  .info-table { grid-template-columns: minmax(0, 1fr); }
  .info-table dt { border-top: 1px solid var(--line); padding-bottom: 4px; }
  .info-table dd { border-top: 0; padding-top: 4px; }
  .info-table dt:first-of-type { border-top: 0; }
}
.page-actions { margin-top: 32px; display: flex; flex-wrap: wrap; gap: 14px; }
/* notice の直後に来る見出しの間隔 */
.prose .notice + h2 { margin-top: 32px; }
/* （31）プライバシーポリシー */
.privacy h2 { font-size: clamp(18px, 2vw, 21px); margin-top: 32px; }
.privacy p, .privacy li { line-height: 1.9; }
.privacy-contact { margin-top: 16px; }
.privacy-contact small { font-size: 13px; color: var(--muted, #5B6478); }
.privacy-date { margin-top: 24px; text-align: right; font-size: 14px; }
@media (max-width: 719px) { .page-actions .btn { width: 100%; } }

/* ---------- Form controls（20）：入力欄は entry のメール欄と一覧のフィルタで共用。旧複数ステップフォームの規則は削除 ---------- */
.req { color: var(--danger); font-size: 12px; margin-left: 8px; font-weight: 700; }
.input, .select {
  width: 100%; font: inherit; font-size: 16px; color: var(--text); padding: 12px 14px; border: 1px solid rgba(7, 17, 38, 0.45); border-radius: 8px; background: var(--white);
  min-height: 48px;
}
.input:focus-visible, .select:focus-visible { box-shadow: var(--focus); border-color: var(--purple); }
.input[aria-invalid="true"], .select[aria-invalid="true"] { border-color: var(--danger); background: var(--danger-bg); }
.error-msg { display: none; color: var(--danger); font-size: 14px; font-weight: 700; margin-top: 6px; }
.error-msg.is-visible { display: block; }

/* ---------- Footer（14）：濃紺。白ロゴはそのまま ---------- */
.site-footer { background: var(--navy); color: rgba(255, 255, 255, 0.82); padding: 48px 0 32px; font-size: 14px; }
.footer-inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 24px 40px; }
/* （33）サービスのロゴはヘッダーと同じ組み方（マーク 30px＋ロゴタイプ 21px、大文字の中心をマークにそろえる）。
   運営会社のロゴは一段小さく（20px）して、主役をサービス名にする */
.footer-name { display: flex; align-items: center; gap: 8px; }
.footer-mark { flex: none; display: block; width: auto; height: 30px; }
.footer-wordmark { flex: none; display: block; width: auto; height: 21px; max-width: none; transform: translateY(10%); }
/* 運営会社ロゴ（白文字・透過PNG）。深緑のフッターに比率保持で表示。色変更・切り取りなし */
.footer-operator { margin-top: 14px; font-size: 13px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.footer-operator-label { color: rgba(255, 255, 255, 0.66); }
.footer-logo { width: auto; height: 20px; max-width: 100%; display: block; }
.footer-nav ul { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.footer-nav a { color: rgba(255, 255, 255, 0.92); text-decoration: none; padding: 6px 0; display: inline-block; }
.footer-nav a:hover { color: var(--white); text-decoration: underline; }
@media (max-width: 719px) { .footer-inner { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Not found ---------- */
.notfound { text-align: center; padding: 96px 0; }
