@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;
}

[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: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(28px, 4vw, 64px) 1fr;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 64px);
  -webkit-box-align: start;
      -ms-flex-align: start;
          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 {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
  }
}
/* mid_4 / 49 : ギャラリー */
[data-theme=choregate] .gallery {
  display: -ms-grid;
  display: grid;
  gap: clamp(12px, 1.5vw, 20px);
}

[data-theme=choregate] .gallery.img1 {
  -ms-grid-columns: 1fr;
  grid-template-columns: 1fr;
}

[data-theme=choregate] .gallery.img2 {
  -ms-grid-columns: (1fr)[2];
  grid-template-columns: repeat(2, 1fr);
}

[data-theme=choregate] .gallery.img3 {
  -ms-grid-columns: (1fr)[3];
  grid-template-columns: repeat(3, 1fr);
}

[data-theme=choregate] .gallery.img4 {
  -ms-grid-columns: (1fr)[4];
  grid-template-columns: repeat(4, 1fr);
}

[data-theme=choregate] .gallery .gallery_set {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          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: -ms-grid;
  display: grid;
  gap: 16px;
}

/* col1 / col2 / col3 すべて中央寄せ（max-width 内で水平センタリング）*/
[data-theme=choregate] .btn_list ul.col1 {
  -ms-grid-columns: 1fr;
  grid-template-columns: 1fr;
  max-width: 360px;
  margin-left: auto;
  margin-right: auto;
}

[data-theme=choregate] .btn_list ul.col2 {
  -ms-grid-columns: (1fr)[2];
  grid-template-columns: repeat(2, 1fr);
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}

[data-theme=choregate] .btn_list ul.col3 {
  -ms-grid-columns: (1fr)[3];
  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: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: 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;
  -webkit-transition: background 0.3s, color 0.3s;
  transition: background 0.3s, color 0.3s;
  -webkit-box-sizing: border-box;
          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 {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
  }
}
/* mid_36 : 送信ボタン */
[data-theme=choregate] button.btn.red,
[data-theme=choregate] .btn.red {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: 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.1);
}

[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] .scroll_table {
    overflow-x: auto;
  }
  [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;
  }
  .sp_v {
    overflow: hidden;
  }
  .sp_v table tr th {
    border-bottom: none !important;
  }
  .sp_v table tr th,
  .sp_v table tr td {
    display: block;
    width: 100% !important;
  }
}
/* 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: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(24px, 3vw, 48px) 1fr;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(24px, 3vw, 48px);
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: start;
}

[data-theme=choregate] .flex_area.col2 {
  -ms-grid-columns: (1fr)[2];
  grid-template-columns: repeat(2, 1fr);
}

[data-theme=choregate] .flex_area.col3 {
  -ms-grid-columns: (1fr)[3];
  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 {
    -ms-grid-columns: 1fr;
    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: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  gap: clamp(20px, 3vw, 48px);
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
}

[data-theme=choregate] .anchor_link ul.vertical {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: start;
      -ms-flex-align: start;
          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: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          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: -ms-grid;
  display: grid;
  -ms-grid-columns: 220px 24px 1fr;
  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: -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] .faq_mod dl {
  margin: 0;
  padding: 0;
  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] .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: -webkit-box-shadow 0.3s ease, -webkit-transform 0.3s ease;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
  transition: box-shadow 0.3s ease, transform 0.3s ease, -webkit-box-shadow 0.3s ease, -webkit-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: -ms-grid;
  display: grid;
  -ms-grid-rows: auto 0fr;
  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, -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;
  transition: grid-template-rows 0.45s ease, box-shadow 0.3s ease, transform 0.3s ease, -ms-grid-rows 0.45s ease, -webkit-box-shadow 0.3s ease, -webkit-transform 0.3s ease;
}

[data-theme=choregate] .faq_mod .faq_set.is_open {
  -ms-grid-rows: auto 1fr;
  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: -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor)), -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor));
  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: -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor));
  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: -ms-grid;
  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 {
  -ms-grid-columns: (1fr)[2];
  grid-template-columns: repeat(2, 1fr);
}

[data-theme=choregate] .link_list ul.flex_area.col3 {
  -ms-grid-columns: (1fr)[3];
  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, -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;
  transition: background 0.3s ease, color 0.3s ease, padding-left 0.3s ease, box-shadow 0.3s ease, -webkit-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 {
    -ms-grid-columns: 1fr;
    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;
  -o-object-fit: cover;
     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: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          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, -webkit-box-shadow 0.3s ease;
  transition: border-left-width 0.3s ease, box-shadow 0.3s ease;
  transition: border-left-width 0.3s ease, box-shadow 0.3s ease, -webkit-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: -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor)), -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor));
  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, -webkit-transform 0.3s ease;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease, -webkit-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: -webkit-gradient(linear, left top, left bottom, from(currentColor), to(currentColor));
  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: -ms-grid;
  display: grid;
  -ms-grid-rows: auto 0fr;
  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, -webkit-box-shadow 0.3s ease;
  transition: grid-template-rows 0.45s ease, border-left-width 0.3s ease, box-shadow 0.3s ease;
  transition: grid-template-rows 0.45s ease, border-left-width 0.3s ease, box-shadow 0.3s ease, -ms-grid-rows 0.45s ease, -webkit-box-shadow 0.3s ease;
}

[data-theme=choregate] .aco_cont .dl_set.is_open {
  -ms-grid-rows: auto 1fr;
  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: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          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: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          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: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(16px, 2vw, 28px) 1fr clamp(16px, 2vw, 28px) 1fr;
  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 {
    -ms-grid-columns: (1fr)[2];
    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: -ms-grid;
  display: grid;
  -ms-grid-columns: 220px 24px 1fr;
  grid-template-columns: 220px 1fr;
  gap: 24px;
  padding: 18px 0;
  border-bottom: 1px solid var(--pm-border);
  -webkit-box-align: baseline;
      -ms-flex-align: baseline;
          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 {
    -ms-grid-columns: 1fr;
    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%;
  -ms-grid-columns: (minmax(0, 1fr))[3];
  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 {
    -ms-grid-columns: (1fr)[2];
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 640px) {
  [data-theme=choregate] .btn_list ul.col3 {
    -ms-grid-columns: 1fr;
    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;
}

/* =========================================================
   WORKS - 製作実績一覧
   service ページと同一のデザイン言語（#e7e7e7 ベース／
   Plus Jakarta Sans + Noto Sans JP／clamp フルードタイポ）を踏襲。
   グリッド・カード・カテゴリーフィルターを定義する。
   ========================================================= */
/* ---- カテゴリーフィルター（チップ） ---- */
.works_filter {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  gap: 10px;
  border-top: 1px solid rgba(0, 0, 0, 0.18);
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
  padding: clamp(20px, 2vw, 28px) 0;
  margin-bottom: clamp(28px, 3vw, 44px);
}

.works_filter .works_filter_btn {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(12px, 1vw, 14px);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 10px 22px;
  border: 1px solid rgba(0, 0, 0, 0.4);
  border-radius: 999px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  -webkit-transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.works_filter .works_filter_btn:hover {
  border-color: #111;
}

.works_filter .works_filter_btn[aria-pressed=true] {
  background: #111;
  color: #e7e7e7;
  border-color: #111;
}

/* ---- 件数表示 ---- */
.works_count {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: clamp(11px, 0.9vw, 13px);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-bottom: clamp(28px, 3vw, 44px);
}

.works_count b {
  font-weight: 800;
  opacity: 1;
}

/* ---- グリッド ---- */
.works_grid {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 1fr clamp(24px, 2.6vw, 40px) 1fr;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(36px, 4vw, 64px) clamp(24px, 2.6vw, 40px);
}

/* ---- カード ---- */
.works_card {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  gap: clamp(14px, 1.4vw, 20px);
}

.works_card[hidden] {
  display: none;
}

/* カード全体をリンク化（stretched link）。タイトル内の <a> に ::after を被せる */
.works_card_link {
  color: inherit;
  text-decoration: none;
  -webkit-transition: opacity 0.2s ease;
  transition: opacity 0.2s ease;
}

.works_card_link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
}

.works_card:hover .works_card_link {
  opacity: 0.6;
}

/* サムネイル */
.works_card_thumb {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  aspect-ratio: 31/20;
  background: rgba(0, 0, 0, 0.04);
}

/* ---- CSS のみのフェードスライドショー ----
   画像を <div class="works_slide"><img ...></div> で囲み、親 .works_slider に
   枚数クラス is_slides_2 / is_slides_3 / is_slides_4 を付与する。
   1スライド=5秒・クロスフェード=1秒。JS は不要。 */
.works_slider {
  position: absolute;
  inset: 0;
  -webkit-transition: -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition: transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1), -webkit-transform 0.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.works_card:hover .works_slider {
  -webkit-transform: scale(1.04);
  transform: scale(1.04);
}

.works_slide {
  position: absolute;
  inset: 0;
  opacity: 0;
}

.works_slide img {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}

/* 画像が1枚だけのカードはアニメーションせず静止表示 */
.works_slide:only-child {
  opacity: 1;
}

.works_slider.is_slides_2 .works_slide {
  -webkit-animation: works_fade_2 10s infinite;
  animation: works_fade_2 10s infinite;
}

.works_slider.is_slides_2 .works_slide:nth-child(2) {
  -webkit-animation-delay: 5s;
  animation-delay: 5s;
}

.works_slider.is_slides_3 .works_slide {
  -webkit-animation: works_fade_3 15s infinite;
  animation: works_fade_3 15s infinite;
}

.works_slider.is_slides_3 .works_slide:nth-child(2) {
  -webkit-animation-delay: 5s;
  animation-delay: 5s;
}

.works_slider.is_slides_3 .works_slide:nth-child(3) {
  -webkit-animation-delay: 10s;
  animation-delay: 10s;
}

.works_slider.is_slides_4 .works_slide {
  -webkit-animation: works_fade_4 20s infinite;
  animation: works_fade_4 20s infinite;
}

.works_slider.is_slides_4 .works_slide:nth-child(2) {
  -webkit-animation-delay: 5s;
  animation-delay: 5s;
}

.works_slider.is_slides_4 .works_slide:nth-child(3) {
  -webkit-animation-delay: 10s;
  animation-delay: 10s;
}

.works_slider.is_slides_4 .works_slide:nth-child(4) {
  -webkit-animation-delay: 15s;
  animation-delay: 15s;
}

@-webkit-keyframes works_fade_2 {
  0% {
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
  50% {
    opacity: 1;
  }
  60% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
@keyframes works_fade_2 {
  0% {
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
  50% {
    opacity: 1;
  }
  60% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
@-webkit-keyframes works_fade_3 {
  0% {
    opacity: 0;
  }
  6.6667% {
    opacity: 1;
  }
  33.333% {
    opacity: 1;
  }
  40% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
@keyframes works_fade_3 {
  0% {
    opacity: 0;
  }
  6.6667% {
    opacity: 1;
  }
  33.333% {
    opacity: 1;
  }
  40% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
@-webkit-keyframes works_fade_4 {
  0% {
    opacity: 0;
  }
  5% {
    opacity: 1;
  }
  25% {
    opacity: 1;
  }
  30% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
@keyframes works_fade_4 {
  0% {
    opacity: 0;
  }
  5% {
    opacity: 1;
  }
  25% {
    opacity: 1;
  }
  30% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}
/* 動きを減らす設定：移動を伴うズーム演出（ホバー scale）のみ無効化。
   opacity のクロスフェードは移動を伴わないため継続する。 */
@media (prefers-reduced-motion: reduce) {
  .works_slider {
    -webkit-transition: none;
    transition: none;
  }
  .works_card:hover .works_slider {
    -webkit-transform: none;
    transform: none;
  }
}
/* 画像のない実績はダークなプレースホルダー（service_visual と同系） */
.works_card_thumb.is_placeholder {
  background: linear-gradient(135deg, #1f1f1f 0%, #0a0a0a 100%);
  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;
}

.works_card_thumb.is_placeholder::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.06), transparent 50%), radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.04), transparent 60%);
}

.works_card_ph_num {
  position: relative;
  z-index: 1;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 200;
  font-size: clamp(72px, 9vw, 150px);
  color: rgba(255, 255, 255, 0.06);
  line-height: 1;
  letter-spacing: -0.04em;
}

.works_card_ph_label {
  position: absolute;
  top: 20px;
  left: 20px;
  z-index: 1;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.6);
}

/* カテゴリー & 年 */
.works_card_head {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  gap: 12px;
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.works_card_cat {
  opacity: 0.6;
}

.works_card_year {
  opacity: 0.45;
}

/* タイトル */
.works_card_title {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(22px, 2.4vw, 34px);
  line-height: 1.1;
  letter-spacing: -0.01em;
  margin: 0;
}

.works_card_title .ja {
  display: block;
  margin-top: 6px;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 0.06em;
  opacity: 0.7;
}

/* 説明 */
.works_card_desc {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(13px, 1vw, 14.5px);
  line-height: 1.95;
  letter-spacing: 0.04em;
  margin: 0;
}

/* タグ */
.works_card_tags {
  list-style: none;
  margin: 2px 0 0;
  padding: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  gap: 8px;
}

.works_card_tag {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 6px 12px;
  border: 1px solid currentColor;
  border-radius: 999px;
  opacity: 0.7;
}

/* 該当なし表示 */
.works_empty {
  display: none;
  font-family: "Noto Sans JP", sans-serif;
  font-size: 14px;
  letter-spacing: 0.04em;
  opacity: 0.6;
  padding: clamp(40px, 6vw, 80px) 0;
  text-align: center;
}

/* =========================================================
   レスポンシブ
   ========================================================= */
@media (max-width: 900px) {
  .works_grid {
    gap: clamp(28px, 3.4vw, 48px) clamp(18px, 2vw, 28px);
  }
  .works_card_title {
    font-size: clamp(20px, 3vw, 30px);
  }
}
@media (max-width: 640px) {
  .works_filter {
    gap: 8px;
    padding: 18px 0;
    margin-bottom: 24px;
  }
  .works_filter .works_filter_btn {
    font-size: 11px;
    padding: 8px 14px;
    letter-spacing: 0.1em;
  }
  .works_count {
    margin-bottom: 24px;
  }
  .works_grid {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 36px;
  }
  .works_card {
    gap: 12px;
  }
  .works_card_thumb {
    aspect-ratio: 16/10;
  }
  .works_card_ph_label {
    top: 16px;
    left: 16px;
    font-size: 10px;
  }
  .works_card_title {
    font-size: clamp(22px, 6vw, 30px);
  }
  .works_card_title .ja {
    font-size: 12px;
  }
  .works_card_desc {
    font-size: 13.5px;
    line-height: 1.9;
  }
}