/* ========================
      基本スコープと色変数
   ======================== */
:root {
 --single-yellow: #f6e30f;
 --single-teal: #2ea3a3;
 --single-teal-dark: #017257;
 --single-teal-bg: #e6f5f5;
 --single-muted: #6b7280;
 --single-max: 1040px;
 --single-radius: 6px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
 margin: 0;
 font-size: inherit;
 font-weight: inherit;
}


.single_scope {
 /* font-size: 16px; */
 line-height: 1.8;
 color: #0f172a;
 background: #fff;
 /* font-size: 0.875rem; */
 /* font-size: 0.9375rem; */
 text-align: left;
}

@media print,
screen and (min-width: 768px) {
 .single_scope {
  font-size: 1rem;
 }
}

.single_scope * {
 box-sizing: border-box;
}


.single_scope :where(ul, ol) {
 margin: 0.4em 0 1em;
 padding-left: 1em;
 list-style-position: inside;
}

/* h1,
h2,
h3,
h4,
h5,
h6 :where(ul, ol) {

} */

.single_text_left {
 text-align: left !important;
}

.single_link {
 color: var(--single-teal-dark);
 text-decoration: none;
}

.single_link:hover {
 text-decoration: underline;
}

.single_mt {
 margin-top: 1rem;
}

/* ===== 汎用グリッド（スマホ1列 → PCで2/3列） ===== */
.single_grid {
 display: grid;
 grid-template-columns: 1fr;
 /* SPは1列 */
 gap: 1rem;
 /* デフォルトの隙間 */
}

/* 隙間バリエーション（任意） */
.single_grid_gapS {
 gap: 0.75rem;
}

.single_grid {
 gap: 1rem;
}

.single_grid_gapL {
 gap: 1.5rem;
}


.single_pic01 {
 max-width: 600px;
 margin: 0 auto 1rem;
}

.single_clearfix::after {
 content: "";
 display: block;
 clear: both;
}

@media screen and (min-width: 960px) {
 .single_float_right {
  float: right;
 }

 .single_float_left {
  float: left;
 }

 .single_pic01 {
  max-width: none;
  margin: 0 0 0 1rem;
  width: 46%;
 }
}

/* PCブレークポイント（サイト基準に合わせて調整可） */
@media screen and (min-width: 960px) {
 .single_pc2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
 }

 .single_pc3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
 }
}

/* 角丸や枠のあるカードと相性が良い補助（任意） */
.single_card {
 background: #fff;
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
 padding: 1rem;
}

/* ========================
      ヘッダー
   ======================== */
.single_header {
 background: #fff;
 border-bottom: 3px solid var(--single-teal);
}

.single_header_inner {
 max-width: var(--single-max);
 margin: 0 auto;
 padding: 0.8em 1em;
 display: flex;
 align-items: center;
 gap: 1em;
}

.single_brand {
 display: flex;
 align-items: center;
 gap: 0.6em;
}

.single_brand_mark {
 width: 2.2em;
 height: 2.2em;
 background: #fff;
 color: var(--single-teal);
 font-weight: 900;
 border-radius: 8px;
 outline: 3px solid var(--single-yellow);
 display: grid;
 place-items: center;
}

.single_brand_title {
 font-weight: 700;
 font-size: 1.125em;
 color: #0f172a;
 text-decoration: none;
}

.single_brand_meta {
 font-size: 0.75em;
 color: var(--single-muted);
}

.single_nav {
 margin-left: auto;
}

.single_nav_list {
 display: flex;
 gap: 0.75em;
 flex-wrap: wrap;
 list-style: none;
 margin: 0;
 padding: 0;
}

.single_nav_link {
 color: #0f172a;
 font-weight: 600;
 padding: 0.4em 0.6em;
 border-radius: 6px;
}

.single_nav_link:hover {
 background: var(--single-teal-bg);
}

/* ========================
      Hero
   ======================== */
.single_hero {
 background: var(--single-teal-bg);
 border-bottom: 3px solid var(--single-teal);
}

.single_hero_inner {
 max-width: var(--single-max);
 margin: 0 auto;
 padding: 1.5em 1em;
}

.single_breadcrumbs {
 font-size: 0.8em;
 color: var(--single-muted);
}

.single_badge {
 display: inline-block;
 padding: 0.2em 0.7em;
 border-radius: 4px;
 background: #7bba1a;
 color: #fff;
 font-weight: 800;
 font-size: 0.75rem;
}

.single_page_title {
 font-size: 1.625em;
 font-weight: 700;
 color: #0d1321;
 text-align: left;
}

.single_meta {
 margin-top: 0.4em;
 font-size: 0.8em;
 color: var(--single-muted);
}


/* ===== 見出しのリファイン（統一・シンプル） ===== */

/* h2: セクション見出し */
.single_h2,
.single_h3 {
 position: relative;
 padding-left: 1rem;
 margin: 1.6em 0 0.6em;
 /* 相対余白 */
 /* 20px基準 */
 font-weight: 700;
 color: #0f172a;
}

.single_h2 {
 font-size: 1.375rem;
}

.single_h3 {
 font-size: 1.125rem;
}

.single_h4 {
 font-size: 1rem;
 font-weight: 700;
 margin: 1.2em 0 0.4em;
 color: var(--single-teal-dark);
}

.single_h2::before,
.single_h3::before {
 content: "";
 position: absolute;
 left: 0;
 top: 0.2em;
 width: 0.375rem;
 /* 6px */
 height: 1.2em;
 /* 行高さに追従 */
 border-radius: 0.1875rem;
 /* 3px */
 background: var(--single-teal);
}

/* h3: 下線スタイルで軽めに */
.single_h3.single_h3_border {
 padding-left: 0;
 margin: 1.1em 0 0.5em;
 color: var(--single-teal-dark);
 border-bottom: 1px solid #cbd5e1;
 line-height: 1.4;
 letter-spacing: 0.01em;
}

.single_h3.single_h3_border::before {
 display: none;
}

.single_h2_nondec,
.single_h3_nondec {
 padding-left: 0;
}

.single_h2_nondec::before,
.single_h3_nondec::before {
 display: none;
}



/* ========================
      コンテンツ
   ======================== */
.single_container {
 max-width: var(--single-max);
 margin: 0 auto;
 padding: 2em 1em;
}

.single_article_p {
 margin: 0 0 1em;
}

.single_intro {
 margin-bottom: 1rem;
}

.single_flex_row {
 display: flex;
 flex-wrap: wrap;
}

.single_flex_row dt,
.single_flex_row dd {
 margin: 0;
}

.single_info_grid {
 display: grid;
 grid-template-columns: 1fr;
 gap: 1em;
 margin: 1em 0;
}

.single_info_item {
 border: 2px solid var(--single-teal);
 border-radius: var(--single-radius);
 padding: 1em;
 background: #fff;
}

.single_info_strong {
 color: var(--single-teal-dark);
 font-weight: 700;
 display: block;
 margin-bottom: 0.4em;
}

@media print,
screen and (min-width: 768px) {
 .single_pc_grid2 {
  grid-template-columns: 1fr 1fr;
 }
}

/* 背景色付枠 */
.single_box_info {
 margin-bottom: 1rem;
 padding: 18px;
 background: var(--single-teal-bg);
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
}

.single_message {
 font-size: 1.125rem;
 line-height: 1.8;
 margin-top: 2rem;
 font-weight: 500;
 color: #222;
}

.single_message--tight {
 margin-top: 0.8em;
}

/* ========================
      CTA
   ======================== */
.single_cta {
 display: flex;
 gap: 0.8em;
 flex-wrap: wrap;
 margin: 1.2em 0;
}

.single_btn {
 display: inline-flex;
 align-items: center;
 gap: 0.5em;
 padding: 0.7em 1em;
 border-radius: 6px;
 font-weight: 700;
 text-decoration: none;
}

.single_btn_primary {
 background: var(--single-teal);
 color: #fff;
}

.single_btn_primary:hover {
 background: var(--single-teal-dark);
}

.single_btn_tel {
 background: #111827;
 color: #fff;
}

.single_btn_dot {
 width: 0.6em;
 height: 0.6em;
 background: var(--single-yellow);
 border-radius: 50%;
 display: inline-block;
}

.single_back {
 margin-top: 2rem;
}

.single_back_link {
 color: var(--single-teal-dark);
}

/* ========================
追加用：アクセスカード 
======================== */
.single_access_card {
 background: #fff;
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
 padding: 16px;
 margin: 1em 0;
 box-shadow: 0 2px 6px rgba(0, 0, 0, .04);
}

.single_access_card .single_access_ttl {
 margin-top: 0;
 font-size: 0.76rem;
 font-weight: 700;
}

.single_access_card .single_access_txt {
 font-size: 0.76rem;
}

/* ========================
      Footer
   ======================== */
.single_footer {
 border-top: 3px solid var(--single-teal);
 background: #fff;
}

.single_footer_inner {
 max-width: var(--single-max);
 margin: 0 auto;
 padding: 1.2em 1em;
 color: var(--single-muted);
 font-size: 0.9em;
}

/* ===== 追加: 無料体験ひな形で使う未定義クラス ===== */

/* サブタイトル */
.single_subtitle {
 color: var(--single-muted);
 margin: 0 0 6px;
 font-size: .95em;
}

/* 見出しの下説明など */
.single_note {
 font-size: 13px;
 color: var(--single-muted);
}

/* キービジュアル行（テキスト + 画像） */
.single_kv {
 display: grid;
 grid-template-columns: 1.2fr .8fr;
 align-items: flex-start;
 gap: 18px;
 background: var(--single-teal-bg);
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
 padding: 18px;
}

@media (max-width: 860px) {
 .single_kv {
  grid-template-columns: 1fr;
 }
}

.single_kv_img {
 width: 100%;
 aspect-ratio: 16/9;
 object-fit: cover;
 border-radius: 8px;
}

.single_kv_pic {
 display: grid;
 gap: 1rem 0.5rem;
}

/* 流れ（STEP） */
.single_step {
 counter-reset: step 0;
}



/* 数字バッジを“フレックス子要素”として表示（絶対配置をやめる） */
.single_step_item .single_h3 {
 margin-top: 0;
 padding-left: 0;
 line-height: 1;
}

.single_step_item .single_h3::before {
 counter-increment: step;
 content: counter(step);
 position: static;
 transform: none;

 flex: 0 0 auto;
 width: 1.6rem;
 height: 1.6rem;
 margin-right: 0.2em;
 border-radius: 50%;
 background: var(--single-teal);
 color: #fff;
 font-size: 0.875rem;
 font-weight: 700;
 display: inline-flex;
 align-items: center;
 justify-content: center;
}

/* テーブル（時間割など） */
/* .single_table {
 width: 100%;
 border-collapse: collapse;
 font-size: 15px;
}

.single_table th,
.single_table td {
 border: 1px solid #e5e7eb;
 padding: 10px 12px;
 text-align: left;
}

.single_table thead th {
 background: #f3f4f6;
} */
/* === Reset: デフォルトは素のテーブル（崩れ防止） === */
.single_table {
 min-width: auto;
 white-space: normal;
}

.single_table thead th {
 position: static;
 background: #f3f4f6;
 z-index: auto;
}

.single_table th:first-child,
.single_table td:first-child {
 position: static;
 left: auto;
 z-index: auto;
 background: inherit;
}

/* ラッパーは横スクロールだけ常備（安全） */
.single_table_wrap {
 overflow-x: auto;
 -webkit-overflow-scrolling: touch;
 max-width: 100%;
 position: relative;
}

/* === Mods: 必要な表だけ個別に有効化 === */
.single_table.-min720 {
 min-width: 45rem;
}

/* 720px相当 */
.single_table.-min880 {
 min-width: 55rem;
}

/* 列が多い時 */
.single_table.-nowrap {
 white-space: nowrap;
}

/* 折り返し禁止 */
.single_table.-wrap {
 white-space: normal;
 word-break: break-word;
}

/* 長文用 */
.single_table.-dense th {
 letter-spacing: 0.05em;
}

.single_table.-dense th,
.single_table.-dense td {
 padding: 0.375rem 0.625rem;
}

/* 見出し固定（必要な表だけ） */
.single_table.-stickyhead thead th {
 position: sticky;
 top: 0;
 z-index: 2;
 background: #f3f4f6;
}

/* 1列目固定（必要な表だけ） */
.single_table.-stickycol th:first-child,
.single_table.-stickycol td:first-child {
 position: sticky;
 left: 0;
 z-index: 1;
 background: #fff;
}

.single_table.-stickycol thead th:first-child {
 z-index: 3;
}

/* 角の重なり対策 */


/* Stack表示を使う時は他Modを無効化して干渉回避 */
@media (max-width: 560px) {
 .single_table.-stack {
  min-width: 0;
  white-space: normal;
 }

 .single_table.-stack.-stickyhead thead th,
 .single_table.-stack.-stickycol th:first-child,
 .single_table.-stack.-stickycol td:first-child {
  position: static;
  left: auto;
 }

 .single_table.-stack thead {
  display: none;
 }

 .single_table.-stack,
 .single_table.-stack tbody,
 .single_table.-stack tr,
 .single_table.-stack td {
  display: block;
  width: 100%;
 }

 .single_table.-stack tr {
  border: 1px solid #e5e7eb;
  border-radius: var(--single-radius);
  padding: .5rem .75rem;
  margin-bottom: .75rem;
  background: #fff;
 }

 .single_table.-stack td {
  display: grid;
  grid-template-columns: 8.5rem 1fr;
  gap: .5rem;
  padding: .35rem 0;
  border: 0;
  border-bottom: 1px dashed #e5e7eb;
 }

 .single_table.-stack td:last-child {
  border-bottom: 0;
 }

 .single_table.-stack td::before {
  content: attr(data-label);
  font-weight: 700;
  color: #111827;
 }
}

/* ===== 表カード化：周囲デザインを他要素と統一 ===== */
.single_table {
 font-size: 0.76rem;
}

/* テーブルのトーン統一（ヘッダー色・罫線・余白） */
.single_table.-tone thead th {
 background: var(--single-teal-bg);
 color: #0f172a;
 border-bottom: 2px solid var(--single-teal);
}

.single_table.-tone th,
.single_table.-tone td {
 border-color: #e5e7eb;
 /* 他要素と同じ罫線色 */
 padding: .6rem .75rem;
 /* 情報量多い前提の密度に */
}

.single_table.-tone tbody tr:nth-child(odd) {
 background: #fafafa;
 /* うっすら交互 */
}

.single_table.-tone tbody tr:hover {
 background: #f6f9f9;
 /* hoverでわずかにティール寄せ */
}

/* 数字を整列（時間列の視認性UP） */
.single_tabnums {
 font-variant-numeric: tabular-nums;
 font-feature-settings: 'tnum' 1, 'lnum' 1;
}

/* レスポンシブは既存Modsをそのまま併用 */


/* 画像ギャラリー */
.single_gallery {
 display: grid;
 grid-template-columns: repeat(3, minmax(0, 1fr));
 gap: 10px;
}

@media (max-width: 900px) {
 .single_gallery {
  grid-template-columns: repeat(2, minmax(0, 1fr));
 }
}

@media (max-width: 520px) {
 .single_gallery {
  grid-template-columns: 1fr;
 }
}

.single_gallery img {
 width: 100%;
 aspect-ratio: 4/3;
 object-fit: cover;
 border-radius: 8px;
 border: 1px solid #e5e7eb;
}

/* PDFリスト */
.single_pdf_list {
 display: grid;
 grid-template-columns: repeat(2, minmax(0, 1fr));
 gap: 12px;
}

@media (max-width: 720px) {
 .single_pdf_list {
  grid-template-columns: 1fr;
 }
}

.single_pdf {
 display: flex;
 gap: 12px;
 align-items: center;
 padding: 12px;
 background: #fff;
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
}

.single_pdf_icon {
 padding: 0.4em 0.2em;
 border-radius: 6px;
 background: #fee2e2;
 color: #991b1b;
 display: grid;
 place-items: center;
 font-weight: 800;
}

.single_pdf_body {
 flex: 1;
}

.single_pdf_title {
 font-weight: 700;
 margin: 0;
}

.single_pdf_meta {
 font-size: 12px;
 color: var(--single-muted);
}

.single_pdf_link {
 margin-left: auto;
 padding: 10px 12px;
 border-radius: 8px;
 border: 1px solid #fecaca;
 color: #b91c1c;
 text-decoration: none;
}

.single_pdf_link:hover {
 background: #fff1f2;
}

/* FAQ */
.single_faq details {
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
 background: #fff;
 padding: 10px 12px;
}

.single_faq details+details {
 margin-top: 10px;
}

.single_faq summary {
 cursor: pointer;
 font-weight: 700;
}

/* Googleマップ埋め込みの比率枠 */
.single_map_wrap {
 position: relative;
 padding-top: 56.25%;
 background: #f3f4f6;
 border: 1px solid #e5e7eb;
 border-radius: var(--single-radius);
 overflow: hidden;
}

.single_map_wrap iframe {
 position: absolute;
 inset: 0;
 width: 100%;
 height: 100%;
 border: 0;
}