@charset "UTF-8";

/*
================================================================
  page_module.css
  CHOREGATE 公式サイト専用 ページモジュール CSS
  - コンテナ CMS フロント出力（mid=1..59）の HTML 構造をカバー
  - <html data-theme="choregate"> または <body data-theme="choregate">
    で適用。テーマ変数 --pm-* を起点に全モジュールへ伝播
  - メディアクエリ：1024px / 900px / 640px（max-width 上書き）
  - モジュール詳細定義は本ファイルが「正」（旧テーマ群は削除済み）
================================================================
*/

/* ============================================================
   choregate（CHOREGATE 公式サイト：チャコール × ライトグレー）
   Figma 02_About / 03_Service / 04_Recruit / 05_Conact / 06_News_Detail
   濃淡モノクロ × Plus Jakarta Sans + Noto Sans JP 体系。
   <html data-theme="choregate"> または <body data-theme="choregate"> で適用。
   モジュール CSS 詳細定義は assets/css/module.css を「正」とし本テーマ
   ブロックへ完全移設（2026-05-08 案B改）。
   ============================================================ */
[data-theme="choregate"] {
  --pm-primary: #0a0a0a;
  --pm-primary-dark: #000000;
  --pm-primary-light: #4a4a4a;
  --pm-accent: #0a0a0a;
  --pm-text: #222222;
  --pm-text-mute: #555555;
  --pm-text-soft: #888888;
  --pm-border: rgba(0, 0, 0, 0.18);
  --pm-bg: #e7e7e7;
  --pm-bg-soft: #f4f4f4;
  --pm-bg-soft2: #ffffff;
  --pm-bg-gray: #fafafa;
  --pm-radius: 4px;
  --pm-radius-pill: 999px;
  --pm-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
  --m-red: #c8102e;
}

/* CHOREGATE：モジュール詳細スタイル（module.css 移設、scope 限定）
   ============================================================ */
[data-theme="choregate"] body,
[data-theme="choregate"] .mod_cont,
[data-theme="choregate"] .editor {
  font-family: "Noto Sans JP", "Plus Jakarta Sans", sans-serif;
  color: var(--pm-text);
  line-height: 2.0;
}
[data-theme="choregate"] .mod_cont {
  margin: 0 0 clamp(40px, 5vw, 72px);
}
[data-theme="choregate"] .mod_cont:last-child  { margin-bottom: 0; }

/* mid_1 : 見出し（CHOREGATE） */
[data-theme="choregate"] h2[id^="anc"],
[data-theme="choregate"] .mv-mod-h2,
[data-theme="choregate"] .mod_cont > h2,
[data-theme="choregate"] .editor > h2 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 800;
  font-size: clamp(28px, 3.4vw, 44px);
  line-height: 1.25;
  margin: clamp(56px, 6vw, 96px) 0 clamp(20px, 2vw, 32px);
  padding: 0 0 18px;
  border: 0;
  border-bottom: 1px solid var(--pm-border);
  background: transparent;
  border-radius: 0;
  letter-spacing: -0.02em;
  color: var(--pm-text);
}
[data-theme="choregate"] h3[id^="anc"],
[data-theme="choregate"] .mv-mod-h3,
[data-theme="choregate"] .mod_cont > h3,
[data-theme="choregate"] .editor > h3 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.4;
  margin: clamp(40px, 4.5vw, 64px) 0 clamp(14px, 1.6vw, 22px);
  padding: 0 0 0 18px;
  border: 0;
  border-left: 4px solid var(--pm-primary);
  letter-spacing: -0.01em;
  color: var(--pm-text);
}
[data-theme="choregate"] h4[id^="anc"],
[data-theme="choregate"] .mv-mod-h4,
[data-theme="choregate"] .mod_cont > h4,
[data-theme="choregate"] .editor > h4 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(18px, 1.8vw, 22px);
  line-height: 1.5;
  margin: clamp(32px, 3.5vw, 48px) 0 clamp(12px, 1.4vw, 18px);
  padding: 0 0 0 14px;
  border: 0;
  position: relative;
  color: var(--pm-text);
}
[data-theme="choregate"] h4[id^="anc"]::before,
[data-theme="choregate"] .mod_cont > h4::before,
[data-theme="choregate"] .editor > h4::before {
  content: "";
  position: absolute;
  left: 0; top: 0.5em;
  width: 6px; height: 6px;
  background: var(--pm-primary);
  border-radius: 50%;
}
[data-theme="choregate"] h5[id^="anc"],
[data-theme="choregate"] .mv-mod-h5,
[data-theme="choregate"] .mod_cont > h5,
[data-theme="choregate"] .editor > h5 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 1.6;
  margin: clamp(24px, 2.8vw, 36px) 0 10px;
  border: 0;
  padding: 0;
  color: var(--pm-text);
}

/* mid_2 / 53 / 54 : エディタ */
[data-theme="choregate"] .editor {
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 2.05;
  letter-spacing: 0.04em;
}
[data-theme="choregate"] .editor p { margin: 0 0 1.4em; }
[data-theme="choregate"] .editor p:last-child { margin-bottom: 0; }
[data-theme="choregate"] .editor a {
  color: var(--pm-text);
  text-decoration: underline;
  text-underline-offset: 4px;
}
[data-theme="choregate"] .editor a:hover { opacity: 0.6; }
[data-theme="choregate"] .editor blockquote {
  margin: 1.5em 0;
  padding: 20px 28px;
  border-left: 3px solid var(--pm-primary);
  background: rgba(0,0,0,0.03);
  font-size: 0.95em;
  color: var(--pm-text-mute);
}

/* mid_24/25 : 背景色枠 — class で背景色を判別 */
[data-theme="choregate"] .bg_cont {
  padding: clamp(24px, 3vw, 40px);
  background: var(--pm-bg-soft2);
  border-radius: var(--pm-radius);
}
[data-theme="choregate"] .bg_cont.gray   { background: #f4f4f4; color: var(--pm-text); }
[data-theme="choregate"] .bg_cont.beige  { background: #f5efe5; color: var(--pm-text); }
[data-theme="choregate"] .bg_cont.cream  { background: #faf6ee; color: var(--pm-text); }
[data-theme="choregate"] .bg_cont.blue   { background: #eaf2fa; color: #1f4d78; }
[data-theme="choregate"] .bg_cont.green  { background: #ecf4ee; color: #1f5a3a; }
[data-theme="choregate"] .bg_cont.red    { background: #fae9eb; color: #8c1421; }
[data-theme="choregate"] .bg_cont.yellow { background: #fbf6dd; color: #6a5c00; }
[data-theme="choregate"] .bg_cont.dark   { background: #0a0a0a; color: #ffffff; }
[data-theme="choregate"] .bg_cont.dark,
[data-theme="choregate"] .bg_cont.dark .editor,
[data-theme="choregate"] .bg_cont.dark .editor p,
[data-theme="choregate"] .bg_cont.dark .editor li,
[data-theme="choregate"] .bg_cont.dark .editor strong,
[data-theme="choregate"] .bg_cont.dark .editor em,
[data-theme="choregate"] .bg_cont.dark .editor h1,
[data-theme="choregate"] .bg_cont.dark .editor h2,
[data-theme="choregate"] .bg_cont.dark .editor h3,
[data-theme="choregate"] .bg_cont.dark .editor h4,
[data-theme="choregate"] .bg_cont.dark .editor h5,
[data-theme="choregate"] .bg_cont.dark .editor h6 { color: #ffffff; }
[data-theme="choregate"] .bg_cont.dark .editor a { color: #ffffff; text-decoration-color: rgba(255,255,255,0.6); }
[data-theme="choregate"] .bg_cont.dark .editor blockquote {
  color: rgba(255,255,255,0.85);
  background: rgba(255,255,255,0.06);
  border-left-color: #ffffff;
}

/* mid_22 : ボーダー枠 — class でボーダー色＋薄い同系色背景を判別
   各 color 別にボーダーと同色系の超低彩度背景を仕込み、ボーダーだけだと
   無機質になる印象を緩和。地色 #e7e7e7 に対して微妙な浮き上がりを与える。 */
[data-theme="choregate"] .border_cont {
  padding: clamp(24px, 3vw, 40px);
  border: 1px solid var(--pm-border);
  border-radius: var(--pm-radius);
  background: rgba(255, 255, 255, 0.4);
}
[data-theme="choregate"] .border_cont.color1 {
  border-color: var(--pm-primary);
  background: rgba(10, 10, 10, 0.03);
}
[data-theme="choregate"] .border_cont.color2 {
  border-color: #1f6feb;
  background: rgba(31, 111, 235, 0.04);
}
[data-theme="choregate"] .border_cont.color3 {
  border-color: var(--m-red);
  background: rgba(200, 16, 46, 0.04);
}
[data-theme="choregate"] .border_cont.color4 {
  border-color: #15803d;
  background: rgba(21, 128, 61, 0.04);
}
[data-theme="choregate"] .border_cont.color5 {
  border-color: #b08400;
  background: rgba(176, 132, 0, 0.05);
}

/* .bg_cont / .border_cont 内包の見出し（h2〜h6）の余白整理
   親側の padding（24-40px）が既にあるため、h タグ通常の上余白
   `clamp(28-56px, 3-6vw, 40-96px)` は過剰。プロデザイナー視点で：
     - first-child（最初の見出し）：margin-top: 0
     - 兄弟要素の後にくる場合：margin-top を控えめ（中間値）に
   下マージンも詰めて、続く本文との視覚距離を最適化。 */
[data-theme="choregate"] .bg_cont h2,
[data-theme="choregate"] .bg_cont h3,
[data-theme="choregate"] .bg_cont h4,
[data-theme="choregate"] .bg_cont h5,
[data-theme="choregate"] .bg_cont h6,
[data-theme="choregate"] .bg_cont .editor h2,
[data-theme="choregate"] .bg_cont .editor h3,
[data-theme="choregate"] .bg_cont .editor h4,
[data-theme="choregate"] .bg_cont .editor h5,
[data-theme="choregate"] .bg_cont .editor h6,
[data-theme="choregate"] .border_cont h2,
[data-theme="choregate"] .border_cont h3,
[data-theme="choregate"] .border_cont h4,
[data-theme="choregate"] .border_cont h5,
[data-theme="choregate"] .border_cont h6,
[data-theme="choregate"] .border_cont .editor h2,
[data-theme="choregate"] .border_cont .editor h3,
[data-theme="choregate"] .border_cont .editor h4,
[data-theme="choregate"] .border_cont .editor h5,
[data-theme="choregate"] .border_cont .editor h6 {
  margin-top: 0;
  margin-bottom: clamp(8px, 1vw, 12px);
}
[data-theme="choregate"] .bg_cont * + h2,
[data-theme="choregate"] .bg_cont * + h3,
[data-theme="choregate"] .bg_cont * + h4,
[data-theme="choregate"] .bg_cont * + h5,
[data-theme="choregate"] .bg_cont * + h6,
[data-theme="choregate"] .bg_cont .editor * + h2,
[data-theme="choregate"] .bg_cont .editor * + h3,
[data-theme="choregate"] .bg_cont .editor * + h4,
[data-theme="choregate"] .bg_cont .editor * + h5,
[data-theme="choregate"] .bg_cont .editor * + h6,
[data-theme="choregate"] .border_cont * + h2,
[data-theme="choregate"] .border_cont * + h3,
[data-theme="choregate"] .border_cont * + h4,
[data-theme="choregate"] .border_cont * + h5,
[data-theme="choregate"] .border_cont * + h6,
[data-theme="choregate"] .border_cont .editor * + h2,
[data-theme="choregate"] .border_cont .editor * + h3,
[data-theme="choregate"] .border_cont .editor * + h4,
[data-theme="choregate"] .border_cont .editor * + h5,
[data-theme="choregate"] .border_cont .editor * + h6 {
  margin-top: clamp(16px, 1.8vw, 22px);
}

/* mid_3 : 画像1枚（横幅100%） */
[data-theme="choregate"] .block {
  margin: clamp(40px, 5vw, 72px) 0;
  text-align: left;
  max-width: 100%;
}
[data-theme="choregate"] .block:first-child { margin-top: 0; }
[data-theme="choregate"] .block picture,
[data-theme="choregate"] .block img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
  border-radius: var(--pm-radius);
  overflow: hidden;
}
[data-theme="choregate"] .block.wide picture,
[data-theme="choregate"] .block.wide img { width: 100%; }
[data-theme="choregate"] .block.small {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}

/* mid_47 : 画像＋テキスト */
[data-theme="choregate"] .img_txt {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 64px);
  align-items: start;
}
[data-theme="choregate"] .img_txt > .img img,
[data-theme="choregate"] .img_txt > .img picture {
  width: 100%;
  border-radius: var(--pm-radius);
}
[data-theme="choregate"] .img_txt .caption,
[data-theme="choregate"] .gallery .caption {
  margin: 10px 0 0;
  padding: 0;
  font-size: 12.5px;
  letter-spacing: 0.04em;
  color: var(--pm-text-soft);
  background: transparent;
}
[data-theme="choregate"] .img_txt .txt h3.hl03 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(20px, 2vw, 26px);
  line-height: 1.4;
  margin: 0 0 14px;
  padding: 0 0 12px;
  border: 0;
  border-bottom: 1px solid var(--pm-border);
}
@media (max-width: 900px) {
  [data-theme="choregate"] .img_txt { grid-template-columns: 1fr; }
}

/* mid_4 / 49 : ギャラリー */
[data-theme="choregate"] .gallery {
  display: grid;
  gap: clamp(12px, 1.5vw, 20px);
}
[data-theme="choregate"] .gallery.img1 { grid-template-columns: 1fr; }
[data-theme="choregate"] .gallery.img2 { grid-template-columns: repeat(2, 1fr); }
[data-theme="choregate"] .gallery.img3 { grid-template-columns: repeat(3, 1fr); }
[data-theme="choregate"] .gallery.img4 { grid-template-columns: repeat(4, 1fr); }
[data-theme="choregate"] .gallery .gallery_set { display: flex; flex-direction: column; }
[data-theme="choregate"] .gallery .img_wrap,
[data-theme="choregate"] .gallery .set_wrap {
  display: block;
  border-radius: var(--pm-radius);
  overflow: hidden;
}
[data-theme="choregate"] .gallery img,
[data-theme="choregate"] .gallery picture { width: 100%; height: auto; display: block; }

/* mid_5 : リンクボタン（重なり解消・gap 確保） */
[data-theme="choregate"] .btn_list ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 16px;
}
/* col1 / col2 / col3 すべて中央寄せ（max-width 内で水平センタリング）*/
[data-theme="choregate"] .btn_list ul.col1 {
  grid-template-columns: 1fr;
  max-width: 360px;
  margin-left: auto;
  margin-right: auto;
}
[data-theme="choregate"] .btn_list ul.col2 {
  grid-template-columns: repeat(2, 1fr);
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
[data-theme="choregate"] .btn_list ul.col3 {
  grid-template-columns: repeat(3, 1fr);
  max-width: 1080px;
  margin-left: auto;
  margin-right: auto;
}
[data-theme="choregate"] .btn_list li {
  list-style: none;
  margin: 0; padding: 0;
}
[data-theme="choregate"] .btn_list li a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  min-height: 60px;
  padding: 16px 36px;
  border: 1px solid var(--pm-primary);
  border-radius: 999px;
  background: transparent;
  color: var(--pm-primary);
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 0.3s, color 0.3s;
  box-sizing: border-box;
}
[data-theme="choregate"] .btn_list li a::after {
  content: "→";
  font-weight: 400;
}
[data-theme="choregate"] .btn_list li a:hover {
  background: var(--pm-primary);
  color: #ffffff;
}
[data-theme="choregate"] .btn_list li a.primary {
  background: var(--pm-primary);
  color: #ffffff;
}
[data-theme="choregate"] .btn_list li a.red {
  border-color: var(--m-red);
  color: var(--m-red);
}
[data-theme="choregate"] .btn_list li a.red:hover {
  background: var(--m-red);
  color: #ffffff;
}
@media (max-width: 640px) {
  [data-theme="choregate"] .btn_list ul.col2,
  [data-theme="choregate"] .btn_list ul.col3 { grid-template-columns: 1fr; }
}

/* mid_36 : 送信ボタン */
[data-theme="choregate"] button.btn.red,
[data-theme="choregate"] .btn.red {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  min-width: 280px;
  height: 64px;
  padding: 0 36px;
  border: 0;
  border-radius: 999px;
  background: var(--pm-primary);
  color: #ffffff;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.18em;
  cursor: pointer;
  text-transform: uppercase;
}

/* mid_6 : リスト */
[data-theme="choregate"] .mod_cont > ul,
[data-theme="choregate"] .mod_cont > ol {
  margin: 0;
  padding: 0;
  list-style: none;
}
[data-theme="choregate"] .mod_cont > ul > li,
[data-theme="choregate"] .mod_cont > ol > li {
  position: relative;
  padding: 12px 0 12px 26px;
  font-size: clamp(14px, 1.05vw, 15.5px);
  line-height: 1.85;
  border-bottom: 1px solid rgba(0,0,0,0.10);
}
[data-theme="choregate"] .mod_cont > ul > li::before {
  content: "";
  position: absolute;
  left: 0; top: 22px;
  width: 14px; height: 1px;
  background: var(--pm-primary);
}
[data-theme="choregate"] .mod_cont > ol { counter-reset: ol_counter; }
[data-theme="choregate"] .mod_cont > ol > li {
  counter-increment: ol_counter;
  padding-left: 36px;
}
[data-theme="choregate"] .mod_cont > ol > li::before {
  content: counter(ol_counter, decimal-leading-zero);
  position: absolute;
  left: 0; top: 12px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.06em;
  color: var(--pm-primary);
  width: auto; height: auto;
  background: transparent;
}

/* mid_7 / 18 : 情報テーブル
   SP（900px 以下）はラッパーで横スクロール可、内部テーブルは min-width で
   レイアウト崩壊を防ぐ。スクロールバーは細めに（Webkit / Firefox 個別指定）。 */
[data-theme="choregate"] .info_table,
[data-theme="choregate"] .scroll_table {
  width: 100%;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.35) transparent;
}
[data-theme="choregate"] .info_table::-webkit-scrollbar,
[data-theme="choregate"] .scroll_table::-webkit-scrollbar {
  height: 8px;
}
[data-theme="choregate"] .info_table::-webkit-scrollbar-thumb,
[data-theme="choregate"] .scroll_table::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.35);
  border-radius: 4px;
}
[data-theme="choregate"] .info_table table,
[data-theme="choregate"] .scroll_table table {
  width: 100%;
  border-collapse: collapse;
  font-size: clamp(13px, 1vw, 14.5px);
  line-height: 1.85;
}
[data-theme="choregate"] .info_table th,
[data-theme="choregate"] .info_table td,
[data-theme="choregate"] .scroll_table th,
[data-theme="choregate"] .scroll_table td {
  padding: clamp(14px, 1.6vw, 22px) 16px;
  border: 1px solid var(--pm-border);
  text-align: left;
  vertical-align: top;
}
[data-theme="choregate"] .info_table thead th,
[data-theme="choregate"] .scroll_table thead th {
  background: var(--pm-primary);
  color: #ffffff;
  font-weight: 700;
}
[data-theme="choregate"] .info_table tbody th,
[data-theme="choregate"] .scroll_table tbody th {
  background: #f4f4f4;
  font-weight: 700;
  width: 220px;
}
@media (max-width: 900px) {
  [data-theme="choregate"] .info_table,
  [data-theme="choregate"] .scroll_table {
    overflow-x: auto;
  }
  [data-theme="choregate"] .info_table table,
  [data-theme="choregate"] .scroll_table table {
    min-width: 720px;
  }
  [data-theme="choregate"] .info_table tbody th,
  [data-theme="choregate"] .scroll_table tbody th {
    width: 160px;
  }
}

/* mid_19 : テーブル（左ヘッダー）
   SP は同じくラッパーで横スクロール可。`.table` 自体がラッパー扱い。 */
[data-theme="choregate"] .mod_cont > .table {
  width: 100%;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.35) transparent;
}
[data-theme="choregate"] .mod_cont > .table::-webkit-scrollbar { height: 8px; }
[data-theme="choregate"] .mod_cont > .table::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.35);
  border-radius: 4px;
}
[data-theme="choregate"] .mod_cont > .table table {
  width: 100%;
  border-collapse: collapse;
  font-size: clamp(13px, 1vw, 14.5px);
}
[data-theme="choregate"] .mod_cont > .table th,
[data-theme="choregate"] .mod_cont > .table td {
  padding: 18px 16px;
  border-bottom: 1px solid var(--pm-border);
  text-align: left;
  vertical-align: top;
}
[data-theme="choregate"] .mod_cont > .table th {
  width: 220px;
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--pm-text-mute);
}
[data-theme="choregate"] .mod_cont > .table tr:first-child th,
[data-theme="choregate"] .mod_cont > .table tr:first-child td {
  border-top: 1px solid var(--pm-border);
}
@media (max-width: 900px) {
  [data-theme="choregate"] .mod_cont > .table { overflow-x: auto; }
  [data-theme="choregate"] .mod_cont > .table table { min-width: 640px; }
  [data-theme="choregate"] .mod_cont > .table th { width: 140px; }
}

/* mid_19 : 旧 CMS の `<div class="table_wrap pc_none">` ラッパーにも同等の
   横スクロールを保証（front_code が出力する形に対応） */
[data-theme="choregate"] .table_wrap {
  width: 100%;
}
@media (max-width: 900px) {
  [data-theme="choregate"] .table_wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  [data-theme="choregate"] .table_wrap table { min-width: 640px; }
}

/* mid_9 : リード文 */
[data-theme="choregate"] .lead {
  padding: clamp(28px, 3vw, 40px) 0;
  border-top: 1px solid var(--pm-border);
  border-bottom: 1px solid var(--pm-border);
  background: transparent;
}
[data-theme="choregate"] .lead p {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(16px, 1.6vw, 22px);
  line-height: 1.95;
  letter-spacing: 0.02em;
  margin: 0;
  color: var(--pm-text);
}
[data-theme="choregate"] .lead p.red   { color: var(--m-red); }
[data-theme="choregate"] .lead p.blue  { color: #2563eb; }
[data-theme="choregate"] .lead p.green { color: #15803d; }

/* mid_10〜13 : flex_area / flex_cont */
[data-theme="choregate"] .flex_area {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(24px, 3vw, 48px);
  align-items: start;
}
[data-theme="choregate"] .flex_area.col2 { grid-template-columns: repeat(2, 1fr); }
[data-theme="choregate"] .flex_area.col3 { grid-template-columns: repeat(3, 1fr); }
[data-theme="choregate"] .flex_cont { min-width: 0; }
@media (max-width: 900px) {
  [data-theme="choregate"] .flex_area,
  [data-theme="choregate"] .flex_area.col2,
  [data-theme="choregate"] .flex_area.col3 { grid-template-columns: 1fr; }
}

/* mid_14 : アンカーナビ */
[data-theme="choregate"] .anchor_link {
  padding: clamp(24px, 2.5vw, 32px) clamp(20px, 2.5vw, 32px);
  border-top: 1px solid var(--pm-border);
  border-bottom: 1px solid var(--pm-border);
}
[data-theme="choregate"] .anchor_link ul {
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: clamp(20px, 3vw, 48px);
  justify-content: center;
}
[data-theme="choregate"] .anchor_link ul.vertical {
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
}
[data-theme="choregate"] .anchor_link li {
  margin: 0; padding: 0; border: 0;
}
[data-theme="choregate"] .anchor_link li::before { display: none; }
[data-theme="choregate"] .anchor_link li a {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: clamp(13px, 1.05vw, 16px);
  letter-spacing: 0.12em;
  color: var(--pm-text);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}
[data-theme="choregate"] .anchor_link li a::before {
  content: "↓";
  font-weight: 400;
  opacity: 0.6;
}

/* mid_16 : 注意リスト */
[data-theme="choregate"] .attention_list {
  padding: clamp(20px, 2.5vw, 28px) clamp(20px, 2.5vw, 32px);
  background: #f7f7f7;
  border-radius: var(--pm-radius);
  border-left: 3px solid var(--pm-text-soft);
}
[data-theme="choregate"] .attention_list ul {
  list-style: none;
  margin: 0; padding: 0;
}
[data-theme="choregate"] .attention_list li {
  position: relative;
  padding: 4px 0 4px 20px;
  margin: 0;
  font-size: 13px;
  line-height: 1.85;
  color: var(--pm-text-mute);
  border: 0;
}
[data-theme="choregate"] .attention_list li::before {
  content: "※";
  position: absolute;
  left: 0; top: 4px;
  color: var(--pm-text-soft);
  font-weight: 700;
  width: auto; height: auto; background: transparent;
}
[data-theme="choregate"] .attention_list li.red,
[data-theme="choregate"] .attention_list li.red::before { color: var(--m-red); }

/* mid_17 : 関連リンク */
[data-theme="choregate"] .relation_link dl {
  margin: 0;
  border-top: 1px solid var(--pm-border);
}
[data-theme="choregate"] .relation_link .link_set {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 24px;
  padding: 18px 0;
  border-bottom: 1px solid var(--pm-border);
}
[data-theme="choregate"] .relation_link dt {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 14px;
  color: var(--pm-text-mute);
}
[data-theme="choregate"] .relation_link dd {
  margin: 0;
  font-size: 14.5px;
}
[data-theme="choregate"] .relation_link dd a {
  color: var(--pm-text);
  text-decoration: underline;
  text-underline-offset: 4px;
  word-break: break-all;
}

/* mid_20 : FAQ — professional designer デザイン
   各 Q&A をカード化、Q/A は塗りつぶし円形バッジ、ホバーで微妙な浮き上がり */
[data-theme="choregate"] .faq_mod {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
[data-theme="choregate"] .faq_mod dl {
  margin: 0;
  padding: 0;
  border: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
[data-theme="choregate"] .faq_mod .faq_set {
  background: #ffffff;
  border: 1px solid var(--pm-border);
  border-radius: var(--pm-radius);
  padding: clamp(24px, 3vw, 36px) clamp(28px, 3.6vw, 44px);
  -webkit-transition: -webkit-box-shadow 0.3s ease, -webkit-transform 0.3s ease;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
[data-theme="choregate"] .faq_mod .faq_set:hover {
  -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
          box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
}
[data-theme="choregate"] .faq_mod dt,
[data-theme="choregate"] .faq_mod dd {
  position: relative;
  padding-left: 56px;
  margin: 0;
  border: 0;
  background: transparent;
}
[data-theme="choregate"] .faq_mod dt {
  font-family: "Noto Sans JP", "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(15px, 1.25vw, 17px);
  line-height: 1.65;
  letter-spacing: 0.02em;
  color: var(--pm-text);
  padding-bottom: 0;
}
[data-theme="choregate"] .faq_mod dt::before {
  content: "Q";
  position: absolute;
  left: 0;
  top: -2px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--pm-primary);
  color: #ffffff;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.02em;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  line-height: 1;
}
[data-theme="choregate"] .faq_mod dd {
  margin-top: clamp(18px, 2vw, 24px);
  padding-top: clamp(18px, 2vw, 24px);
  border-top: 1px dashed rgba(0, 0, 0, 0.12);
  font-size: clamp(13.5px, 1.05vw, 15px);
  line-height: 1.95;
  letter-spacing: 0.02em;
  color: var(--pm-text-mute);
}
[data-theme="choregate"] .faq_mod dd::before {
  content: "A";
  position: absolute;
  left: 0;
  top: clamp(18px, 2vw, 24px);
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--m-red);
  color: #ffffff;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.02em;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  line-height: 1;
}
[data-theme="choregate"] .faq_mod dt span,
[data-theme="choregate"] .faq_mod dd span { display: inline; }
@media (max-width: 640px) {
  [data-theme="choregate"] .faq_mod .faq_set { padding: 22px 20px; }
  [data-theme="choregate"] .faq_mod dt,
  [data-theme="choregate"] .faq_mod dd { padding-left: 44px; }
  [data-theme="choregate"] .faq_mod dt::before,
  [data-theme="choregate"] .faq_mod dd::before {
    width: 30px; height: 30px; font-size: 12px;
  }
}

/* mid_20 : FAQ — クリック開閉対応＋カード全域クリック＋開閉アニメーション
   - .faq_set からカードパディングを撤去し、dt / dd に再配分。
     これによりアコーディオン（.aco_cont）と同様、dt がカード上部全域を占有する。
   - Q バッジ・A バッジ・+/− アイコンの absolute 座標はカード端基準に再計算。
   - 高さアニメーションは grid-template-rows: 0fr → 1fr で実装。
     max-height トランジションよりも堅牢で、実コンテンツ高に自動追従する。
   - 開閉ロジックは /assets/js/common.js（setupAccordion）が担当。 */
[data-theme="choregate"] .faq_mod .faq_set {
  padding: 0;
  display: grid;
  grid-template-rows: auto 0fr;
  -webkit-transition:
    grid-template-rows 0.45s ease,
    -webkit-box-shadow 0.3s ease,
    -webkit-transform 0.3s ease;
  transition:
    grid-template-rows 0.45s ease,
    box-shadow 0.3s ease,
    transform 0.3s ease;
}
[data-theme="choregate"] .faq_mod .faq_set.is_open {
  grid-template-rows: auto 1fr;
}
[data-theme="choregate"] .faq_mod dt {
  cursor: pointer;
  padding: clamp(24px, 3vw, 36px) clamp(56px, 6vw, 72px) clamp(24px, 3vw, 36px) clamp(84px, 9.6vw, 100px);
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-transition: color 0.3s ease;
  transition: color 0.3s ease;
}
[data-theme="choregate"] .faq_mod dt:hover { color: var(--pm-primary); }
/* Q バッジを card-edge 基準に再配置（top はカード上端からテキスト top に揃える） */
[data-theme="choregate"] .faq_mod dt::before {
  left: clamp(28px, 3.6vw, 44px);
  top: clamp(22px, 2.8vw, 34px);
}
/* +/− マークを CSS グラデーションで描画（フォント依存しないピクセル完全中央）
   - 横棒：12px × 2px、中央
   - 縦棒：2px × 12px、中央
   - 重ねて + を構成、open 時は縦棒のみ消して − に切替 */
[data-theme="choregate"] .faq_mod dt::after {
  content: "";
  position: absolute;
  right: clamp(20px, 2.4vw, 28px);
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background-color: var(--pm-bg-soft);
  background-image:
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor);
  background-size: 12px 2px, 2px 12px;
  background-position: center, center;
  background-repeat: no-repeat;
  color: var(--pm-text);
  border: 0;
  -webkit-transition:
    background-color 0.3s ease,
    color 0.3s ease;
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}
[data-theme="choregate"] .faq_mod dt:hover::after {
  background-color: var(--pm-text);
  color: #ffffff;
}
[data-theme="choregate"] .faq_mod .faq_set.is_open dt::after {
  background-color: var(--pm-primary);
  color: #ffffff;
  /* 縦棒を消して横棒のみ残す → − になる */
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 12px 2px;
}
/* A（dd）— grid track が 0fr→1fr で自動拡張、overflow:hidden で潰す。
   padding / margin / border-top-width も is_open で復元してアニメーション展開する */
[data-theme="choregate"] .faq_mod dd {
  display: block;
  padding: 0 clamp(28px, 3.6vw, 44px) 0 clamp(84px, 9.6vw, 100px);
  margin: 0;
  min-height: 0;
  border-top: 0 dashed rgba(0, 0, 0, 0.12);
  overflow: hidden;
  -webkit-transition:
    padding-top 0.35s ease,
    padding-bottom 0.35s ease,
    border-top-width 0.2s ease;
  transition:
    padding-top 0.35s ease,
    padding-bottom 0.35s ease,
    border-top-width 0.2s ease;
}
/* A バッジも card-edge 基準に再配置 */
[data-theme="choregate"] .faq_mod dd::before {
  left: clamp(28px, 3.6vw, 44px);
  top: clamp(18px, 2vw, 24px);
}
[data-theme="choregate"] .faq_mod .faq_set.is_open dd {
  padding-top: clamp(18px, 2vw, 24px);
  padding-bottom: clamp(24px, 3vw, 36px);
  border-top-width: 1px;
}

@media (max-width: 640px) {
  [data-theme="choregate"] .faq_mod .faq_set { padding: 0; }
  [data-theme="choregate"] .faq_mod dt {
    padding: 22px 56px 22px 72px;
  }
  [data-theme="choregate"] .faq_mod dd {
    padding-left: 72px;
    padding-right: 20px;
  }
  [data-theme="choregate"] .faq_mod dt::before { left: 20px; top: 22px; }
  [data-theme="choregate"] .faq_mod dd::before { left: 20px; top: 22px; }
  [data-theme="choregate"] .faq_mod dt::after { right: 16px; width: 28px; height: 28px; }
  [data-theme="choregate"] .faq_mod .faq_set.is_open dd {
    padding-top: 18px;
    padding-bottom: 22px;
  }
}

/* mid_33 : リンクリスト — designed 版
   - 各 li は白背景で統一、上下罫線でグループ化
   - 左端 3px primary ライン（常時表示）でリンクであることを明示
   - 左端ドット → ホバーで横棒に伸びる 3 段階アニメ
   - ホバーで color プライマリ＋下線、padding-left スライド */
[data-theme="choregate"] .link_list ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  background: transparent;
  border-top: 1px solid var(--pm-border);
  border-bottom: 1px solid var(--pm-border);
  border-radius: 0;
  overflow: visible;
}
[data-theme="choregate"] .link_list ul.flex_area.col2 { grid-template-columns: repeat(2, 1fr); }
[data-theme="choregate"] .link_list ul.flex_area.col3 { grid-template-columns: repeat(3, 1fr); }
[data-theme="choregate"] .link_list li {
  position: relative;
  margin: 0;
  padding: 0;
  background: #ffffff;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
[data-theme="choregate"] .link_list li::before { display: none; }
/* 列セパレータ：col2 / col3 */
[data-theme="choregate"] .link_list ul.flex_area.col2 li:nth-child(2n) {
  border-left: 1px solid rgba(0, 0, 0, 0.08);
}
[data-theme="choregate"] .link_list ul.flex_area.col3 li:not(:nth-child(3n + 1)) {
  border-left: 1px solid rgba(0, 0, 0, 0.08);
}
/* 最終行の border-bottom を消して ul の border-bottom と二重化させない */
[data-theme="choregate"] .link_list ul:not(.flex_area) li:last-child,
[data-theme="choregate"] .link_list ul.flex_area.col2 li:nth-last-child(-n + 2):nth-child(2n + 1),
[data-theme="choregate"] .link_list ul.flex_area.col2 li:nth-last-child(-n + 2):nth-child(2n),
[data-theme="choregate"] .link_list ul.flex_area.col3 li:nth-last-child(-n + 3):nth-child(3n + 1),
[data-theme="choregate"] .link_list ul.flex_area.col3 li:nth-last-child(-n + 3):nth-child(3n + 2),
[data-theme="choregate"] .link_list ul.flex_area.col3 li:nth-last-child(-n + 3):nth-child(3n) {
  border-bottom: 0;
}
[data-theme="choregate"] .link_list li a {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 16px;
  padding: clamp(18px, 2vw, 24px) clamp(20px, 2.2vw, 28px) clamp(18px, 2vw, 24px) clamp(36px, 3.4vw, 44px);
  font-family: "Noto Sans JP", "Plus Jakarta Sans", sans-serif;
  font-weight: 500;
  font-size: clamp(14px, 1.05vw, 15.5px);
  letter-spacing: 0.02em;
  color: var(--pm-text);
  text-decoration: none;
  background: transparent;
  /* 左端 3px primary ライン（常時表示） */
  -webkit-box-shadow: inset 3px 0 0 var(--pm-primary);
          box-shadow: inset 3px 0 0 var(--pm-primary);
  -webkit-transition:
    background 0.3s ease,
    color 0.3s ease,
    padding-left 0.3s ease,
    -webkit-box-shadow 0.3s ease;
  transition:
    background 0.3s ease,
    color 0.3s ease,
    padding-left 0.3s ease,
    box-shadow 0.3s ease;
}
[data-theme="choregate"] .link_list li a::before {
  content: "";
  position: absolute;
  left: clamp(20px, 2vw, 24px);
  top: 50%;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--pm-text-soft);
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  -webkit-transition:
    width 0.3s ease,
    height 0.3s ease,
    background 0.3s ease,
    border-radius 0.3s ease;
  transition:
    width 0.3s ease,
    height 0.3s ease,
    background 0.3s ease,
    border-radius 0.3s ease;
}
[data-theme="choregate"] .link_list li a::after { content: none; display: none; }
[data-theme="choregate"] .link_list li a:hover {
  background: rgba(0, 0, 0, 0.03);
  color: var(--pm-primary);
  padding-left: clamp(48px, 4.4vw, 56px);
  text-decoration: underline;
  text-underline-offset: 4px;
  /* ホバー時はラインを太く */
  -webkit-box-shadow: inset 5px 0 0 var(--pm-primary);
          box-shadow: inset 5px 0 0 var(--pm-primary);
}
[data-theme="choregate"] .link_list li a:hover::before {
  width: 18px;
  height: 2px;
  border-radius: 1px;
  background: var(--pm-primary);
}
/* SP（640px 以下）: col2 / col3 は 1 列に折り返し */
@media (max-width: 640px) {
  [data-theme="choregate"] .link_list ul.flex_area.col2,
  [data-theme="choregate"] .link_list ul.flex_area.col3 {
    grid-template-columns: 1fr;
  }
  [data-theme="choregate"] .link_list ul.flex_area li {
    border-left: 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  }
  [data-theme="choregate"] .link_list ul.flex_area li:last-child {
    border-bottom: 0;
  }
}

/* mid_34 : YouTube 埋め込み動画 */
[data-theme="choregate"] .mod_movie {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  background: #000;
  border-radius: var(--pm-radius);
  overflow: hidden;
}
[data-theme="choregate"] .mod_movie iframe {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
  object-fit: cover;
}

/* mid_41 : 装飾見出し（hl0X）
   `.mod_cont > h2/h3/h4/h5` 系のベース見出しと specificity が同等になるよう
   element + class の compound selector で指定（h2.hl01 のように）。
   こうすると specificity が (0,2,1) になり、ベース h5 の (0,2,1) に対して
   ソース順で優先される（hl0X が後段定義のため hl0X が勝つ）。 */
[data-theme="choregate"] h2.hl01,
[data-theme="choregate"] h2.hl02,
[data-theme="choregate"] h3.hl03,
[data-theme="choregate"] h4.hl04,
[data-theme="choregate"] h5.hl05,
[data-theme="choregate"] h5.hl06,
[data-theme="choregate"] h5.hl07,
[data-theme="choregate"] h5.hl08,
[data-theme="choregate"] h5.hl09,
[data-theme="choregate"] .hl01,
[data-theme="choregate"] .hl02,
[data-theme="choregate"] .hl03,
[data-theme="choregate"] .hl04,
[data-theme="choregate"] .hl05,
[data-theme="choregate"] .hl06,
[data-theme="choregate"] .hl07,
[data-theme="choregate"] .hl08,
[data-theme="choregate"] .hl09 {
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  margin: clamp(28px, 3vw, 40px) 0 clamp(14px, 1.6vw, 20px);
  font-weight: 800;
  line-height: 1.4;
  letter-spacing: -0.01em;
  color: var(--pm-text);
  border: 0;
}
[data-theme="choregate"] h2.hl01,
[data-theme="choregate"] .hl01 {
  text-align: center;
  font-size: clamp(28px, 3.4vw, 44px);
  padding: 0 0 18px;
  border-bottom: 2px solid var(--pm-primary);
  background: transparent;
}
[data-theme="choregate"] h2.hl01 .label,
[data-theme="choregate"] .hl01 .label {
  display: block;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: var(--pm-text-soft);
  margin-bottom: 10px;
  text-transform: uppercase;
}
[data-theme="choregate"] h2.hl02,
[data-theme="choregate"] .hl02 {
  font-size: clamp(22px, 2.4vw, 30px);
  padding: 14px 20px;
  background: var(--pm-primary);
  color: #ffffff;
  border-radius: var(--pm-radius);
}
[data-theme="choregate"] h3.hl03,
[data-theme="choregate"] .hl03 {
  font-size: clamp(20px, 2vw, 26px);
  padding: 4px 0 12px 16px;
  border-left: 4px solid var(--pm-primary);
  border-bottom: 1px solid var(--pm-border);
  background: transparent;
}
[data-theme="choregate"] h4.hl04,
[data-theme="choregate"] .hl04 {
  font-size: clamp(18px, 1.7vw, 22px);
  display: inline-flex;
  align-items: baseline;
  gap: 14px;
  padding: 0;
  background: transparent;
}
[data-theme="choregate"] h4.hl04::before,
[data-theme="choregate"] .hl04::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--pm-primary);
}
/* HL05：グレー帯見出し — element+class で specificity を確実に勝たせる。
   左にプライマリカラーの太いバーを添えて視覚的にも帯らしさを強化。 */
[data-theme="choregate"] h5.hl05,
[data-theme="choregate"] .hl05 {
  font-size: clamp(16px, 1.4vw, 19px);
  font-weight: 700;
  padding: 12px 18px 12px 22px;
  margin: clamp(28px, 3vw, 40px) 0 clamp(14px, 1.6vw, 20px);
  background: #ececec;
  border-radius: var(--pm-radius);
  border-left: 4px solid var(--pm-primary);
  color: var(--pm-text);
  line-height: 1.5;
  display: block;
}
[data-theme="choregate"] h5.hl06,
[data-theme="choregate"] .hl06 {
  font-size: clamp(15px, 1.3vw, 17px);
  color: var(--pm-text-mute);
  font-weight: 700;
  padding: 0;
  background: transparent;
}
[data-theme="choregate"] h5.hl06 small,
[data-theme="choregate"] .hl06 small {
  display: block;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  opacity: 0.7;
  margin-top: 4px;
  text-transform: uppercase;
}

/* mid_42 : 区切り線 */
[data-theme="choregate"] .mod_line {
  margin: clamp(48px, 5vw, 80px) auto;
  height: 1px;
  background: var(--pm-border);
}

/* mid_46 : アコーディオン — professional designer デザイン
   各 dl_set をカード化、左ボーダーアクセントが open / hover で発色、
   右側 +/- アイコンは円形バッジ、open 時に primary 色で塗り */
[data-theme="choregate"] .aco_cont {
  border: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 12px;
}
[data-theme="choregate"] .aco_cont dl {
  margin: 0;
  border: 0;
  padding: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 12px;
}
[data-theme="choregate"] .aco_cont .dl_set {
  background: #ffffff;
  border: 1px solid var(--pm-border);
  /* 左罫線は最初から primary 色で常時表示 */
  border-left: 3px solid var(--pm-primary);
  border-radius: var(--pm-radius);
  overflow: hidden;
  -webkit-transition: border-left-width 0.3s ease, -webkit-box-shadow 0.3s ease;
  transition: border-left-width 0.3s ease, box-shadow 0.3s ease;
}
[data-theme="choregate"] .aco_cont .dl_set:hover {
  /* ホバーでラインを太く（3px → 5px）＋ shadow */
  border-left-width: 5px;
  -webkit-box-shadow: 0 4px 18px rgba(0, 0, 0, 0.05);
          box-shadow: 0 4px 18px rgba(0, 0, 0, 0.05);
}
[data-theme="choregate"] .aco_cont .dl_set.is_open {
  /* open 時もラインを太化＋ shadow を強化 */
  border-left-width: 5px;
  -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
          box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
}
[data-theme="choregate"] .aco_cont dt {
  position: relative;
  padding: clamp(20px, 2.4vw, 28px) clamp(64px, 6.4vw, 76px) clamp(20px, 2.4vw, 28px) clamp(20px, 2.4vw, 28px);
  margin: 0;
  font-family: "Noto Sans JP", "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(15px, 1.25vw, 17px);
  letter-spacing: 0.02em;
  line-height: 1.6;
  color: var(--pm-text);
  background: transparent;
  border: 0;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -webkit-transition: color 0.3s ease;
  transition: color 0.3s ease;
}
[data-theme="choregate"] .aco_cont dt:hover { color: var(--pm-primary); }
[data-theme="choregate"] .aco_cont dt::before { content: none; display: none; }
/* +/− マークを CSS グラデーションで描画（フォント依存しないピクセル完全中央）
   - 横棒：12px × 2px、中央
   - 縦棒：2px × 12px、中央
   - 重ねて + を構成、open 時は縦棒のみ消して − に切替 */
[data-theme="choregate"] .aco_cont dt::after {
  content: "";
  position: absolute;
  right: clamp(16px, 1.8vw, 22px);
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background-color: var(--pm-bg-soft);
  background-image:
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor);
  background-size: 12px 2px, 2px 12px;
  background-position: center, center;
  background-repeat: no-repeat;
  color: var(--pm-text);
  border: 0;
  -webkit-transition:
    background-color 0.3s ease,
    color 0.3s ease,
    -webkit-transform 0.3s ease;
  transition:
    background-color 0.3s ease,
    color 0.3s ease,
    transform 0.3s ease;
}
[data-theme="choregate"] .aco_cont dt:hover::after {
  background-color: var(--pm-text);
  color: #ffffff;
}
[data-theme="choregate"] .aco_cont .dl_set.is_open dt::after {
  background-color: var(--pm-primary);
  color: #ffffff;
  border-color: var(--pm-primary);
  /* 縦棒を消して横棒のみ残す → − になる */
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 12px 2px;
}
[data-theme="choregate"] .aco_cont .dl_set {
  /* 高さアニメーションは grid-template-rows: auto 0fr → auto 1fr で実装 */
  display: grid;
  grid-template-rows: auto 0fr;
  -webkit-transition:
    grid-template-rows 0.45s ease,
    border-left-width 0.3s ease,
    -webkit-box-shadow 0.3s ease;
  transition:
    grid-template-rows 0.45s ease,
    border-left-width 0.3s ease,
    box-shadow 0.3s ease;
}
[data-theme="choregate"] .aco_cont .dl_set.is_open {
  grid-template-rows: auto 1fr;
}
[data-theme="choregate"] .aco_cont dd {
  position: relative;
  margin: 0;
  /* 通常時は上下メトリクスを 0、overflow:hidden で潰す */
  padding: 0 clamp(20px, 2.4vw, 28px) 0 clamp(20px, 2.4vw, 28px);
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(13.5px, 1.05vw, 15px);
  line-height: 1.95;
  letter-spacing: 0.02em;
  color: var(--pm-text-mute);
  background: transparent;
  border-top: 0 dashed rgba(0, 0, 0, 0.1);
  display: block;
  min-height: 0;
  overflow: hidden;
  -webkit-transition:
    padding-top 0.35s ease,
    padding-bottom 0.35s ease,
    margin-top 0.35s ease,
    border-top-width 0.2s ease;
  transition:
    padding-top 0.35s ease,
    padding-bottom 0.35s ease,
    margin-top 0.35s ease,
    border-top-width 0.2s ease;
}
[data-theme="choregate"] .aco_cont dd::before { content: none; display: none; }
[data-theme="choregate"] .aco_cont .dl_set.is_open dd {
  padding-top: clamp(4px, 0.6vw, 8px);
  padding-bottom: clamp(20px, 2.4vw, 28px);
  margin-top: -2px;
  border-top-width: 1px;
}

/* mid_55 : Google マップ */
[data-theme="choregate"] .map_wrap {
  width: 100%;
  aspect-ratio: 16/8;
  border-radius: var(--pm-radius);
  overflow: hidden;
  background: #e8ebef;
}
[data-theme="choregate"] .map_wrap iframe {
  width: 100%; height: 100%; border: 0; display: block;
}

/* mid_57 / 27 / 59 : home title 共通 */
[data-theme="choregate"] .home_title {
  display: flex;
  align-items: baseline;
  gap: 18px;
  margin-bottom: clamp(28px, 3vw, 40px);
}
[data-theme="choregate"] .home_title .sub_title {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--pm-text-soft);
  text-transform: uppercase;
  margin: 0;
}
[data-theme="choregate"] .home_title h2 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(28px, 3.4vw, 44px);
  letter-spacing: -0.02em;
  margin: 0;
  border: 0;
  padding: 0;
  text-transform: uppercase;
  background: transparent;
}
[data-theme="choregate"] .link_btn {
  text-align: right;
  margin-top: clamp(20px, 2vw, 28px);
}
[data-theme="choregate"] .link_btn a {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 16px 36px;
  border: 1px solid var(--pm-primary);
  border-radius: 999px;
  font-family: "Plus Jakarta Sans", "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.12em;
  color: var(--pm-primary);
  text-transform: uppercase;
  text-decoration: none;
  background: transparent;
}
[data-theme="choregate"] .link_btn a::after { content: "→"; }
[data-theme="choregate"] .link_btn a:hover { background: var(--pm-primary); color: #ffffff; }

/* mid_58 / 59 : 特集リスト */
[data-theme="choregate"] .mod_special_list {
  list-style: none;
  margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2vw, 28px);
}
[data-theme="choregate"] .mod_special_list li {
  background: #ffffff;
  border-radius: var(--pm-radius);
  overflow: hidden;
  padding: 0;
  border: 0;
}
[data-theme="choregate"] .mod_special_list li::before { display: none; }
@media (max-width: 900px) {
  [data-theme="choregate"] .mod_special_list { grid-template-columns: repeat(2, 1fr); }
}

/* ========================================================
   余白・崩れ対策（防御的セレクタ）
   - mod_cont 直下 ul/ol マーカー（mid_6）が他モジュールの内部 ul/ol
     （faq_mod / relation_link / aco_cont / link_list / anchor_link）に
     誤当たりするのを抑止
   - リード文（mid_9）の <p> に外部 .editor 余白が乗らないよう正規化
   - 関連リンク（mid_17）の dl/dt/dd の余白／borderリセット
   ======================================================== */

/* mid_9 リード：内部 p のマージン・周囲余白を正規化 */
[data-theme="choregate"] .lead { margin: 0; }
[data-theme="choregate"] .lead p {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
[data-theme="choregate"] .lead p::before { display: none; content: none; }

/* mid_17 関連リンク：dl/dt/dd 正規化＋SP 縦積み */
[data-theme="choregate"] .relation_link { margin: 0; }
[data-theme="choregate"] .relation_link dl,
[data-theme="choregate"] .relation_link dt,
[data-theme="choregate"] .relation_link dd { margin: 0; padding: 0; }
[data-theme="choregate"] .relation_link dl { border-top: 1px solid var(--pm-border); }
[data-theme="choregate"] .relation_link .link_set {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 24px;
  padding: 18px 0;
  border-bottom: 1px solid var(--pm-border);
  align-items: baseline;
}
[data-theme="choregate"] .relation_link dt::before { content: none; display: none; }
/* SP（640px 以下）：縦積み（dt 上、dd 下）にして折返し対応 */
@media (max-width: 640px) {
  [data-theme="choregate"] .relation_link .link_set {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 16px 0;
  }
  [data-theme="choregate"] .relation_link dt {
    font-size: 12.5px;
    color: var(--pm-text-mute);
    letter-spacing: 0.06em;
  }
  [data-theme="choregate"] .relation_link dd {
    font-size: 14px;
  }
  [data-theme="choregate"] .relation_link dd a {
    word-break: break-all;
    overflow-wrap: anywhere;
  }
}

/* mid_20 FAQ：以前 mid_6 リスト破壊対策の防御的セレクタを置いていた箇所。
   redesign 後はメインブロック側で完結したため空化。 */

/* mid_46 アコーディオン：以前 mid_6 リスト破壊対策の防御的セレクタを置いて
   いた箇所。redesign 後はメインブロック側で完結したため空化。 */

/* mid_14 アンカーナビ／mid_33 リンクリスト／FAQ 内部 ul/ol が
   mid_6 のリストマーカー（横線・連番）を継承しないように上書き */
[data-theme="choregate"] .anchor_link ul,
[data-theme="choregate"] .anchor_link ol,
[data-theme="choregate"] .link_list ul,
[data-theme="choregate"] .link_list ol,
[data-theme="choregate"] .faq_mod ul,
[data-theme="choregate"] .faq_mod ol,
[data-theme="choregate"] .aco_cont ul,
[data-theme="choregate"] .aco_cont ol,
[data-theme="choregate"] .relation_link ul,
[data-theme="choregate"] .relation_link ol,
[data-theme="choregate"] .attention_list ul,
[data-theme="choregate"] .attention_list ol,
[data-theme="choregate"] .btn_list ul,
[data-theme="choregate"] .btn_list ol {
  border: 0;
}
[data-theme="choregate"] .anchor_link li,
[data-theme="choregate"] .link_list li,
[data-theme="choregate"] .faq_mod li,
[data-theme="choregate"] .aco_cont li,
[data-theme="choregate"] .relation_link li,
[data-theme="choregate"] .attention_list li,
[data-theme="choregate"] .btn_list li {
  border-bottom: 0;
}
[data-theme="choregate"] .anchor_link li::before,
[data-theme="choregate"] .link_list li::before,
[data-theme="choregate"] .faq_mod li::before,
[data-theme="choregate"] .aco_cont li::before,
[data-theme="choregate"] .relation_link li::before,
[data-theme="choregate"] .btn_list li::before {
  content: none;
  display: none;
  background: transparent;
  width: auto; height: auto;
  position: static;
}

/* mid_5 リンクボタン：col3 の場合の余裕確保（重なり防止） */
[data-theme="choregate"] .btn_list ul.col3 {
  max-width: 100%;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
[data-theme="choregate"] .btn_list li a { white-space: nowrap; }
@media (max-width: 900px) {
  [data-theme="choregate"] .btn_list ul.col3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  [data-theme="choregate"] .btn_list ul.col3 { grid-template-columns: 1fr; }
}

/* mid_53 / 54 / 24 / 22 : bg_cont / border_cont の下余白を確保
   .mod_cont:last-child { margin-bottom: 0 } を打ち消す（上余白は付けない） */
[data-theme="choregate"] .mod_cont:has(> .bg_cont),
[data-theme="choregate"] .mod_cont:has(> .border_cont) {
  margin-bottom: clamp(40px, 5vw, 72px);
}
/* :has() 未対応ブラウザ向けフォールバック：mod_cont 直下 .bg_cont/.border_cont
   を持つコンテナ自体に最低限の下余白を保証（上余白は付けない） */
[data-theme="choregate"] .bg_cont,
[data-theme="choregate"] .border_cont {
  margin: 0 0 clamp(40px, 5vw, 72px);
}
[data-theme="choregate"] .mod_cont > .bg_cont,
[data-theme="choregate"] .mod_cont > .border_cont {
  margin: 0;
}

/* ============================================================
   ページモジュール 下余白ユーティリティ
   CMS のページモジュール末尾「下余白」セレクトで付与される
   .mb{N}em クラス（N は em 単位の文字数）を margin-bottom に反映。
   値は cms/package/inc_array.php $arrModEM と一致（0em / 1em〜10em）。
   ============================================================ */
.mb0em  { margin-bottom: 0      !important; }
.mb05   { margin-bottom: 0.5em  !important; }
.mb1em  { margin-bottom: 1em    !important; }
.mb2em  { margin-bottom: 2em    !important; }
.mb3em  { margin-bottom: 3em    !important; }
.mb4em  { margin-bottom: 4em    !important; }
.mb5em  { margin-bottom: 5em    !important; }
.mb6em  { margin-bottom: 6em    !important; }
.mb7em  { margin-bottom: 7em    !important; }
.mb8em  { margin-bottom: 8em    !important; }
.mb9em  { margin-bottom: 9em    !important; }
.mb10em { margin-bottom: 10em   !important; }
