@charset "UTF-8";
@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block");
/* Material Symbols / Icons（page_module.css 内で使用するアイコンフォント） */
@import url("https://fonts.googleapis.com/icon?family=Material+Icons+Outlined&display=block");
/*
================================================================
  ページモジュール CSS（Container 製品サイト専用）
  - ctn_m_page_module（mid=1..59）の page_module_front_code が出力する
    全モジュールの HTML 構造をカバー
  - テーマ：Container グリーン（#16a34a）固定（単一テーマサイト）
  - メディアクエリ：1024px / 900px / 640px
================================================================
*/
/* ============== カラー・基本設定（CSS変数） ============== */
:root {
  --pm-primary:       #16a34a;
  --pm-primary-dark:  #052e1a;
  --pm-primary-light: #4ade80;
  --pm-accent:        #16a34a;
  --pm-text:          #14271d;
  --pm-text-mute:     #566b5e;
  --pm-text-soft:     #8ca39a;
  --pm-border:        #d1fae5;
  --pm-bg:            #ffffff;
  --pm-bg-soft:       #f0fdf4;
  --pm-bg-soft2:      #f6fff9;
  --pm-bg-gray:       #f6fff9;
  --pm-radius:        4px;
  --pm-radius-pill:   999px;
  --pm-shadow:        0 2px 8px rgba(0, 0, 0, 0.06);
}
/* ============== Material Symbols Outlined アイコン基底定義 ==============
   Google Fonts 由来の class 定義が他 CSS（共通フォント設定等）に打ち消される
   ことがあるため、確実なアイコン描画のため最優先で再定義。
   ============================================================ */
.material-symbols-outlined, .material-icons, .material-icons-outlined {
  font-family: "Material Symbols Outlined", "Material Icons Outlined", "Material Icons" !important;
  font-weight: normal;
  font-style: normal;
  font-size: 1em;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: "liga";
  -moz-font-feature-settings: "liga";
  font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* ============== 共通ユーティリティ・見出し（mid=1 専用ルール） ==============
     - [id^="anc"] スクロールマージン
     - .mb0〜.mb6 マージン utility
     - .pc_none / .sp_none レスポンシブ表示制御
     - mid=1 見出し（.mv-mod-h2 / .mv-mod-h3 / .mv-mod-h4 / .mv-mod-h5）専用スタイル
     - div + h*（先のブロック直後の見出し上余白）
   ============================================================ */
.mb0 {
  margin-bottom: 0 !important;
}
.mb1 {
  margin-bottom: 1em !important;
}
.mb2 {
  margin-bottom: 2em !important;
}
.mb3 {
  margin-bottom: 3em !important;
}
.mb4 {
  margin-bottom: 4em !important;
}
.mb5 {
  margin-bottom: 5em !important;
}
.mb6 {
  margin-bottom: 6em !important;
}
.mb3em {
  margin-bottom: 3em !important;
}
.mb5em {
  margin-bottom: 5em !important;
}
@media only screen and (min-width: 901px) {
  .pc_none {
    display: none !important;
  }
}
@media only screen and (max-width: 900px) {
  .sp_none {
    display: none !important;
  }
}
/* ============== mid=1 見出し ==============
   クラスベース（.mv-mod-h2 / .mv-mod-h3 / ...）で見出しを描画する。
   ============================================================ */
div + .mv-mod-h2, div + .mv-mod-h3, div + .mv-mod-h4, div + .mv-mod-h5 {
  margin-top: 2em;
}
@media only screen and (max-width: 900px) {
  div + .mv-mod-h2, div + .mv-mod-h3, div + .mv-mod-h4, div + .mv-mod-h5 {
    margin-top: 1.5em;
  }
}
/* H2：左アクセントボーダー＋背景帯 */
.mv-mod-h2 {
  font-size: 21px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  padding: 10px 0 10px 16px;
  margin: 0 0 0.8em;
  line-height: 1.5;
  border-left: 5px solid var(--mv-accent, var(--pm-primary));
  background: var(--mv-h2-bg, var(--mv-accent-bg));
  border-radius: 0 var(--mv-radius-sm, 6px) var(--mv-radius-sm, 6px) 0;
  letter-spacing: var(--mv-letter-spacing, 0.005em);
  scroll-margin-top: 80px;
}
.mv-mod-h2::before {
  content: none;
}
/* H3：下線アクセント */
.mv-mod-h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  padding: 4px 0 6px 4px;
  margin: 0 0 0.8em;
  line-height: 1.5;
  border-bottom: 2px solid var(--mv-accent-border, var(--pm-border));
  scroll-margin-top: 80px;
}
.mv-mod-h3::before {
  content: none;
}
/* H4 / H5：シンプル */
.mv-mod-h4 {
  font-size: 16px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  margin: 0 0 0.7em;
  line-height: 1.5;
  padding-bottom: 0.4em;
  border-bottom: 1px solid var(--mv-border, var(--pm-border));
}
.mv-mod-h5 {
  font-size: 15px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  margin: 0 0 0.6em;
  line-height: 1.5;
}
/* ==========================================================================
   ページモジュール manual-view 仕様レイアウト
   --mv-* トークンは下記 :root エイリアスで --pm-* 系へ橋渡し。
   ========================================================================== */
:root {
  /* mv-* alias → pm-* */
  --mv-bg:           var(--pm-bg);
  --mv-bg-2:         var(--pm-bg-soft2);
  --mv-surface:      var(--pm-bg);
  --mv-surface-alt:  var(--pm-bg-soft);
  --mv-surface-soft: var(--pm-bg-soft2);
  --mv-text-strong:  var(--pm-text);
  --mv-text:         var(--pm-text);
  --mv-text-sub:     var(--pm-text-mute);
  --mv-text-muted:   var(--pm-text-soft);
  --mv-border:       var(--pm-border);
  --mv-border-soft:  var(--pm-bg-soft);
  --mv-accent:       var(--pm-primary);
  --mv-accent-light: var(--pm-primary-light);
  --mv-accent-dark:  var(--pm-primary-dark);
  --mv-accent-bg:    color-mix(in srgb, var(--pm-primary) 12%, transparent);
  --mv-accent-border: color-mix(in srgb, var(--pm-primary) 32%, transparent);
  --mv-accent-text:  var(--pm-primary-dark);
  --mv-info:         #3b82f6;
  --mv-info-bg:      rgba(59, 130, 246, 0.10);
  --mv-info-border:  rgba(59, 130, 246, 0.28);
  --mv-cat-manual-bg: rgba(59, 130, 246, 0.10);
  --mv-cat-manual-text: #1d4ed8;
  --mv-cat-manual-border: rgba(59, 130, 246, 0.32);
  --mv-cat-notice-bg: rgba(168, 85, 247, 0.10);
  --mv-cat-notice-text: #7e22ce;
  --mv-cat-notice-border: rgba(168, 85, 247, 0.32);
  --mv-radius-sm: 6px;
  --mv-radius-md: 8px;
  --mv-radius-lg: 12px;
  --mv-radius-pill: 9999px;
  --mv-shadow-card: var(--pm-shadow);
  --mv-font-body-line: 1.95;
  --mv-h2-bg: var(--mv-accent-bg);
}
/* ==========================================================================
   10. ページモジュール front_code 互換スタイル
   ========================================================================== */
/* ---- 共通ラッパー：mod_cont（全モジュールに共通する外側ブロック） ---- */
.mod_cont, [class*="mod_cont"]:not([class*="mv-mod-"]) {
  margin: 0;
  scroll-margin-top: 80px;
}
.mod_cont + .mod_cont, .mod_cont + [class*="mod_cont"], [class*="mod_cont"] + .mod_cont, [class*="mod_cont"] + [class*="mod_cont"] {
  margin-top: 1.6em;
}
/* ---- 02 / 53 / 54 / 47 : リッチエディタ（.editor）出力 ---- */
.editor {
  line-height: 2;
}
.editor p {
  margin: 0 0 1.3em;
}
.editor p:last-child {
  margin-bottom: 0;
}
.editor strong {
  color: var(--mv-text-strong, var(--pm-text));
  font-weight: 700;
}
.editor em {
  font-style: italic;
}
.editor u {
  text-decoration: underline;
}
.editor a {
  color: var(--mv-accent, var(--pm-primary));
  text-decoration: underline;
  text-underline-offset: 2px;
}
.editor a:hover {
  color: var(--mv-accent-dark, var(--pm-primary-dark));
}
.editor h1, .editor h2 {
  font-size: 21px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  padding: 10px 0 10px 16px;
  margin: 2.4em 0 1em;
  line-height: 1.5;
  border-left: 5px solid var(--mv-accent, var(--pm-primary));
  background: var(--mv-h2-bg, var(--mv-accent-bg));
  border-radius: 0 var(--mv-radius-sm, 6px) var(--mv-radius-sm, 6px) 0;
  letter-spacing: var(--mv-letter-spacing, 0.005em);
}
.editor h1:first-child, .editor h2:first-child {
  margin-top: 0;
}
.editor h1::before, .editor h2::before {
  content: none;
}
.editor h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  padding: 4px 0 6px 4px;
  margin: 2em 0 0.8em;
  line-height: 1.5;
  border-bottom: 2px solid var(--mv-accent-border, var(--pm-border));
}
.editor h3::before {
  content: none;
}
.editor h4 {
  font-size: 16px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  margin: 1.8em 0 0.7em;
  line-height: 1.5;
  padding-bottom: 0.4em;
  border-bottom: 1px solid var(--mv-border, var(--pm-border));
}
.editor h5, .editor h6 {
  font-size: 15px;
  font-weight: 700;
  color: var(--mv-text-strong, var(--pm-text));
  margin: 1.6em 0 0.6em;
  line-height: 1.5;
}
.editor ul {
  list-style: none;
  padding: 0;
  margin: 0 0 1.4em;
}
.editor ol {
  list-style: decimal;
  padding-left: 1.6em;
  margin: 0 0 1.4em;
}
.editor ul li {
  position: relative;
  padding-left: 1.2em;
}
.editor ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--mv-accent, var(--pm-primary));
  -webkit-flex-shrink: 0;
  -ms-flex-negative: 0;
  flex-shrink: 0;
}
.editor li {
  margin-bottom: 0.5em;
  line-height: 1.85;
}
.editor li:last-child {
  margin-bottom: 0;
}
.editor img {
  max-width: 100%;
  height: auto;
  border-radius: var(--mv-radius-sm);
}
.editor blockquote {
  margin: 1em 0;
  padding: 12px 16px;
  background: var(--mv-surface-alt);
  border-left: 4px solid var(--mv-accent);
  border-radius: 0 var(--mv-radius-sm) var(--mv-radius-sm) 0;
  color: var(--mv-text-sub);
}
.editor table {
  width: 100%;
  border-collapse: collapse;
  margin: 1em 0;
  border: 1px solid var(--mv-border);
}
.editor th, .editor td {
  padding: 8px 12px;
  border: 1px solid var(--mv-border-soft);
  text-align: left;
}
.editor th {
  background: var(--mv-surface-alt);
  font-weight: 600;
}
/* ---- 09 : .lead（リード文ラッパー） ---- */
.lead {
  background: var(--mv-surface-alt);
  border-left: 4px solid var(--mv-accent);
  border-radius: 0 var(--mv-radius-md) var(--mv-radius-md) 0;
  padding: 18px 20px;
}
.lead p {
  margin: 0;
  font-size: 16px;
  line-height: 1.95;
  color: var(--mv-text-sub);
}
.lead p.red {
  color: #c0392b;
}
.lead p.blue {
  color: #2563eb;
}
.lead p.green {
  color: #15803d;
}
.lead p.gray {
  color: var(--mv-text-sub);
}
/* ---- 03 : .block（画像1枚） ---- */
.block {
  margin: 0;
  text-align: center;
}
.block picture {
  display: inline-block;
  max-width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
}
.block img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  border-radius: var(--mv-radius-md);
  border: 1px solid var(--mv-border);
}
.block.wide {
  max-width: 100%;
}
.block.small {
  max-width: 60%;
  margin: 0 auto;
}
/* ---- 04 / 49 : .gallery（画像／動画ギャラリー） ---- */
.gallery {
  display: grid;
  gap: 16px;
}
.gallery.img1 {
  grid-template-columns: 1fr;
}
.gallery.img2 {
  grid-template-columns: repeat(2, 1fr);
}
.gallery.img3 {
  grid-template-columns: repeat(3, 1fr);
}
.gallery.img4 {
  grid-template-columns: repeat(4, 1fr);
}
.gallery.img5 {
  grid-template-columns: repeat(5, 1fr);
}
.gallery .gallery_set {
  margin: 0;
}
.gallery .img_wrap {
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  background: var(--mv-surface-alt);
}
.gallery .set_wrap {
  display: block;
  transition: opacity 0.15s;
}
.gallery .set_wrap:hover {
  opacity: 0.85;
}
.gallery img, .gallery picture {
  width: 100%;
  height: auto;
  display: block;
}
.gallery .caption {
  padding: 8px 10px;
  font-size: 12.5px;
  color: var(--mv-text-muted);
  margin: 0;
}
.gallery.movie .movie_wrap {
  aspect-ratio: 1.7777777778;
  background: #000;
}
.gallery.movie video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 600px) {
  .gallery.sp_col1 {
    grid-template-columns: 1fr;
  }
  .gallery.sp_col2 {
    grid-template-columns: repeat(2, 1fr);
  }
  .gallery.none {
    grid-template-columns: 1fr;
  }
}
/* ---- 05 : .btn_list（リンクボタン） ---- */
.btn_list {
  margin: 1em 0;
}
.btn_list ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 10px 12px;
  justify-content: center;
}
.btn_list ul.col2 li {
  flex: 1 1 calc(50% - 12px);
  min-width: 200px;
  box-sizing: border-box;
}
.btn_list ul.col3 li {
  flex: 1 1 calc(33.333% - 12px);
  min-width: 180px;
  box-sizing: border-box;
}
.btn_list li a, .btn_list li > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  min-height: 44px;
  padding: 10px 22px;
  background: var(--mv-surface);
  color: var(--mv-text);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-pill);
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  transition: all 0.18s;
  text-decoration: none;
}
.btn_list li a:hover {
  background: var(--mv-accent);
  color: #fff;
  border-color: var(--mv-accent);
  transform: translateY(-1px);
}
.btn_list li a.primary {
  background: var(--mv-accent);
  color: #fff;
  border-color: var(--mv-accent);
}
.btn_list li a.primary:hover {
  background: var(--mv-accent-dark);
  border-color: var(--mv-accent-dark);
}
.btn_list li a.red {
  background: var(--mv-accent);
  color: #fff;
  border-color: var(--mv-accent);
}
.btn_list li a.red:hover {
  background: var(--mv-accent-dark);
  border-color: var(--mv-accent-dark);
}
.btn_list li a.outline {
  background: transparent;
  color: var(--mv-accent);
  border-color: var(--mv-accent);
}
.btn_list li a.outline:hover {
  background: var(--mv-accent);
  color: #fff;
}
.btn_list li a.arrow::after {
  content: "→";
  margin-left: 8px;
  transition: transform 0.18s;
}
.btn_list li a.arrow:hover::after {
  transform: translateX(3px);
}
/* ---- 06 : リスト（ul / ol 直出力） ---- */
/* mod_cont 直下の ul / ol：list-style 系を完全リセット */
.mod_cont > ul, .mod_cont > ol, [class*="mod_cont"] > ul, [class*="mod_cont"] > ol {
  list-style: none !important;
  margin: 0 0 0.4em !important;
  padding: 0 !important;
  box-sizing: border-box;
  max-width: 100%;
}
.mod_cont > ol, [class*="mod_cont"] > ol {
  counter-reset: mv-list;
}
.mod_cont > ul > li::before, .mod_cont > ol > li::before, [class*="mod_cont"] > ul > li::before, [class*="mod_cont"] > ol > li::before {
  background: transparent;
}
.mod_cont > ul > li, .mod_cont > ol > li, [class*="mod_cont"] > ul > li, [class*="mod_cont"] > ol > li {
  position: relative;
  padding: 0 0 0 1.8em !important;
  margin: 0 0 0.5em 0;
  line-height: 1.85;
  list-style: none;
  box-sizing: border-box;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.mod_cont > ol > li, [class*="mod_cont"] > ol > li {
  counter-increment: mv-list;
}
.mod_cont > ol > li::before, [class*="mod_cont"] > ol > li::before {
  content: counter(mv-list) "." !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  width: 1.6em;
  text-align: left;
  color: var(--mv-accent) !important;
  font-weight: 700 !important;
  display: block !important;
  background: transparent !important;
  border-radius: 0 !important;
  height: auto !important;
}
.mod_cont > ul > li::before, [class*="mod_cont"] > ul > li::before {
  content: "" !important;
  position: absolute !important;
  left: 0.55em !important;
  top: 0.78em !important;
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: var(--mv-accent) !important;
  display: block !important;
}
.mod_cont > ul > li a, .mod_cont > ol > li a, [class*="mod_cont"] > ul > li a, [class*="mod_cont"] > ol > li a {
  overflow-wrap: anywhere;
  word-break: break-word;
}
@media (max-width: 600px) {
  .mod_cont > ul > li, .mod_cont > ol > li, [class*="mod_cont"] > ul > li, [class*="mod_cont"] > ol > li {
    padding-left: 1.6em !important;
  }
}
/* ---- 07 / 18 / 19 : テーブル（.info_table / .scroll_table / .table） ---- */
.info_table, .scroll_table, .table {
  width: 100%;
  margin: 1.2em 0;
  border: 1px solid var(--mv-border);
  background: var(--mv-surface);
  font-size: 14px;
}
.scroll_table, .table_wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
@media (max-width: 640px) {
  .table_wrap .info_table, .table_wrap .scroll_table, .table_wrap .table, .table_wrap > table {
    min-width: 560px;
  }
}
.info_table table, .scroll_table table, .table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  margin: 0;
}
.info_table th, .info_table td, .scroll_table th, .scroll_table td, .table th, .table td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--mv-border);
  vertical-align: top;
  text-align: left;
  line-height: 1.7;
}
.info_table th, .scroll_table th, .table th {
  background: var(--mv-surface-alt);
  color: var(--mv-text-strong);
  font-weight: 700;
}
.info_table tbody > tr > th:first-child, .table tbody > tr > th:first-child {
  width: 30%;
}
.info_table tr:last-child td, .info_table tr:last-child th, .table tr:last-child td, .table tr:last-child th {
  border-bottom: none;
}
.info_table tbody tr:hover, .table tbody tr:hover {
  background: var(--mv-surface-soft);
}
@media (max-width: 640px) {
  .info_table tbody > tr > th:first-child, .table tbody > tr > th:first-child {
    width: auto;
  }
}
/* ---- 引用ブロック ---- */
.editor blockquote, .mod_cont blockquote, .post_article_body blockquote {
  margin: 1.2em 0;
  padding: 14px 18px;
  border-left: 4px solid var(--mv-accent, var(--pm-primary));
  background: var(--mv-surface-alt, var(--pm-bg-soft));
  color: var(--mv-text-sub, var(--pm-text-mute));
  font-style: italic;
  border-radius: 0 var(--mv-radius-sm, 4px) var(--mv-radius-sm, 4px) 0;
}
.editor blockquote p, .mod_cont blockquote p, .post_article_body blockquote p {
  margin: 0;
}
.editor blockquote p + p, .mod_cont blockquote p + p, .post_article_body blockquote p + p {
  margin-top: 0.9em;
}
.editor blockquote cite, .mod_cont blockquote cite, .post_article_body blockquote cite {
  display: block;
  margin-top: 8px;
  font-size: 13px;
  font-style: normal;
  color: var(--mv-text-muted, var(--pm-text-soft));
}
.editor blockquote cite::before, .mod_cont blockquote cite::before, .post_article_body blockquote cite::before {
  content: "— ";
}
/* ---- 10-13 : .flex_area / .flex_cont（2カラム） ---- */
.flex_area {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  align-items: start;
}
.flex_cont {
  min-width: 0;
}
.flex_cont.order1 {
  order: 1;
}
.flex_cont.order2 {
  order: 2;
}
@media (max-width: 600px) {
  .flex_area {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}
/* ---- 14 : .anchor_link（アンカーナビ） ---- */
.anchor_link {
  padding: 28px 32px;
  background: var(--mv-surface-alt);
  border: 1px solid var(--mv-accent-border, var(--mv-border));
  border-left: 4px solid var(--mv-accent);
  border-radius: var(--mv-radius-md);
}
.anchor_link_label {
  margin: 0 0 18px;
  font-family: "Lato", "Helvetica Neue", Arial, sans-serif;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: var(--mv-accent);
  line-height: 1.2;
  display: flex;
  align-items: center;
  gap: 10px;
}
.anchor_link_label::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: var(--mv-accent-border, var(--mv-border));
}
.anchor_link ul {
  margin: 0;
  padding-left: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0 28px;
}
.anchor_link ul.vertical {
  flex-direction: column;
}
.anchor_link li {
  margin: 0;
  line-height: 1.7;
  list-style: none;
  flex: 0 0 auto;
}
.anchor_link li::marker {
  content: none;
}
.anchor_link a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  color: var(--mv-text);
  font-weight: 500;
  text-decoration: none;
  transition: color 0.15s, padding-left 0.15s;
}
.anchor_link a::before {
  content: "arrow_downward";
  font-family: "Material Symbols Outlined", "Material Icons Outlined", "Material Icons";
  font-weight: normal;
  font-style: normal;
  font-size: 18px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  direction: ltr;
  font-feature-settings: "liga";
  -webkit-font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
  font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 20;
  color: var(--mv-accent);
  flex-shrink: 0;
  transition: transform 0.15s;
}
.anchor_link a:hover, .anchor_link a:focus-visible {
  color: var(--mv-accent-dark);
  text-decoration: none;
}
.anchor_link a:hover::before, .anchor_link a:focus-visible::before {
  transform: translateY(3px);
}
@media (max-width: 600px) {
  .anchor_link ul {
    flex-direction: column;
    gap: 8px;
  }
}
/* ---- 15 : アンカーターゲット ---- */
[id^="anc"], [id^="sec"], .mv-mod[id], .mod_cont[id], .mv-article {
  scroll-margin-top: 80px;
}
@media only screen and (max-width: 900px) {
  [id^="anc"], [id^="sec"], .mv-mod[id], .mod_cont[id], .mv-article {
    scroll-margin-top: 64px;
  }
}
/* ---- 16 : .attention_list（キャプション用リスト・赤強調可） ---- */
.attention_list ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.attention_list li {
  position: relative;
  padding: 6px 0 6px 22px;
  line-height: 1.85;
}
.attention_list li::before {
  content: "※";
  position: absolute;
  left: 0;
  top: 6px;
  color: var(--mv-text-muted);
}
.attention_list li.red {
  color: #c0392b;
}
.attention_list li.red::before {
  color: #c0392b;
}
/* ---- 17 : .relation_link（関連リンク） ---- */
.relation_link dl {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.relation_link .link_set {
  display: grid;
  grid-template-columns: minmax(120px, 200px) 1fr;
  gap: 0 16px;
  padding: 14px 18px 14px 28px;
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  align-items: baseline;
  position: relative;
  transition: border-color 0.15s, background 0.15s;
}
.relation_link .link_set:hover {
  border-color: var(--mv-accent);
  background: var(--mv-accent-bg);
}
.relation_link dt {
  margin: 0;
  font-weight: 600;
  color: var(--mv-text-strong);
  font-size: 14px;
}
.relation_link dd {
  margin: 0;
  min-width: 0;
}
.relation_link dd a {
  color: var(--mv-accent);
  word-break: break-word;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.relation_link dd a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: var(--mv-radius-md);
}
.relation_link .link_set:hover dd a {
  color: var(--mv-accent-dark);
}
.relation_link dd a:hover {
  color: var(--mv-accent-dark);
}
@media (max-width: 600px) {
  .relation_link .link_set {
    grid-template-columns: 1fr;
    gap: 4px 0;
  }
}
/* ---- 19 : .table（追加バリエーション） ---- */
.table .pc_none {
  display: none;
}
@media (max-width: 600px) {
  .table .pc_none {
    display: block;
  }
}
/* ---- 20 : .faq_mod / .faq_list / .faq_item（FAQ アコーディオン） ---- */
.faq_mod h2 {
  margin: 0 0 16px;
  font-size: 18px;
  font-weight: 700;
  color: var(--mv-text-strong);
}
.faq_list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.faq_item {
  border: 1px solid #d8e8de;
  border-radius: var(--mv-radius-lg);
  overflow: hidden;
  background: var(--mv-surface);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.faq_item.is-open {
  border-color: #bce6cb;
  box-shadow: 0 10px 26px rgba(5, 46, 26, 0.08);
}
.faq_q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  text-align: left;
  background: transparent;
  border: 0;
  padding: 22px 24px;
  font-family: inherit;
  font-weight: 700;
  font-size: 17px;
  color: var(--mv-text-strong);
  cursor: pointer;
  line-height: 1.6;
}
.faq_q_text {
  position: relative;
  padding-left: 32px;
}
.faq_q_text::before {
  content: "Q";
  position: absolute;
  left: 0;
  top: 3px;
  font-family: "Plus Jakarta Sans", "Zen Kaku Gothic New", system-ui, sans-serif;
  font-weight: 800;
  color: var(--mv-accent);
  font-size: 18px;
  line-height: 1;
}
.faq_icon {
  flex: 0 0 auto;
  position: relative;
  width: 22px;
  height: 22px;
}
.faq_icon::before, .faq_icon::after {
  content: "";
  position: absolute;
  background: var(--mv-accent);
  border-radius: 2px;
  transition: transform 0.25s ease, opacity 0.25s ease;
}
.faq_icon::before {
  left: 0;
  top: 10px;
  width: 22px;
  height: 2px;
}
.faq_icon::after {
  left: 10px;
  top: 0;
  width: 2px;
  height: 22px;
}
.faq_q[aria-expanded="true"] .faq_icon::after {
  transform: scaleY(0);
  opacity: 0;
}
.faq_a {
  padding: 0 24px 24px 56px;
}
.faq_a p {
  position: relative;
  padding-left: 32px;
  font-size: 15px;
  line-height: 1.9;
  color: var(--mv-text-sub);
  margin: 0;
}
.faq_a p::before {
  content: "A";
  position: absolute;
  left: -24px;
  top: -1px;
  font-family: "Plus Jakarta Sans", "Zen Kaku Gothic New", system-ui, sans-serif;
  font-weight: 800;
  color: #d97757;
  font-size: 18px;
  line-height: 1;
}
@media (max-width: 1024px) {
  .faq_q {
    padding: 18px 20px;
  }
  .faq_a {
    padding: 0 20px 20px 52px;
  }
}
@media (max-width: 640px) {
  .faq_q {
    padding: 16px 18px;
    font-size: 15px;
  }
  .faq_a {
    padding: 0 18px 18px 50px;
  }
}
/* ---- 21 : .mod_slider（スライドショー） ---- */
.mod_slider .main_slider, .mod_slider .thumb_slider {
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  background: var(--mv-surface-alt);
}
.mod_slider .thumb_slider {
  margin-top: 8px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 6px;
  background: transparent;
}
.mod_slider .item img {
  width: 100%;
  height: auto;
  display: block;
}
/* ---- 22 / 23 : .border_cont（罫線付きコンテンツ） ---- */
.border_cont {
  border: 2px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  padding: 22px 24px;
}
.border_cont.color1 {
  border-color: var(--mv-accent);
}
.border_cont.color2 {
  border-color: var(--mv-info);
}
.border_cont.color3 {
  border-color: #f59e0b;
}
.border_cont.color4 {
  border-color: #ef4444;
}
[class*="border_cont"][class*="color1"] {
  border-color: var(--mv-accent);
}
[class*="border_cont"][class*="color2"] {
  border-color: var(--mv-info);
}
/* ---- 24 / 25 : .bg_cont（背景コンテンツ） ---- */
.bg_cont {
  background: var(--mv-surface-alt);
  border-radius: var(--mv-radius-md);
  padding: 22px 24px;
}
.bg_cont.gray {
  background: var(--mv-surface-alt);
}
.bg_cont.white {
  background: #ffffff;
  border: 1px solid var(--mv-border);
}
.bg_cont.accent {
  background: var(--mv-accent-bg);
  border: 1px solid var(--mv-accent-border);
}
.bg_cont .cont_wrap {
  max-width: 100%;
}
.border_cont > h1:first-child, .border_cont > h2:first-child, .border_cont > h3:first-child, .border_cont > h4:first-child, .border_cont > h5:first-child, .border_cont > h6:first-child, .border_cont > .mv-mod-h2:first-child, .border_cont > .mv-mod-h3:first-child, .border_cont > .mv-mod-h4:first-child, .border_cont > .mv-mod-h5:first-child, .bg_cont > h1:first-child, .bg_cont > h2:first-child, .bg_cont > h3:first-child, .bg_cont > h4:first-child, .bg_cont > h5:first-child, .bg_cont > h6:first-child, .bg_cont > .mv-mod-h2:first-child, .bg_cont > .mv-mod-h3:first-child, .bg_cont > .mv-mod-h4:first-child, .bg_cont > .mv-mod-h5:first-child {
  margin-top: 0;
}
/* ---- 26 / 57 : お知らせ一覧（home_news / __MOD_NEWS_LIST__） ---- */
#home_news {
  background: var(--mv-surface-alt);
  padding: 24px;
  border-radius: var(--mv-radius-md);
}
#home_news .home_title {
  text-align: center;
  margin-bottom: 18px;
}
#home_news .home_title .sub_title {
  color: var(--mv-accent);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.06em;
}
#home_news .home_title h2 {
  font-size: 22px;
  font-weight: 700;
  color: var(--mv-text-strong);
  margin: 4px 0 0;
}
#home_news .link_btn {
  text-align: center;
  margin-top: 16px;
}
#home_news .link_btn a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 24px;
  background: var(--mv-accent);
  color: #fff;
  border-radius: var(--mv-radius-pill);
  font-weight: 600;
  font-size: 13px;
  transition: background 0.18s;
}
#home_news .link_btn a:hover {
  background: var(--mv-accent-dark);
}
/* ---- 27 : イベント一覧（home_event） ---- */
#home_event {
  background: var(--mv-surface-alt);
  padding: 24px;
  border-radius: var(--mv-radius-md);
  position: relative;
}
#home_event .home_title {
  text-align: center;
  margin-bottom: 18px;
}
#home_event .home_title .sub_title {
  color: var(--mv-accent);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.06em;
}
#home_event .home_title h2 {
  font-size: 22px;
  font-weight: 700;
  color: var(--mv-text-strong);
  margin: 4px 0 0;
}
#home_event .link_btn {
  text-align: center;
  margin-top: 16px;
}
#home_event .link_btn a {
  display: inline-flex;
  padding: 10px 24px;
  background: var(--mv-accent);
  color: #fff;
  border-radius: var(--mv-radius-pill);
  font-weight: 600;
  font-size: 13px;
}
#home_event .deco {
  position: absolute;
  right: 8px;
  bottom: 8px;
  opacity: 0.3;
  pointer-events: none;
}
#home_event .deco img {
  max-width: 80px;
  height: auto;
}
/* ---- 28 / 29 / 30 / 31 : .graph_cont（グラフ） ---- */
.graph_cont {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  padding: 22px;
  display: grid;
  grid-template-columns: 1fr 240px;
  gap: 22px;
  align-items: center;
}
.graph_cont.bar_graph, .graph_cont.polyline {
  grid-template-columns: 1fr;
}
.graph_cont .pie, .graph_cont .graph {
  min-width: 0;
}
.graph_cont .scroll_wrap {
  overflow-x: auto;
}
.graph_cont .sp_scroll {
  min-width: 320px;
}
.graph_cont canvas {
  max-width: 100%;
  height: auto;
}
.graph_cont .graph_info h3 {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 700;
  color: var(--mv-text-strong);
}
.graph_cont .graph_info ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
}
.graph_cont .graph_info li {
  display: flex;
  align-items: center;
  gap: 8px;
}
.graph_cont .graph_info .color {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  flex-shrink: 0;
}
@media (max-width: 700px) {
  .graph_cont {
    grid-template-columns: 1fr;
  }
}
/* ---- 32 : .sdgs_icon（SDGs） ---- */
.sdgs_icon ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 8px;
}
.sdgs_icon ul.col5 {
  grid-template-columns: repeat(5, 1fr);
}
.sdgs_icon ul.col6 {
  grid-template-columns: repeat(6, 1fr);
}
.sdgs_icon ul.col7 {
  grid-template-columns: repeat(7, 1fr);
}
.sdgs_icon ul.col8 {
  grid-template-columns: repeat(8, 1fr);
}
.sdgs_icon ul.col9 {
  grid-template-columns: repeat(9, 1fr);
}
.sdgs_icon img {
  width: 100%;
  height: auto;
  display: block;
}
@media (max-width: 700px) {
  .sdgs_icon ul[class*="col"] {
    grid-template-columns: repeat(4, 1fr);
  }
}
/* ---- 33 : .link_list（リンクリスト） ---- */
.link_list ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.link_list ul.flex_area {
  display: grid;
  gap: 10px;
}
.link_list ul.flex_area.col2 {
  grid-template-columns: repeat(2, 1fr);
}
.link_list ul.flex_area.col3 {
  grid-template-columns: repeat(3, 1fr);
}
.link_list li a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  color: var(--mv-text);
  font-weight: 500;
  font-size: 14px;
  transition: all 0.15s;
}
.link_list li a::after {
  content: "›";
  margin-left: auto;
  color: var(--mv-text-muted);
  font-size: 18px;
  line-height: 1;
  transition: transform 0.15s;
}
.link_list li a:hover {
  border-color: var(--mv-accent);
  background: var(--mv-accent-bg);
  color: var(--mv-accent-text);
}
.link_list li a:hover::after {
  transform: translateX(2px);
  color: var(--mv-accent);
}
.link_list li.text a::before, .link_list li.pdf a::before, .link_list li.blank a::before {
  font-family: "Material Symbols Outlined", "Material Icons Outlined", "Material Icons";
  font-weight: normal;
  font-style: normal;
  font-size: 1.15em;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  direction: ltr;
  font-feature-settings: "liga";
  -webkit-font-feature-settings: "liga";
  -webkit-font-smoothing: antialiased;
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
  color: var(--mv-accent, var(--pm-primary));
  flex-shrink: 0;
}
.link_list li.text a::before {
  content: "description";
}
.link_list li.pdf a::before {
  content: "picture_as_pdf";
}
.link_list li.blank a::before {
  content: "open_in_new";
}
@media (max-width: 700px) {
  .link_list ul.flex_area.col2, .link_list ul.flex_area.col3 {
    grid-template-columns: 1fr;
  }
}
/* ---- 34 / 56 : .mod_movie / .mp4_wrap（動画） ---- */
.mod_movie {
  position: relative;
  width: 100%;
  aspect-ratio: 1.7777777778;
  background: #000;
  border-radius: var(--mv-radius-md);
  overflow: hidden;
}
.mod_movie iframe, .mod_movie video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}
.mp4_wrap {
  width: 100%;
  height: 100%;
}
/* ---- 35-40 / 45 : フォーム関連 ---- */
.form_area {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  padding: 22px 24px;
}
.form_set {
  margin: 0;
}
.form_set table {
  width: 100%;
  border-collapse: collapse;
}
.form_set th, .form_set td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--mv-border-soft);
  vertical-align: top;
  text-align: left;
}
.form_set th {
  background: var(--mv-surface-alt);
  font-weight: 600;
  color: var(--mv-text-sub);
  font-size: 13.5px;
  width: 30%;
  min-width: 160px;
}
.form_set tr:last-child th, .form_set tr:last-child td {
  border-bottom: none;
}
.form_set input[type="text"], .form_set input[type="email"], .form_set input[type="file"], .form_set textarea {
  width: 100%;
  padding: 8px 12px;
  font-size: 14px;
  font-family: inherit;
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-sm);
  color: var(--mv-text);
  transition: border-color 0.15s;
}
.form_set input[type="text"]:focus, .form_set input[type="email"]:focus, .form_set textarea:focus {
  outline: none;
  border-color: var(--mv-accent);
  box-shadow: 0 0 0 3px var(--mv-accent-bg);
}
.form_set textarea {
  resize: vertical;
  min-height: 100px;
}
.form_set ul.check_list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}
.form_set ul.check_list li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.form_set ul.check_list label {
  cursor: pointer;
}
.form_set ul.check_list input[type="radio"], .form_set ul.check_list input[type="checkbox"] {
  accent-color: var(--mv-accent);
}
.form_set .required {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  background: var(--mv-accent);
  color: #fff;
  font-size: 10px;
  font-weight: 600;
  border-radius: 3px;
  vertical-align: middle;
}
.file_input .input_set {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.file_input .file_btn {
  display: inline-flex;
  gap: 4px;
}
.file_input .file_btn span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--mv-radius-sm);
  border: 1px solid var(--mv-border);
  background: var(--mv-surface-alt);
  cursor: pointer;
}
.file_input .file_btn .add::before {
  content: "+";
  font-weight: 700;
}
.file_input .file_btn .del::before {
  content: "–";
  font-weight: 700;
}
.agreement {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--mv-border-soft);
}
.agreement_wrap {
  max-height: 200px;
  overflow-y: auto;
  padding: 12px 14px;
  background: var(--mv-surface-alt);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-sm);
  font-size: 13px;
  line-height: 1.7;
}
.agreement_check {
  margin-top: 12px;
  text-align: center;
}
.agreement_check label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
  cursor: pointer;
}
.form_area .btn_list {
  margin-top: 20px;
}
.btn.red {
  background: var(--mv-accent);
  color: #fff;
  border: none;
  padding: 12px 32px;
  font-size: 14px;
  font-weight: 600;
  border-radius: var(--mv-radius-pill);
  cursor: pointer;
  transition: background 0.18s;
}
.btn.red:hover:not(:disabled) {
  background: var(--mv-accent-dark);
}
.btn.red:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
/* ---- 41 : 装飾見出し（hl02 / hl04 / hl09） ---- */
.mod_cont > h2[class*="hl0"], .mod_cont > h3[class*="hl0"], [class*="hl02"], [class*="hl04"], [class*="hl09"] {
  scroll-margin-top: 80px;
}
h2[class*="hl02"], h3[class*="hl02"], h4[class*="hl02"] {
  position: relative;
  padding: 8px 0 8px 18px;
  font-size: 21px;
  font-weight: 700;
  color: var(--mv-text-strong);
  border-left: 5px solid var(--mv-accent);
  background: var(--mv-accent-bg);
  border-radius: 0 var(--mv-radius-sm) var(--mv-radius-sm) 0;
  margin: 0;
}
h2[class*="hl04"], h3[class*="hl04"] {
  text-align: center;
  font-size: 22px;
  font-weight: 700;
  color: var(--mv-text-strong);
  position: relative;
  padding-bottom: 14px;
  margin: 0;
}
h2[class*="hl04"] span, h3[class*="hl04"] span {
  display: inline-block;
  padding: 0 16px;
  background: var(--mv-surface);
  position: relative;
}
h2[class*="hl04"]::before, h3[class*="hl04"]::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 22px;
  height: 1px;
  background: var(--mv-accent-border);
  z-index: 0;
}
h2[class*="hl09"], h3[class*="hl09"] {
  text-align: center;
  font-size: 24px;
  font-weight: 700;
  color: var(--mv-text-strong);
  margin: 0;
}
h2[class*="hl09"] .label, h3[class*="hl09"] .label {
  display: block;
  margin-bottom: 4px;
  color: var(--mv-accent);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
h2[class*="hl09"] small, h3[class*="hl09"] small {
  display: block;
  font-size: inherit;
  font-weight: 700;
}
.hl03 {
  font-size: 18px;
  font-weight: 700;
  color: var(--mv-text-strong);
  border-bottom: 2px solid var(--mv-accent-border);
  padding-bottom: 6px;
  margin: 0 0 12px;
}
/* ---- 42 : .mod_line（区切り線） ---- */
.mod_line {
  height: 1px;
  background: var(--mv-border);
  margin: 1.5em 0;
}
/* ---- 43 / 44 : .modal（モーダル） ---- */
.modal {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.6);
  z-index: 1000;
  align-items: center;
  justify-content: center;
}
.modal.is-open {
  display: flex;
}
.modal_wrap {
  width: min(720px, 90vw);
  max-height: 86vh;
  overflow-y: auto;
  background: var(--mv-surface);
  border-radius: var(--mv-radius-lg);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
}
.modal_content {
  padding: 24px;
}
.modal_close {
  text-align: center;
  cursor: pointer;
}
.modal_close.top {
  padding: 12px 16px 0;
}
.modal_close.btm {
  padding: 12px 16px 20px;
}
.modal_close img {
  width: 32px;
  height: auto;
}
.modal_close p {
  display: inline-block;
  padding: 8px 24px;
  background: var(--mv-text-sub);
  color: #fff;
  border-radius: var(--mv-radius-pill);
  margin: 0;
}
/* ---- 46 : .aco_cont / .dl_set（アコーディオン） ---- */
.aco_cont dl {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.aco_cont .dl_set {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.aco_cont .dl_set.is-open {
  border-color: var(--mv-accent-border);
  box-shadow: 0 1px 6px rgba(15, 23, 42, 0.05);
}
.aco_cont dt {
  margin: 0;
  padding: 14px 44px 14px 18px;
  font-weight: 600;
  color: var(--mv-text-strong);
  background: var(--mv-surface-soft);
  cursor: pointer;
  position: relative;
  user-select: none;
  outline: none;
  transition: background 0.15s;
}
.aco_cont dt:hover, .aco_cont dt:focus-visible {
  background: var(--mv-accent-bg);
}
.aco_cont dt::after {
  content: "+";
  position: absolute;
  right: 18px;
  top: 50%;
  transform: translateY(-50%);
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-weight: 700;
  color: var(--mv-accent);
  transition: transform 0.2s;
}
.aco_cont dt.is-open::after, .aco_cont .dl_set.is-open dt::after {
  content: "−";
}
.aco_cont dd {
  margin: 0;
  padding: 0 18px;
  max-height: 0;
  overflow: hidden;
  border-top: 0 solid var(--mv-border-soft);
  line-height: 1.85;
  color: var(--mv-text);
  transition: max-height 0.25s ease, padding 0.2s ease, border-top-width 0s linear 0.2s;
}
.aco_cont dt.is-open + dd, .aco_cont .dl_set.is-open > dd {
  max-height: 1500px;
  padding: 16px 18px;
  border-top-width: 1px;
  transition: max-height 0.3s ease, padding 0.2s ease, border-top-width 0s linear;
}
/* ---- 47 : .img_txt（画像＋説明文） ---- */
.img_txt {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.img_txt .img {
  min-width: 0;
}
.img_txt .img img {
  width: 100%;
  height: auto;
  border-radius: var(--mv-radius-md);
  border: 1px solid var(--mv-border);
}
.img_txt .img .caption {
  margin: 8px 0 0;
  font-size: 12.5px;
  color: var(--mv-text-muted);
}
.img_txt .txt {
  min-width: 0;
  text-align: left;
}
.img_txt .txt .editor {
  text-align: left;
}
.img_txt.reverse {
  direction: rtl;
}
.img_txt.reverse > * {
  direction: ltr;
}
.img_txt.img_width .img img {
  width: auto;
  max-width: 100%;
}
@media (max-width: 700px) {
  .img_txt {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .img_txt.reverse {
    direction: ltr;
  }
  .img_txt.sp_reverse {
    display: flex;
    flex-direction: column-reverse;
  }
}
/* ---- 51 / 52 : .home_bnr / .home_btm_bnr（バナー） ---- */
#home_bnr, #home_btm_bnr {
  background: var(--mv-surface-alt);
  padding: 20px;
  border-radius: var(--mv-radius-md);
}
#home_bnr .slide_wrap {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
#home_bnr .item {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  overflow: hidden;
}
#home_bnr img, #home_btm_bnr img {
  width: 100%;
  height: auto;
  display: block;
}
#home_btm_bnr ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
#home_btm_bnr li {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-sm);
  overflow: hidden;
}
/* ---- 55 : .map_wrap（GoogleMap） ---- */
.map_wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 1.7777777778;
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  background: var(--mv-surface-alt);
  border: 1px solid var(--mv-border);
}
.map_wrap iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}
/* ---- 58 / 59 : 特集一覧（home_special） ---- */
#home_special {
  background: var(--mv-surface-alt);
  padding: 24px;
  border-radius: var(--mv-radius-md);
  position: relative;
}
#home_special .home_title {
  text-align: center;
  margin-bottom: 18px;
}
#home_special .home_title .sub_title {
  color: var(--mv-accent);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.06em;
}
#home_special .home_title h2 {
  font-size: 22px;
  font-weight: 700;
  color: var(--mv-text-strong);
  margin: 4px 0 0;
}
#home_special .link_btn {
  text-align: center;
  margin-top: 16px;
}
#home_special .link_btn a {
  display: inline-flex;
  padding: 10px 24px;
  background: var(--mv-accent);
  color: #fff;
  border-radius: var(--mv-radius-pill);
  font-weight: 600;
  font-size: 13px;
}
#home_special .deco {
  position: absolute;
  right: 8px;
  bottom: 8px;
  opacity: 0.3;
  pointer-events: none;
}
#home_special .deco img {
  max-width: 80px;
  height: auto;
}
/* ---- ユーティリティ：表示制御 ---- */
.pc_only {
  display: block;
}
.sp_only {
  display: none;
}
.tb_only {
  display: none;
}
.pc_none {
  display: none;
}
.sp_none {
  display: block;
}
.tb_none {
  display: block;
}
@media (max-width: 900px) {
  .pc_only {
    display: none;
  }
  .tb_only {
    display: block;
  }
  .pc_none {
    display: block;
  }
  .tb_none {
    display: none;
  }
}
@media (max-width: 600px) {
  .sp_only {
    display: block;
  }
  .sp_none {
    display: none;
  }
  .tb_only {
    display: none;
  }
  .tb_none {
    display: block;
  }
}
/* マージンユーティリティ */
.mb-0 {
  margin-bottom: 0 !important;
}
.mb-5 {
  margin-bottom: 0.5em !important;
}
.mb-10 {
  margin-bottom: 1em !important;
}
.mb-20 {
  margin-bottom: 2em !important;
}
.mb-30 {
  margin-bottom: 3em !important;
}
.mt-0 {
  margin-top: 0 !important;
}
.mt-5 {
  margin-top: 0.5em !important;
}
.mt-10 {
  margin-top: 1em !important;
}
.mt-20 {
  margin-top: 2em !important;
}
.mt-30 {
  margin-top: 3em !important;
}
/* ==========================================================================
   ★★ ページモジュール mv-mod-* モックアップクラス互換 ★★
   ========================================================================== */
.mv-mod {
  margin: 0;
  scroll-margin-top: 80px;
}
.mv-mod + .mv-mod, .mod_cont + .mv-mod, .mv-mod + .mod_cont, .mv-mod + .mv-mod-h2, .mv-mod + .mv-mod-h3 {
  margin-top: 1.6em;
}
@media only screen and (max-width: 900px) {
  .mv-mod + .mv-mod, .mod_cont + .mv-mod, .mv-mod + .mod_cont {
    margin-top: 1.4em;
  }
}
/* ----- module: リード文（09） ----- */
.mv-mod-lead p {
  font-size: 16px;
  line-height: 1.95;
  color: var(--mv-text-sub);
  padding: 18px 20px;
  background: var(--mv-surface-alt);
  border-left: 4px solid var(--mv-accent);
  border-radius: 0 var(--mv-radius-md) var(--mv-radius-md) 0;
}
/* ----- module: 見出し（01） ----- */
.mv-mod-heading + .mv-mod {
  margin-top: 1em;
}
.mv-mod-h2 {
  font-size: 21px;
  font-weight: 700;
  color: var(--mv-text-strong);
  padding: 10px 0 10px 16px;
  margin: 0;
  border-left: 5px solid var(--mv-accent);
  background: var(--mv-h2-bg, var(--mv-accent-bg));
  border-radius: 0 var(--mv-radius-sm) var(--mv-radius-sm) 0;
  letter-spacing: var(--mv-letter-spacing, 0.005em);
  scroll-margin-top: 80px;
}
.mv-mod-h3 {
  font-size: 17px;
  font-weight: 700;
  color: var(--mv-text-strong);
  padding: 4px 0 6px 4px;
  margin: 0;
  border-bottom: 2px solid var(--mv-accent-border);
  scroll-margin-top: 80px;
}
/* ----- module: 本文（02） ----- */
.mv-mod-body strong {
  color: var(--mv-text-strong);
  font-weight: 700;
}
/* ----- module: 画像1枚（03） ----- */
.mv-mod-figure {
  margin: 0;
  text-align: center;
}
.mv-mod-figure-img {
  display: block;
  max-width: 100%;
  margin: 0 auto;
  border-radius: var(--mv-radius-md);
  border: 1px solid var(--mv-border);
  background: var(--mv-surface-alt);
}
.mv-mod-figure-placeholder {
  width: 100%;
  height: 220px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: var(--mv-text-muted);
}
.mv-mod-figure-placeholder .material-symbols-outlined {
  font-size: 48px;
  opacity: 0.5;
}
.mv-mod-figure-note {
  font-size: 13px;
}
.mv-mod-figcaption {
  margin-top: 10px;
  font-size: 12.5px;
  color: var(--mv-text-muted);
  text-align: center;
}
/* ----- module: リスト（06） ----- */
.mv-ol, .mv-ul, .mv-mod-ol, .mv-mod-ul {
  padding-left: 1.6em;
  margin: 0 0 0.4em;
  list-style-position: outside;
}
.mv-ol li, .mv-ul li, .mv-mod-ol li, .mv-mod-ul li {
  margin-bottom: 0.5em;
  line-height: 1.85;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.mv-ol li::marker, .mv-mod-ol li::marker {
  color: var(--mv-accent);
  font-weight: 700;
}
.mv-ul li::marker, .mv-mod-ul li::marker {
  color: var(--mv-accent);
}
/* ----- module: アンカーナビ（14） ----- */
.mv-mod-anchor-nav {
  padding: 22px 24px;
  background: var(--mv-surface-alt);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
}
.mv-mod-anchor-nav-title {
  margin: 0 0 12px;
  font-size: 13px;
  font-weight: 700;
  color: var(--mv-text-muted);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.mv-mod-anchor-nav-list {
  margin: 0;
  padding-left: 1.4em;
  columns: 2;
  column-gap: 28px;
}
.mv-mod-anchor-nav-list li {
  margin-bottom: 6px;
  break-inside: avoid;
  line-height: 1.7;
}
.mv-mod-anchor-nav-list li::marker {
  color: var(--mv-accent);
  font-weight: 700;
}
.mv-mod-anchor-nav-list a {
  color: var(--mv-text);
  font-weight: 500;
  transition: color 0.15s;
}
.mv-mod-anchor-nav-list a:hover {
  color: var(--mv-accent);
  text-decoration: underline;
}
@media (max-width: 600px) {
  .mv-mod-anchor-nav-list {
    columns: 1;
  }
}
/* ----- module: 表（19）----- */
.mv-mod-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  background: var(--mv-surface);
}
.mv-mod-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.mv-mod-tbl thead th {
  background: var(--mv-surface-alt);
  color: var(--mv-text-sub);
  font-weight: 600;
  text-align: left;
  padding: 12px 16px;
  border-bottom: 1px solid var(--mv-border);
  font-size: 13px;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.mv-mod-tbl tbody td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--mv-border-soft);
  vertical-align: top;
}
.mv-mod-tbl tbody tr:last-child td {
  border-bottom: none;
}
.mv-mod-tbl tbody tr:hover {
  background: var(--mv-surface-soft);
}
/* ----- module: アコーディオン / FAQ（46 / 20） ----- */
.mv-mod-accordion {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mv-mod-accordion-item {
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.mv-mod-accordion-item[open] {
  border-color: var(--mv-accent-border);
  box-shadow: 0 1px 6px rgba(15, 23, 42, 0.05);
}
.mv-mod-accordion-summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px;
  font-size: 14.5px;
  font-weight: 600;
  color: var(--mv-text-strong);
  cursor: pointer;
  list-style: none;
  user-select: none;
  transition: background 0.15s;
}
.mv-mod-accordion-summary::-webkit-details-marker {
  display: none;
}
.mv-mod-accordion-summary:hover {
  background: var(--mv-surface-soft);
}
.mv-mod-accordion-q {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--mv-accent);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
}
.mv-mod-accordion-arrow {
  margin-left: auto;
  font-size: 22px !important;
  color: var(--mv-text-muted);
  transition: transform 0.2s;
}
.mv-mod-accordion-item[open] .mv-mod-accordion-arrow {
  transform: rotate(180deg);
}
.mv-mod-accordion-body {
  padding: 4px 18px 18px 50px;
  font-size: 14px;
  line-height: 1.85;
  color: var(--mv-text);
  border-top: 1px solid var(--mv-border-soft);
}
.mv-mod-accordion-body p {
  padding-top: 14px;
}
/* ----- module: 関連リンク / リンクリスト（17 / 33） ----- */
.mv-mod-link-list-ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mv-mod-link-list-a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 18px;
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  color: var(--mv-text);
  font-weight: 500;
  font-size: 14px;
  transition: all 0.15s;
}
.mv-mod-link-list-a:hover {
  border-color: var(--mv-accent);
  background: var(--mv-accent-bg);
  color: var(--mv-accent-text);
  transform: translateX(2px);
}
.mv-mod-link-list-a > .material-symbols-outlined:first-child {
  font-size: 20px;
  color: var(--mv-accent);
  flex-shrink: 0;
}
.mv-mod-link-list-text {
  flex: 1;
  min-width: 0;
}
.mv-mod-link-list-arrow {
  font-size: 20px !important;
  color: var(--mv-text-muted);
  transition: transform 0.15s;
}
.mv-mod-link-list-a:hover .mv-mod-link-list-arrow {
  color: var(--mv-accent);
  transform: translateX(2px);
}
/* ----- module: リンクボタン（05） / CTA ----- */
.mv-mod-cta {
  text-align: center;
  margin: 2em 0 0;
}
.mv-mod-cta-btn, a.mv-mod-cta-btn, .mv-mod-cta a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 28px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  background: var(--mv-accent);
  color: #fff !important;
  border: 1px solid var(--mv-accent);
  border-radius: var(--mv-radius-pill);
  text-decoration: none !important;
  white-space: nowrap;
  transition: background 0.18s, transform 0.18s, box-shadow 0.18s, border-color 0.18s;
  box-shadow: 0 4px 12px var(--mv-accent-bg);
  cursor: pointer;
}
.mv-mod-cta-btn:hover, a.mv-mod-cta-btn:hover, .mv-mod-cta a:hover {
  background: var(--mv-accent-dark);
  border-color: var(--mv-accent-dark);
  color: #fff !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px var(--mv-accent-bg);
  text-decoration: none !important;
}
.mv-mod-cta-btn .material-symbols-outlined, .mv-mod-cta a .material-symbols-outlined {
  font-size: 18px;
  line-height: 1;
}
/* ==========================================================================
   追加モジュール（front_code 実出力対応補強）
   - mid=8/48 .custom_html
   - mid=10-13 .col2_wrap / .col2_block
   - mid=18/19 .info_table.no_head / .info_table.left_head
   - mid=27 .event_list_mod
   - mid=28-31 .graph_cont chart_wrap
   - mid=46 .accordion_set
   - mid=49 .movie_gallery
   - mid=50 .kv_block
   - mid=51 .banner_set
   - mid=52 .logo_banner
   - mid=53/54 .bg_editor / .border_editor
   - mid=58/59 .recruit_list
   ========================================================================== */
/* ---- mid=8/48 HTML/CSS/JS 埋め込み ---- */
.custom_html {
  margin: 1em 0;
  padding: 14px 18px;
  background: var(--mv-surface-soft);
  border: 1px dashed var(--mv-border);
  border-radius: var(--mv-radius-sm);
  font-size: 14px;
  color: var(--mv-text-sub);
}
/* ---- mid=10-13 2カラム ---- */
.col2_wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin: 1.6em 0;
}
.col2_wrap > .col2_block {
  min-width: 0;
}
@media (max-width: 900px) {
  .col2_wrap {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}
/* ---- mid=18 テーブル（ヘッダーなし） ---- */
.info_table.no_head th {
  display: none;
}
/* ---- mid=19 テーブル（左表題） ---- */
.info_table.left_head th {
  width: 28%;
  white-space: nowrap;
  text-align: left;
}
@media (max-width: 700px) {
  .info_table.left_head th {
    width: auto;
    white-space: normal;
  }
}
/* ---- mid=27 イベント一覧モジュール ---- */
.event_list_mod ul {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--mv-border-soft);
}
.event_list_mod li {
  border-bottom: 1px solid var(--mv-border-soft);
}
.event_list_mod li a {
  display: grid;
  grid-template-columns: 120px 120px 1fr;
  align-items: center;
  gap: 16px;
  padding: 14px 4px;
  color: var(--mv-text);
  text-decoration: none;
  transition: opacity 0.15s;
}
.event_list_mod li a:hover {
  opacity: 0.7;
}
.event_list_mod time {
  font-family: "Lato", "Helvetica Neue", Arial, sans-serif;
  font-size: 13px;
  color: var(--mv-text-mute);
}
.event_list_mod .cat {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 700;
  border: 1px solid var(--mv-accent);
  border-radius: var(--mv-radius-sm);
  color: var(--mv-accent);
  width: fit-content;
}
.event_list_mod .ttl {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.6;
}
@media (max-width: 700px) {
  .event_list_mod li a {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 12px 4px;
  }
}
/* ---- mid=28-31 グラフ：Chart.js 用 chart_wrap サイズ指定 ---- */
.graph_cont .chart_wrap {
  width: 100%;
  position: relative;
}
.graph_cont .chart_wrap_pie {
  aspect-ratio: 1;
  max-width: 100%;
}
.graph_cont .chart_wrap_h {
  height: clamp(220px, 36vw, 360px);
}
.graph_cont .chart_wrap_v {
  height: clamp(240px, 38vw, 400px);
}
.graph_cont .chart_wrap_line {
  height: clamp(260px, 40vw, 420px);
}
.graph_cont .chart_wrap > canvas {
  width: 100% !important;
  height: 100% !important;
  max-width: 100%;
  display: block;
}
/* ---- mid=46 .accordion_set（汎用アコーディオン） ---- */
.accordion_set {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 1em 0;
}
.accordion_set details {
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  background: var(--mv-surface);
  overflow: hidden;
}
.accordion_set summary {
  padding: 14px 48px 14px 18px;
  font-weight: 600;
  cursor: pointer;
  list-style: none;
  position: relative;
  background: var(--mv-surface-soft);
}
.accordion_set summary::-webkit-details-marker {
  display: none;
}
.accordion_set summary::after {
  content: "+";
  position: absolute;
  right: 18px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 20px;
  color: var(--mv-text-mute);
}
.accordion_set details[open] summary::after {
  content: "−";
}
.accordion_set .acc_body {
  padding: 14px 18px;
  line-height: 1.85;
}
/* ---- mid=49 動画ギャラリー ---- */
.movie_gallery {
  display: grid;
  gap: 16px;
  margin: 1em 0;
}
.movie_gallery.col2 {
  grid-template-columns: repeat(2, 1fr);
}
.movie_gallery.col3 {
  grid-template-columns: repeat(3, 1fr);
}
.movie_gallery .movie_set {
  aspect-ratio: 1.7777777778;
  background: #000;
  border-radius: var(--mv-radius-md);
  overflow: hidden;
}
.movie_gallery .movie_set iframe, .movie_gallery .movie_set video {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
@media (max-width: 700px) {
  .movie_gallery.col2, .movie_gallery.col3 {
    grid-template-columns: 1fr;
  }
}
/* ---- mid=50 キービジュアル ---- */
.kv_block {
  position: relative;
  margin: 1em 0;
  border-radius: var(--mv-radius-md);
  overflow: hidden;
}
.kv_block picture, .kv_block img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2.4;
  object-fit: cover;
}
.kv_block .kv_text {
  position: absolute;
  left: 0;
  bottom: 0;
  padding: 24px 28px;
  color: #fff;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.55), transparent);
  width: 100%;
  box-sizing: border-box;
}
.kv_block .kv_text h2 {
  margin: 0 0 6px;
  font-size: clamp(20px, 3vw, 32px);
  color: #fff;
  border: 0;
  background: none;
  padding: 0;
}
.kv_block .kv_text p {
  margin: 0;
  font-size: 14px;
  color: rgba(255, 255, 255, 0.9);
}
/* ---- mid=51 バナー（全幅 slick スライダー） ---- */
.banner_set {
  margin: 1em 0;
  position: relative;
}
.banner_set a {
  display: block;
  transition: opacity 0.15s;
}
.banner_set a:hover {
  opacity: 0.85;
}
.banner_set img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: var(--mv-radius-sm);
}
.banner_slider:not(.slick-initialized) > a:nth-child(n+2) {
  display: none;
}
.banner_slider .slick-dots {
  position: absolute;
  bottom: 12px;
  left: 0;
  right: 0;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  gap: 8px;
  list-style: none;
  z-index: 2;
}
.banner_slider .slick-dots li {
  list-style: none;
  line-height: 0;
}
.banner_slider .slick-dots li::marker, .banner_slider .slick-dots li::before {
  content: none !important;
}
.banner_slider .slick-dots li button {
  width: 10px;
  height: 10px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.6);
  font-size: 0;
  cursor: pointer;
}
.banner_slider .slick-dots li.slick-active button {
  background: #fff;
  transform: scale(1.2);
}
/* ---- mid=52 協賛ロゴバナー ---- */
.logo_banner {
  margin: 2em calc(50% - 50vw);
  width: 100vw;
  background: var(--mv-surface);
  border-top: 1px solid var(--mv-border);
  border-bottom: 1px solid var(--mv-border);
  padding: 24px 0;
  box-sizing: border-box;
}
.logo_banner_slider:not(.slick-initialized) {
  display: flex;
  gap: 24px;
  overflow: hidden;
  align-items: center;
}
.logo_banner_slider:not(.slick-initialized) > .item {
  flex: 0 0 auto;
}
.logo_banner .item {
  padding: 0 16px;
  box-sizing: border-box;
}
.logo_banner .item a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 18px;
  background: #fff;
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-sm);
  transition: border-color 0.15s, box-shadow 0.15s, opacity 0.15s;
  height: 96px;
  box-sizing: border-box;
}
.logo_banner .item a:hover {
  border-color: var(--mv-accent);
  box-shadow: var(--mv-shadow-card);
  opacity: 0.95;
}
.logo_banner img {
  width: auto;
  height: auto;
  max-height: 64px;
  max-width: 240px;
  display: block;
  object-fit: contain;
}
.logo_banner_slider .slick-track {
  display: flex;
  align-items: center;
}
.logo_banner_slider .slick-slide {
  height: auto;
}
/* ---- mid=53/54 背景付き/罫線付き本文 ---- */
.mod_cont.bg_editor {
  padding: 22px 24px;
  background: var(--mv-surface-alt);
  border-radius: var(--mv-radius-md);
}
.mod_cont.border_editor {
  padding: 22px 24px;
  border: 2px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
}
.mod_cont.bg_editor > .editor > :first-child, .mod_cont.border_editor > .editor > :first-child, .mod_cont.bg_editor > .editor > h1:first-child, .mod_cont.bg_editor > .editor > h2:first-child, .mod_cont.bg_editor > .editor > h3:first-child, .mod_cont.bg_editor > .editor > h4:first-child, .mod_cont.bg_editor > .editor > h5:first-child, .mod_cont.bg_editor > .editor > h6:first-child, .mod_cont.border_editor > .editor > h1:first-child, .mod_cont.border_editor > .editor > h2:first-child, .mod_cont.border_editor > .editor > h3:first-child, .mod_cont.border_editor > .editor > h4:first-child, .mod_cont.border_editor > .editor > h5:first-child, .mod_cont.border_editor > .editor > h6:first-child {
  margin-top: 0;
}
/* ---- mid=58/59 採用一覧 ---- */
.recruit_list ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.recruit_list li a {
  display: grid;
  grid-template-columns: 1fr 120px 120px;
  gap: 16px;
  align-items: center;
  padding: 14px 18px;
  background: var(--mv-surface);
  border: 1px solid var(--mv-border);
  border-radius: var(--mv-radius-md);
  color: var(--mv-text);
  text-decoration: none;
  transition: border-color 0.15s, background 0.15s;
}
.recruit_list li a:hover {
  border-color: var(--mv-accent);
  background: var(--mv-accent-bg);
}
.recruit_list .post {
  font-weight: 700;
}
.recruit_list .kind, .recruit_list .loc {
  font-size: 12px;
  color: var(--mv-text-mute);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.recruit_list .kind::before {
  content: "◆";
  color: var(--mv-accent);
}
.recruit_list .loc::before {
  content: "📍";
}
@media (max-width: 700px) {
  .recruit_list li a {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}
/* ---- mod_demo 各サンプルのラベル（サンプルページ用） ---- */
.mod_demo {
  margin: 0 0 32px;
  scroll-margin-top: 80px;
}
.mod_demo_label {
  display: inline-block;
  margin: 0 0 10px;
  padding: 2px 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--mv-accent);
  background: var(--mv-accent-bg);
  border: 1px solid var(--mv-accent-border);
  border-radius: var(--mv-radius-sm);
}
/* ==========================================================================
   装飾系リストラッパー内のリストスタイル一括打ち消し
   ========================================================================== */
.btn_list ul, .btn_list ol, .btn_list li, .sdgs_icon ul, .sdgs_icon li, .gallery, .gallery > .gallery_set, .movie_gallery, .movie_gallery > .movie_set, .attention_list ul, .link_list ul, .link_list ol, .link_list li, .relation_link dl, .relation_link dd, .faq_list, .faq_list .faq_item, .faq_set_accordion, .faq_set_accordion .faq_item, .event_list_mod ul, .event_list_mod li, .recruit_list ul, .recruit_list li, .logo_banner ul, .logo_banner li, .accordion_set, .accordion_set details, .mod_slider .main_slider, .mod_slider .thumb_slider, .graph_cont .graph_legend, .graph_cont .graph_legend > li {
  list-style: none !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.anchor_link ul, .anchor_link li {
  list-style: none !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.attention_list li {
  list-style: none !important;
}
.btn_list li::marker, .sdgs_icon li::marker, .gallery > .gallery_set::marker, .movie_gallery > .movie_set::marker, .event_list_mod li::marker, .recruit_list li::marker, .logo_banner li::marker, .link_list li::marker, .relation_link dt::marker, .relation_link dd::marker {
  content: none !important;
}
.btn_list li, .sdgs_icon li, .event_list_mod li, .recruit_list li, .logo_banner li, .link_list li, .attention_list li {
  text-indent: 0;
}
.anchor_link li::marker {
  content: none !important;
}
/* ==========================================================================
   mid=21 スライドショー用 slick の最小限ベーススタイル
   ========================================================================== */
.mod_slider .main_slider {
  position: relative;
  border-radius: var(--mv-radius-md);
  overflow: hidden;
  background: var(--mv-surface-alt);
  isolation: isolate;
  z-index: 0;
}
.mod_slider .slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  user-select: none;
  -webkit-touch-callout: none;
  touch-action: pan-y;
}
.mod_slider .slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0;
}
.mod_slider .slick-list:focus {
  outline: none;
}
.mod_slider .slick-track {
  position: relative;
  top: 0;
  left: 0;
  display: flex;
  align-items: stretch;
}
.mod_slider .slick-track::before, .mod_slider .slick-track::after {
  content: "";
  display: table;
}
.mod_slider .slick-slide {
  display: none;
  float: left;
  min-height: 1px;
  outline: none;
}
.mod_slider .slick-initialized .slick-slide {
  display: block;
}
.mod_slider .slick-loading .slick-slide {
  visibility: hidden;
}
.mod_slider .main_slider .item {
  line-height: 0;
}
.mod_slider .main_slider .item img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 1.7777777778;
  object-fit: cover;
}
.mod_slider .slick-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1010;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  font-size: 22px;
  font-family: inherit;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  appearance: none;
  -webkit-appearance: none;
  box-sizing: border-box;
  text-align: center;
  text-indent: 0;
  vertical-align: middle;
  transition: background 0.2s;
}
.mod_slider .slick-arrow:hover, .mod_slider .slick-arrow:focus-visible {
  background: rgba(0, 0, 0, 0.7);
  outline: none;
}
.mod_slider .slick-prev {
  left: 14px;
}
.mod_slider .slick-next {
  right: 14px;
}
.mod_slider .slick-arrow {
  font-size: 0;
}
.mod_slider .slick-prev::before, .mod_slider .slick-next::before {
  content: "";
  display: block;
  width: 10px;
  height: 10px;
  border-top: 2px solid #fff;
  border-right: 2px solid #fff;
  pointer-events: none;
}
.mod_slider .slick-prev::before {
  transform: rotate(-135deg);
  margin-right: -3px;
}
.mod_slider .slick-next::before {
  transform: rotate(45deg);
  margin-left: -3px;
}
.mod_slider .slick-disabled {
  opacity: 0.4;
  cursor: default;
}
.mod_slider .slick-dots {
  position: absolute;
  bottom: 14px;
  left: 0;
  right: 0;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  gap: 8px;
  list-style: none;
  z-index: 1010;
}
.mod_slider .slick-dots li {
  line-height: 0;
  list-style: none;
  padding: 0;
  margin: 0;
}
.mod_slider .slick-dots li::marker, .mod_slider .slick-dots li::before {
  content: none !important;
  display: none !important;
}
.mod_slider .slick-dots li button {
  width: 10px;
  height: 10px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
  font-size: 0;
  color: transparent;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.mod_slider .slick-dots li.slick-active button {
  background: #fff;
  transform: scale(1.25);
}
.mod_slider .slick-dots li button:focus-visible {
  outline: 2px solid var(--mv-accent);
  outline-offset: 2px;
}
@media (max-width: 640px) {
  .mod_slider .slick-arrow {
    display: none !important;
  }
  .mod_slider .slick-dots {
    bottom: 8px;
  }
}
/* .editor 汎用リスト装飾の打ち消し：.btn_list はボタン列であり黒丸ドット・インデント不要 */
.editor .btn_list ul li {
  padding-left: 0;
}
.editor .btn_list ul li::before {
  content: none;
  display: none;
}
/* ============================================================
   フォームモジュール（mid=35〜40）スタイル
   静的サイト（static/contact）の .ct_contact_* デザインを form_* クラスへ適用。
   2026-07-08 追加。プレーンCSS（SCSS 正本＝m_scss / disk .scss にも同内容を同期）。
   ============================================================ */
body .form_page_wrap {
  max-width: 860px;
  margin: 0 auto;
  padding: clamp(40px, 6vw, 72px) 20px clamp(64px, 10vw, 100px);
}
/* ステップナビ（01 入力 → 02 確認 → 03 完了） */
body .form_steps {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  list-style: none;
  margin: 0 0 clamp(28px, 4vw, 40px);
  padding: 0;
}
body .form_step {
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 8px;
  position: relative;
  color: #9aa8a0;
  font-size: 13px;
  text-align: center;
}
body .form_step::before {
  content: "";
  position: absolute;
  top: 17px;
  left: -50%;
  width: 100%;
  height: 2px;
  background: #e0ebe4;
  z-index: 0;
}
body .form_step:first-child::before {
  display: none;
}
body .form_step_num {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #e0ebe4;
  color: #6b7d73;
  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;
  font-weight: 700;
  font-size: 15px;
  position: relative;
  z-index: 1;
}
body .form_step.is_current .form_step_num {
  background: #16a34a;
  color: #fff;
}
body .form_step.is_current {
  color: #052e1a;
  font-weight: 700;
}
body .form_step_label {
  font-size: 13px;
}
/* 見出し */
body .form_page_head {
  margin-bottom: clamp(22px, 4vw, 32px);
}
body .form_page_label {
  display: block;
  font-size: 12px;
  letter-spacing: 0.08em;
  color: #16a34a;
  font-weight: 700;
  margin-bottom: 6px;
}
body .form_page_title {
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 700;
  color: #052e1a;
  margin: 0 0 12px;
  line-height: 1.3;
}
body .form_page_text {
  font-size: 14px;
  color: #4b5d54;
  line-height: 1.8;
  margin: 0;
}
/* フィールド */
body .form_main {
  margin-top: clamp(20px, 3vw, 28px);
}
body .form_field_list {
  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(18px, 3vw, 24px);
}
body .form_field {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 210px 28px minmax(0, 1fr);
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 6px 28px;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: start;
}
body .form_field_label {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 10px;
  padding-top: 13px;
  font-weight: 700;
  font-size: 15px;
  color: #052e1a;
}
body .required_mark {
  -webkit-box-flex: 0;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  background: #16a34a;
  border-radius: 4px;
  padding: 4px 7px;
}
body .form_field_input {
  min-width: 0;
}
body .form_field_input input, body .form_field_input select, body .form_field_input textarea {
  width: 100%;
  font-family: inherit;
  font-size: 16px;
  line-height: 1.6;
  color: #14271d;
  background: #f1faf4;
  border: 1px solid #d8e8de;
  border-radius: 10px;
  padding: 12px 14px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  -webkit-transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;
  transition: border-color 0.2s, background-color 0.2s, box-shadow 0.2s;
}
body .form_field_input input:focus, body .form_field_input select:focus, body .form_field_input textarea:focus {
  outline: none;
  border-color: #16a34a;
  background: #fff;
  -webkit-box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.12);
  box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.12);
}
body .form_field_input textarea {
  resize: vertical;
  min-height: 150px;
}
body .form_field_input select {
  padding-right: 42px;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316a34a' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 18px;
}
body .form_field_help {
  font-size: 13px;
  color: #6b7d73;
  margin: 8px 0 0;
  line-height: 1.7;
}
/* プライバシー同意（チェックボックス＋同意文の1行・静的サイト ct_contact_agree 準拠） */
body .form_agree {
  margin-top: clamp(24px, 4vw, 32px);
}
body .form_agree_check {
  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;
  gap: 8px;
  font-size: 14px;
  color: #052e1a;
  cursor: pointer;
  line-height: 1.7;
}
body .form_agree_check input {
  width: 18px;
  height: 18px;
  accent-color: #16a34a;
  -webkit-box-flex: 0;
  -ms-flex: 0 0 auto;
  flex: 0 0 auto;
}
body .form_agree_check a {
  color: #16a34a;
  text-decoration: underline;
}
/* 送信・確認・戻るボタン */
body .form_actions {
  margin-top: clamp(28px, 4vw, 40px);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 16px;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}
body .form_page_wrap .btn {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  gap: 8px;
  border-radius: 10px;
  padding: 15px 40px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  border: 1px solid transparent;
  -webkit-transition: background-color 0.2s, color 0.2s;
  transition: background-color 0.2s, color 0.2s;
  text-decoration: none;
}
body .form_page_wrap .btn_primary, body .form_page_wrap .btn_submit {
  background: #16a34a;
  color: #fff;
  border-color: #16a34a;
}
body .form_page_wrap .btn_primary:hover, body .form_page_wrap .btn_submit:hover {
  background: #12873d;
  border-color: #12873d;
}
body .form_page_wrap .btn_back, body .form_page_wrap .btn_ghost {
  background: #fff;
  color: #4b5d54;
  border-color: #d8e8de;
}
body .form_page_wrap .btn_back:hover, body .form_page_wrap .btn_ghost:hover {
  background: #f1faf4;
}
/* 確認画面：入力内容の確認リスト */
body .form_confirm {
  margin-top: clamp(20px, 3vw, 28px);
}
body .form_confirm_list {
  margin: 0;
  border: 1px solid #d8e8de;
  border-radius: 12px;
  overflow: hidden;
  background: #fff;
}
body .form_confirm_row {
  display: -ms-grid;
  display: grid;
  -ms-grid-columns: 210px 28px minmax(0, 1fr);
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 4px 28px;
  padding: clamp(15px, 2.2vw, 19px) clamp(18px, 2.6vw, 24px);
}
body .form_confirm_row + .form_confirm_row {
  border-top: 1px solid #eef4f0;
}
body .form_confirm_row dt {
  margin: 0;
  font-weight: 700;
  font-size: 14px;
  color: #4b5d54;
}
body .form_confirm_row dd {
  margin: 0;
  font-size: 15px;
  color: #052e1a;
  line-height: 1.8;
  word-break: break-word;
  overflow-wrap: anywhere;
}
body .form_confirm_row dd.is_long {
  white-space: pre-wrap;
}
/* 確認画面：同意事項 */
body .form_confirm_agree {
  margin-top: clamp(20px, 3vw, 28px);
  padding: clamp(16px, 2.4vw, 20px) clamp(18px, 2.6vw, 24px);
  background: #f1faf4;
  border: 1px solid #d8e8de;
  border-radius: 12px;
  text-align: center;
}
body .form_confirm_agree_label {
  margin: 0 0 6px;
  font-size: 12px;
  letter-spacing: 0.06em;
  color: #16a34a;
  font-weight: 700;
}
body .form_confirm_agree_text {
  margin: 0;
  font-size: 14px;
  color: #4b5d54;
  line-height: 1.8;
}
/* 完了画面 */
body .form_complete {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}
body .form_complete_card {
  max-width: 600px;
  width: 100%;
  text-align: center;
  background: #fff;
  border: 1px solid #d8e8de;
  border-radius: 16px;
  padding: clamp(40px, 6vw, 64px) clamp(24px, 4vw, 48px);
}
body .form_complete_icon {
  width: 72px;
  height: 72px;
  margin: 0 auto clamp(18px, 3vw, 24px);
  border-radius: 50%;
  background: #e7f8ee;
  color: #16a34a;
  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;
}
body .form_complete_icon .material-symbols-outlined {
  font-size: 44px;
  line-height: 1;
}
body .form_complete_label {
  display: block;
  margin-bottom: 8px;
  font-size: 12px;
  letter-spacing: 0.08em;
  color: #16a34a;
  font-weight: 700;
}
body .form_complete_title {
  margin: 0 0 clamp(14px, 2vw, 18px);
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 700;
  color: #052e1a;
  line-height: 1.3;
}
body .form_complete_text {
  margin: 0 0 clamp(28px, 4vw, 36px);
  font-size: 15px;
  color: #4b5d54;
  line-height: 1.9;
}
body .form_complete_actions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}
/* スマホ */
@media screen and (max-width: 640px) {
  body .form_field {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 8px;
  }
  body .form_field_label {
    padding-top: 0;
  }
  body .form_step_label {
    font-size: 12px;
  }
  body .form_confirm_row {
    -ms-grid-columns: 1fr;
    grid-template-columns: 1fr;
    gap: 4px;
  }
  body .form_confirm_row dt {
    font-size: 13px;
  }
}
