@charset "UTF-8";
/*
 * 記事詳細ページ(single.php、post_type=post)用。
 * _cassette.css は関連記事など、記事一覧(.p-postList)がページ内に出る場合に備えて読み込んでいる。
 */
/*
 * 色等のデザイントークン(旧テーマから引き継ぎ)。フォントはSWELLのカスタマイザー設定を
 * そのまま使うため、ここでは持たない。
 */
:root{
  --brand-main: #0E63A5;
  --color-black: #1a1a1a;
  --color-gray: #959595;
  --color-mid-gray:#e6e9ed;
  --color-light-gray: #eeeeee;
  --accent-red: #F50057;
  --accent-yellow: #F9A826;
  --accent-green: #00BFA6;
  --color-white:#FFFFFF;
  --transition: all .3s cubic-bezier(0, 1, .64, 1);
}
/* ヘッダーCVボタンの見た目はparts/_button.cssの.c-ctaBtn共通スタイルを参照 */
/* Gutenbergの太字(B)ボタンが出力する <span class="bold"> 用 */
.bold {
  font-weight: 700;
}
/* ページネーションの数字(SWELL標準は#dedede)を少し濃いグレーに */
[class*="page-numbers"] {
  background-color: #cccccc;
  border-radius: 4px;
}
.p-breadcrumb__item .p-breadcrumb__text{
  font-size: 12px;
}
.p-breadcrumb__item [class*=" icon-"]:before, [class^=icon-]:before{
margin-top:3px;
}
.c-categoryList__separation:after, .p-breadcrumb__item:after{
  margin-top:2px;
}
/*
 * メインバナー(ACFオプション o_main_bnr、swell_child_display_banners()で出力)。
 * front-page/home/archive等どこで使っても効くよう共通ファイルに置く。
 */
.p-mainBanner__item {
  display: block;
}
.p-mainBanner__img {
  width: 100%;
  border-radius: 8px;
  transition: opacity .3s ease;
}
.p-mainBanner__img:hover {
  opacity: 0.8;
}
/*
 * SWELL標準はヘッダーメニュー各項目の「概要(オプション)」欄をc-smallNavTitleとして
 * リンク内に表示する。メニュー項目ごとに概要を1つずつ空にするのは手間なので、
 * CSS側で一律非表示にする。
 */
.c-smallNavTitle {
  display: none;
}
/*
 * ヘッダーバー右側のACFリンク(o_header_small_link、parts/header/head_bar.php)。
 * 別窓アイコンは_footer.cssの.l-footer__nav a[target="_blank"]と同じパターン。
 */
/* front-page.cssのグローバルなa:visited(color:黒)の方が詳細度が高く上書きされてしまうため、:visitedも明示する */
.c-headerSmallLink,
.c-headerSmallLink:visited {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  letter-spacing: var(--swl-letter_spacing, .2px);
  color: var(--color-white);
  white-space: nowrap;
}
.c-headerSmallLink[target="_blank"]::after {
  content: "";
  display: inline-flex;
  margin-left: 4px;
  background-position: center;
  background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7.914%207.914v5.815h5.815V7.914H7.914zM7.286%206.5a.786.786%200%2000-.786.786v7.071c0%20.434.352.786.786.786h7.071a.786.786%200%2000.786-.786V7.286a.786.786%200%2000-.786-.786H7.286z%22%20fill%3D%22%23fff%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16.07%2015.196V9.643h1.43v5.553a2.304%202.304%200%2001-2.304%202.304H9.643v-1.43h5.553a.874.874%200%2000.874-.874z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E');
  background-repeat: no-repeat;
  background-size: 100% 100%;
  width: 18px;
  height: 18px;
  opacity: 0.7;
}
.c-headerSmallLink:hover {
  opacity: 0.7;
  text-decoration: underline;
}
/*
 * ヘッダーのグローバルナビ(.c-gnav)関連。ボタンの見た目はparts/_button.cssを参照。
 */
/* 幅が足りない時にflexで圧縮されて小さくなる/消えるのを防ぐ */
.c-gnav>.menu-item{
  display: flex;
  align-items: center;
}
.c-gnav>.menu-item>a .ttl{
  font-weight: 700 !important;
  display:inline-block;
}
.c-gnav .sub-menu a:before{
  display:none;
}
.c-gnav .c-ctaBtn{
  margin-left: 20px;
}
/* タブレット横〜1200px幅: ナビの文字を少し詰めてロゴが圧縮されるのを避ける */
@media (min-width: 1024px) and (max-width: 1200px) {
  .c-gnav>.menu-item>a .ttl{
    font-size: 13px;
  }
}
/* さらに幅が無い範囲: CTAボタンがはみ出すので、もう一段階詰める */
@media (max-width: 1023px) {
  .c-gnav>.menu-item>a .ttl{
    font-size: 12px;
  }
}
.p-spMenu__nav .c-ctaBtn.-red{
  margin-top:30px;
}
/* SP幅(767px以下)でだけ要素を非表示にする汎用ユーティリティ */
@media (max-width: 767px) {
  .u-sp-hide {
    display: none !important;
  }
}
/* PC幅(768px以上)でだけ要素を非表示にする汎用ユーティリティ */
@media (min-width: 768px) {
  .u-pc-hide {
    display: none !important;
  }
}
/*
 * CTAボタン共通スタイル(見た目・ホバー演出の使い回し用)。
 * 色は--cta-bg/--cta-color/--cta-overlayで変更する。使う側は
 * このセレクタリストに追記するか、新しい場所では.c-ctaBtnクラスを付けて使う。
 * ヘッダーも含め全ボタンを.c-ctaBtnに統一(旧.cv-btnは廃止)。
 * .c-gnav自体のレイアウトはparts/_header.cssを参照。
 */
.c-gnav .c-ctaBtn > a {
  height: 42px;
  padding:0 16px;
}
/* .c-ctaBtnが<li>に付く場合(ナビメニュー)は、固定heightではなくpaddingで高さを決める。
   これで<li>自体の高さも<a>の内容に合わせて自然に決まり、上下に隙間ができない */
a.c-ctaBtn,
.c-ctaBtn > a {
  width: 100%;
}
a.c-ctaBtn,
.c-ctaBtn > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 48px;
  border-radius: 50px;
  position: relative;
  overflow: hidden;
  transition: var(--transition);
  background-color: var(--cta-bg, var(--color-black));
  color: var(--cta-color, var(--color-white)) !important;
  box-sizing: border-box;
  font-weight: 700;
}
@media (max-width: 767px) {
a.c-ctaBtn,
.c-ctaBtn > a {
    padding: 14px 36px;
    font-size: 16px
}
  }
@media (min-width: 768px) {
a.c-ctaBtn,
.c-ctaBtn > a {
    font-size: 18px
}
  }
/*
 * 矢印アイコン。p-about__link等のSVG(丸背景+シェブロン)と同じ、円+三角の2色構成。
 * 円=--cta-color(文字色)、三角=--cta-bg(ボタン背景色)。文字色は元々背景とコントラストが
 * 効くように決まっているので、色バリエーションが増えても見えなくなる心配が無い。
 */
a.c-ctaBtn::after,
.c-ctaBtn > a::after {
  content: "\25B6";
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  font-size: 8px;
  line-height: 1;
  background-color: var(--cta-color, var(--color-white));
  color: var(--cta-bg, var(--color-black));
  padding-left: 1px;
}
/* ヘッダーナビ内の.c-ctaBtnだけは矢印アイコン無しにする */
.c-gnav .c-ctaBtn > a::after {
  content: none;
}
/*
 * SPナビ内のCTAボタン同士の間隔用(1つ目の下に20px余白ができる)。
 * SWELL標準の.c-listMenu.c-listMenu li{margin:0}(クラス二重指定で詳細度を
 * 上げている)に上書きされるため、こちらも.c-listMenuを含めて詳細度を上げる。
 */
.p-spMenu__nav .c-listMenu li.c-ctaBtn {
  margin-top: 20px;
}
/*
 * SPメニューの.c-ctaBtnは.c-spnav.c-listMenuの中にあり、SWELL標準の
 * border-bottom(.c-spnav a)とホバー時background-color(.c-listMenu a:hover)が
 * 赤いボタンに被って見た目が変わるため打ち消す。ホバー演出も他と違って左から
 * 塗りつぶす::beforeスライドは無しにして、c-arrowBtnと同じ単純なopacity透過にする。
 */
.p-spMenu__nav .c-ctaBtn > a {
  border-bottom: none;
}
.p-spMenu__nav .c-ctaBtn > a::before {
  content: none;
}
.p-spMenu__nav .c-ctaBtn > a:hover {
  background-color: var(--cta-bg, var(--color-black));
  opacity: 0.7;
}
/* SWELL標準のSPメニューのホバー背景色(灰色)は不要なので打ち消す */
.c-listMenu a:hover {
  background-color: transparent;
}
a.c-ctaBtn::before,
.c-ctaBtn > a::before {
  content: "";
  transition: var(--transition);
  background-color: var(--cta-overlay, hsla(0,0%,100%,.1));
  width: 30%;
  opacity: 0;
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  transform: none;
  pointer-events: none;
}
a.c-ctaBtn:hover::before,
.c-ctaBtn > a:hover::before {
  width: 100%;
  opacity: 1;
}
/* 色違いパターン(クラスを付けるだけで色変更、styleを書く必要は無い) */
.c-ctaBtn.-white {
  --cta-bg: var(--color-white);
  --cta-color: var(--color-black);
  --cta-overlay: rgba(0, 0, 0, 0.1);
}
.c-ctaBtn.-red {
  /* 「カラー設定」ページのCTAボタン背景色。未入力ならこのデフォルト赤のまま。
     文字色は視認性のため白固定(2026-08-28) */
  --cta-bg: var(--design-cta-button-bg, #b73737);
  --cta-color: var(--color-white);
  --cta-overlay: rgba(255, 255, 255, 0.2);
}
/*
 * SWELL標準のボタンブロック(is-style-btn_normal、本文中は編集者がブロックエディタで
 * 追加するのでc-ctaBtnを強制しない)。色・アイコンはSWELLのままにしつつ、ホバーの
 * 動き(box-shadowで浮く演出)だけc-arrowBtnと同じ単純なopacity透過に揃える。
 */
.is-style-btn_normal .swell-block-button__link {
  transition: var(--transition);
}
.is-style-btn_normal .swell-block-button__link:hover {
  box-shadow: none;
  opacity: 0.7;
}
/*
 * 「＞」矢印(border技法)。color: currentColorで文字色に自動追従するので、
 * 背景/文字色が呼び出し側ごとに違う(p-about__link、c-arrowBtn等)ボタンでも共通で使い回せる。
 */
.c-arrowBtn__arrow {
  display: inline-block;
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  border-top: 2.5px solid currentColor;
  border-right: 2.5px solid currentColor;
  transform: rotate(45deg);
  margin-right: -2px;
  margin-top: 2px;
}
/*
 * 「もっと見る」系ボタン共通(p-news-link a、p-categorySection__more a)。
 * カテゴリごとの色に関わらず黒で統一。
 */
.c-arrowBtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0 8px;
  padding: 12px 24px;
  border-radius: 8px;
  font-weight: 700;
  font-size: 14px;
  transition: var(--transition);
  background-color: var(--design-button-bg);
  color: var(--design-button-text);
  opacity: 1;
}
/* a:visitedの黒文字指定(front-page.css)より詳細度を上げて維持 */
.c-arrowBtn:visited {
    color: var(--design-button-text);
  }
.c-arrowBtn:hover {
    opacity: 0.7;
  }
/*
 * フッター(footer.php)は全ページ共通のため、ここも全ページで読み込まれる想定
 * (style.css から @import される)。
 */
.c-widget.widget_media_image img{
  width: 100%;
  max-width: 180px !important;
height: auto;
}
.w-beforeFooter{
  background: var(--color-black);
  padding:0px; 
}
.l-footer__widgetArea{
  background: var(--color-black);
  padding: 40px 0;
}
@media(min-width: 768px){
  .l-footer__widgetArea{
    padding: 60px 0;
  }
}
.c-widget__title.-footer{
  margin-bottom: 16px;
  padding-top:0;
}
/*
 * .w-footer__box(SWELL標準)は.l-container(標準コンテナ、他の要素と同じpadding)の中で
 * さらに独自にpadding:1emを持っており、両端の余白が二重になって他要素とズレる。
 * 両端のボックスだけpaddingを外して.l-containerの余白に揃える。
 */
.w-footer__box:first-child{
  padding-left: 0;
}
.w-footer__box:last-child{
  padding-right: 0;
}
/*
 * ウィジェットの自動採番ID(#nav_menu-2等)は作り直すたびに変わるため使わない。
 * ウィジェット種別の共通クラス(.widget_nav_menu)で指定する。
 * ボックスごとに分けたい場合は parts/footer/foot_widget.php で付与している
 * -footer_box1/-footer_box2/-footer_box3 クラスを使う。
 */
.w-footer__box .widget_nav_menu a{
    color: var(--color-white);
  font-size: 14px;
  border-bottom:none;
  padding:8px 0 8px 16px;
  width:fit-content;
}
.w-footer__box .widget_nav_menu a:hover{
  opacity:0.8;
  padding: 8px 0 8px 16px;
}
/* フッターウィジェットナビの外部リンク(target="_blank")に別窓アイコンを付ける。l-footer__navと同じアイコン */
.w-footer__box .widget_nav_menu a[target="_blank"] {
  display: inline-flex;
  align-items: center;
}
.w-footer__box .widget_nav_menu a[target="_blank"]::after {
  content: "";
  display: inline-flex;
  margin-left: 4px;
  background-position: center;
  background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7.914%207.914v5.815h5.815V7.914H7.914zM7.286%206.5a.786.786%200%2000-.786.786v7.071c0%20.434.352.786.786.786h7.071a.786.786%200%2000.786-.786V7.286a.786.786%200%2000-.786-.786H7.286z%22%20fill%3D%22%23fff%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16.07%2015.196V9.643h1.43v5.553a2.304%202.304%200%2001-2.304%202.304H9.643v-1.43h5.553a.874.874%200%2000.874-.874z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E');
  background-repeat: no-repeat;
  background-size: 100% 100%;
  width: 18px;
  height: 18px;
  opacity: 0.6;
}
.w-beforeFooter{
  margin-top: 0;
}
.blank,
.copyright{
  color:var(--color-black);
}
.l-footer__nav a {
  color: var(--color-black);
}
/*
 * l-footer__nav(利用規約・運営会社など)の外部リンク(target="_blank")に
 * 別窓アイコンを付ける。site-list-componentで使っているのと同じアイコン・演出(ホバーで反転)。
 */
.l-footer__nav a[target="_blank"] {
  display: inline-flex;
  align-items: center;
}
.l-footer__nav a[target="_blank"]::after {
  content: "";
  display: inline-flex;
  margin-left: 4px;
  background-position: center;
  background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7.914%207.914v5.815h5.815V7.914H7.914zM7.286%206.5a.786.786%200%2000-.786.786v7.071c0%20.434.352.786.786.786h7.071a.786.786%200%2000.786-.786V7.286a.786.786%200%2000-.786-.786H7.286z%22%20fill%3D%22%23000%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M16.07%2015.196V9.643h1.43v5.553a2.304%202.304%200%2001-2.304%202.304H9.643v-1.43h5.553a.874.874%200%2000.874-.874z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E');
  background-repeat: no-repeat;
  background-size: 100% 100%;
  width: 18px;
  height: 18px;
  opacity: 0.6;
}
/* フッター直前のCTA(ACFオプション group_63d49e4121044、全ページ共通) */
.p-footerCta {
  background: var(--design-cta-bg);
  color: var(--design-cta-text);
  width: 100%;
  margin: 0 auto;
  padding: 40px 16px;
  text-align: center;
}
@media (min-width: 768px) {
.p-footerCta {
      padding: 80px 16px
}  
    }
.p-footerCta__inner {
  max-width: 980px;
  margin: 0 auto;
}
@media (min-width: 768px) {
.p-footerCta__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 40px;
    text-align: left
}
  }
.p-footerCta__title {
  font-size: clamp(24px, 3vw, 32px);
  line-height: 1.4;
  position: relative;
  padding-bottom: 16px;
  margin-bottom: 30px;
  text-shadow: var(--design-shared-text-shadow-title);
}
@media (min-width: 768px) {
.p-footerCta__title {
    grid-column: 1 / -1;
    text-align: center;
      margin-bottom: 40px
}
  }
.p-footerCta__title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 2em;
  height: 2px;
  background: var(--design-cta-text);
}
.p-footerCta__title br{
  display:inline;
}
@media (min-width: 768px) {
.p-footerCta__title br{
    display:none
}
  }
.p-footerCta__desc {
  font-size: 14px;
  text-shadow: var(--design-shared-text-shadow-desc);
  font-weight:700;
  line-height: 1.8;
}
@media (min-width: 768px) {
.p-footerCta__desc {
    font-size: 16px;
    grid-column: 1
}
  }
.p-footerCta__btns {
  margin-top: 24px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 16px;
}
@media (min-width: 768px) {
.p-footerCta__btns {
    grid-column: 2;
    margin-top: 0;
    gap: 24px;
    max-width: 400px
}
  }
/* Pマーク(pmark.js側で画像挿入は処理済み。本番にも無かったサイズ調整だけこちらで追加) */
.pmark-inner img {
  width: 80px;
  height: 80px;
  -o-object-fit: contain;
  object-fit: contain;
  display: block;
}
/*
 * SWELL独自の「カラム」ブロック(.swell-block-column、標準のwp-block-columnではない)内で
 * is-style-crease(折り返しメモ風ボックス)を使うと、カラム自体の高さは揃っても中の
 * ボックスは自身のコンテンツ分の高さしかない。flex-direction:columnにして
 * is-style-creaseをflex:1で伸ばし、カラムの高さいっぱいに揃える。
 */
.swell-block-column {
  display: flex;
  flex-direction: column;
}
.swell-block-column .is-style-crease {
  flex: 1;
  box-sizing: border-box;
}
/*
 * 見出しは上固定のまま、本文の文字量差はボタンの位置(下揃え)で吸収する。
 * inner-containerを高さ100%のflex columnにし、ボタンだけmargin-top:autoで下へ押し出す。
 */
.swell-block-column .is-style-crease .wp-block-group__inner-container {
  display: flex;
  flex-direction: column;
  height: 100%;
}
.swell-block-column .is-style-crease .swell-block-button {
  margin-top: auto;
}
/*
 * 記事カード(カセット)共通パーツ用CSS。parts/news-cassette.phpやSWELL標準の投稿一覧
 * (.p-postList)で共通に効く。必要なページの入口CSS側で@importして使う(ビルド対象外)。
 */
/*
 * SWELL標準はサムネイル下にpadding-top:1emが付くが、こちらは.c-postThumb側に
 * margin-bottom:16pxを付けているため両方効いて余白が開きすぎる。SWELL側を消す。
 */
.-type-big .p-postList__body,
.-type-card .p-postList__body {
  padding-top: 0;
}
/*
 * SWELL標準の.-type-card(PC3カラム)は親の負のマージン(margin-left/right:-.5em)+
 * 子のpadding(0 .75em)でガター(隙間)を作る方式だが、こちらで別のpaddingを上書きすると
 * ズレてコンテンツ幅(924px)にきっちり収まらなくなるため、gapベースに置き換える。
 * 縦方向はSWELL標準の負のマージン方式(item margin-bottom)のままにして、横だけ変更する。
 */
@media (min-width: 768px) {
  .p-postList.-type-card {
    margin-left: 0;
    margin-right: 0;
    column-gap: 30px;
  }
  .-pc-col3 .p-postList__item,
  .-sidebar-on .-type-card.-pc-col3 .p-postList__item {
    padding: 0;
    width: calc((100% - 30px * 2) / 3);
    margin-bottom: 3em;
  }

  /*
   * 関連記事(p-relatedPosts)は-pc-col3/-sp-col1が付かずSWELL標準の2カラム(width:50%)の
   * ままになるため、他のカセット一覧と同じ3カラムgapに揃える。
   */
  .p-relatedPosts.-type-card {
    margin-left: 0;
    margin-right: 0;
    gap: 30px;
  }
  .p-relatedPosts.-type-card .p-postList__item {
    padding: 0;
    width: calc((100% - 30px * 2) / 3);
  }
}
/* カテゴリラベル(親・子)のピル表示 */
.p-postList__cat.icon-folder::before,
.c-postTimes__posted.icon-posted::before,
.c-categoryList:before {
  content: none;
}
.p-postList__cat {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  background-color: var(--color-light-gray); /* 親カテゴリのACF(category_color/category_font_color)が設定されていればそちらが優先される。未設定時はsingleページの.c-categoryList__linkと同じ薄いグレーに統一(2026-08-27) */
  color: var(--color-black);
  opacity: 1;
}
@media (min-width: 768px) {
.p-postList__cat {
    padding: 4px 8px
}
  }
.p-postList__cat.u-thin.icon-folder.-child {
  background-color: var(--color-light-gray);
  color: #555555;
}
.c-postTimes__posted {
  color: var(--color-black);
  font-size: clamp(12px, 1.3vw, 14px);
  font-weight: 700;
}
/* 表示順: 親カテゴリ→子カテゴリ→日付 */
.p-postList__meta {
  gap: 4px;
  margin-top: 8px;
}
@media (min-width: 768px) {
.p-postList__meta {
    gap: 8px
}
  }
.p-postList__meta .p-postList__cat {
  order: 1;
  margin-right: 0;
}
.p-postList__meta .p-postList__times {
  order: 2;
  margin-left: auto;
}
/* サムネイルホバー時に中央へ「詳細」ピルを表示(誤タップ防止のpointer-events設定は下部参照) */
/*
 * position:relative + overflow:hiddenでborder-radiusを効かせる。子img側にGPUレイヤー化
 * (transform:translateZ(0))を付けると、親も同じレイヤーに乗せないと角丸クリップが
 * 効かなくなる(ホバー時に角が消える)ため、ここにもtranslateZ(0)を付けている。
 */
.c-postThumb {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 12px;
  transform: translateZ(0);
  box-shadow: var(--swl-box_shadow);
}
/* p-postList__thumb(横並びリスト型のサムネ)はサイズが小さいため、8pxだと丸すぎて見える。半径を落とす */
.p-postList__thumb .c-postThumb {
  border-radius: 4px;
}
/*
 * imgはデフォルトでinline要素扱いのため、行の下端(ディセンダー分)の隙間が
 * .c-postThumb(画像の枠)の下に数px残ってしまう。display:blockにして解消する。
 * marginは.c-postThumb側に付ける(imgに付けるとoverflow:hiddenの箱の内側に
 * 空白ができ、角丸のクリップ位置が画像の下端とズレてしまうため)。
 */
.c-postThumb img {
  display: block;
  width: 100%;
  transition: transform .3s ease;
  /* スケール時の境界のガタつき防止のため、GPUレイヤーに固定しておく */
  backface-visibility: hidden;
  transform: translateZ(0);
}
.p-postList__link:hover .c-postThumb img,
.p-news__grid-link:hover .c-postThumb img {
  transform: scale(1.05) translateZ(0);
}
.c-postThumb::after {
  content: "詳細";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: var(--color-white);
  color: var(--color-black);
  padding: 0.8em;
  border-radius: 50px;
  opacity: 0;
  transition: opacity .3s ease;
  pointer-events: none;
  z-index: 2;
  font-size: 12px;
  letter-spacing: 2px;
  font-weight: 700;
  width: 90px;
  text-align: center;
}
.p-postList__link,
.p-news__grid-link {
  pointer-events: none;
}
/* 本文ボックス全体ではなく、サムネイル・タイトル・抜粋・タグを個別にホバー/タップ範囲にする(余白の誤タップ防止) */
.p-postList__link .p-postList__thumb,
.p-postList__link .p-postList__title,
.p-postList__link .p-postList__excerpt,
.p-postList__link .p-postList__meta,
.p-news__grid-link .p-news__grid-thumb,
.p-news__grid-link .p-news__grid-title,
.p-news__grid-link .p-postList__meta {
  pointer-events: auto;
}
.p-postList__link:hover .c-postThumb::after,
.p-news__grid-link:hover .c-postThumb::after {
  opacity: 1;
}
/* タイトル・カテゴリラベル・日付はホバー時に透過させて、クリック可能なことを示す */
.p-postList__title,
.p-news__grid-title,
.p-postList__meta {
  transition: opacity .3s ease;
}
.p-postList__link:hover .p-postList__title,
.p-postList__link:hover .p-postList__meta,
.p-news__grid-link:hover .p-news__grid-title,
.p-news__grid-link:hover .p-postList__meta {
  opacity: 0.7;
}
/* グリッドカセット: 画像とタイトルの表示順を入れ替える(HTML順はそのまま、見た目だけ反転) */
.p-news__grid-link {
  display: flex;
  flex-direction: column;
}
.p-news__grid-body {
  color: var(--color-black);
  font-size: 14px;
}
.p-postList .p-postList__title{
  margin-bottom: 8px;
}
/* 2行で省略するのはタイトルだけ(bodyごとだとカテゴリ・日付まで隠れてしまうため) */
.p-news__grid-title {
  overflow: hidden;
  display: -webkit-box;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size:clamp(14px, 1.5vw, 16px);
  color:var(--color-black);
}
/*
 * 記事タイトル下・アーカイブの親子カテゴリナビ(.c-categoryList__link): カセットのラベル(.p-postList__cat)とスタイルを揃える。
 * 子カテゴリはACFの文字色がvar(--color-gray)になるため、背景はvar(--color-light-gray)にして潰れないようにする。
 * SWELL標準のmodules/parts/top-title-area.css(.l-topTitleArea .c-categoryList__link)が同じ詳細度で
 * 読み込み順次第で勝ってしまい、single記事だけ見た目が変わる事故があったため、.l-topTitleArea配下も
 * 明示的に指定して詳細度で確実に上書きする(2026-08-27)。
 */
.c-categoryList__link:not(.-current),
.l-topTitleArea .c-categoryList__link:not(.-current) {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  background-color: var(--color-light-gray);
  color: var(--color-black);
  border: none;
  /* SWELL標準のhov-flash-up(box-shadowのtransition+ホバー時1秒のflashアニメーション)を
     打ち消す。カテゴリラベルは一瞬で色が変わるだけでよく、遅れて見える演出が不要なため */
  transition: none;
}
.c-categoryList__link:not(.-current):hover {
  filter: saturate(120%);
  animation: none;
}
/*
 * カセットのページネーション一覧用グリッド(/contents/、/search/ で共通利用、横スクロールはしない)。
 * SWELL標準カテゴリアーカイブ(.p-postList.-type-card)と同じくgapベースに揃えている。
 */
.p-cassetteGrid {
  display: flex;
  flex-wrap: wrap;
  row-gap: 60px;
}
.p-cassetteGrid > .p-news__grid-item {
  width: 100%;
}
@media (min-width: 768px) {
  .p-cassetteGrid {
    column-gap: 32px;
  }

  .p-cassetteGrid > .p-news__grid-item {
    width: calc((100% - 32px * 2) / 3);
  }
}
/*
 * ============================================================
 * 【新規サイト構築の場合】このファイルとblocks/フォルダは丸ごと削除してよい。
 * ============================================================
 *
 * これは「既存サイトをSWELLへ移行する」ケース専用のCSSで、旧テーマ独自の
 * Gutenbergブロック(article-01/blogcard/table-01/feature-01)を過去記事で使っていた
 * 場合に、SWELL移行後も表示が崩れないようにするための互換スタイル。
 *
 * 対応するPHP側の登録は functions/functions-blocks.php + blocks/{ブロック名}/ 。
 * 4ブロックとも旧テーマ間で中身が同一(byte-identical)なので、個別に使用状況を見て
 * 移植を判断するのではなく、移行案件では最初から4つまるごと標準搭載しておく方針にしている
 * (差分ゼロ・移植し忘れ事故を防止するため)。SWELL Migrationプラグインの
 * 「5. 本文で使われているブロックの検出」で実際の使用件数が0件と分かった時点で、
 * そのサイトからは該当ブロックのフォルダ・CSSを間引いてよい(急いで消す必要はない)。
 *
 * ゼロから新規に作るサイト(移行ではない)には旧記事も旧テーマも存在しないため、
 * このCSS・blocks/フォルダ・functions-blocks.phpのrequire行は全て不要。
 */
/* --- article-01(「この記事を読んでわかること」等の強調ボックス) --- */
.block-article-01-section {
  background: var(--color-white);
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 16px;
  margin-top: 32px;
}
@media (min-width: 768px) {
.block-article-01-section {
    padding: 32px
}
  }
.block-article-01-inner {
  display: flex;
  flex-direction: column;
  gap: 12px 0;
}
.block-article-01-title {
  font-size: 16px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 0 8px;
  color: #0E63A5;
}
@media (min-width: 768px) {
.block-article-01-title {
    font-size: 18px
}
  }
.block-article-01-title svg {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}
.block-article-01-title svg path {
  fill: #0E63A5;
}
.block-article-01-contents > * {
  margin-top: 0 !important;
}
.block-article-01-contents ul {
  display: flex;
  flex-direction: column;
  gap: 3px 0;
}
@media (min-width: 768px) {
.block-article-01-contents ul {
    gap: 5px 0
}
  }
.block-article-01-contents ul li {
  margin-top: 0 !important;
  line-height: 1.6;
  font-size: 14px;
  list-style: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjA0MTk5IDguNzVMMi42NjY5OSAxMC4xMjVMNi43OTE5OSAxNC4yNUwxMy42NjcgNy4zNzVMMTIuMjkyIDZMNi43OTE5OSAxMS41TDQuMDQxOTkgOC43NVoiIGZpbGw9IiMwRTYzQTUiLz4KPC9zdmc+");
  list-style-position: inside;
}
.block-article-01-contents ul li::marker {
  line-height: 1;
  font-size: 10px;
}
/* --- blogcard(画像・タイトル・説明文を手入力するタイプのブログカード) --- */
.blogcard {
  transition: var(--transition);
  position: relative;
  background: #F5F7FA;
  border: 1px solid #E6E9ED;
  border-radius: 4px;
  overflow: hidden;
  margin-top: 32px;
}
.blogcard:hover {
  background: #edf0f4;
}
.blogcard > div {
  margin: 0;
}
.blogcard-link {
  position: absolute;
  width: 100%;
  height: 100%;
}
.blogcard-columns {
  display: flex;
}
.blogcard-column__image-container {
  background: var(--color-white);
  min-width: 130px;
  width: 130px;
  overflow: hidden;
}
@media (min-width: 768px) {
.blogcard-column__image-container {
    min-width: 190px;
    width: 190px
}
  }
.blogcard-column__image-wrap {
  height: 100%;
}
.blogcard-column__image-wrap img {
  width: 100%;
  height: 100% !important;
  object-fit: cover;
  object-position: center center;
}
.blogcard-column__meta {
  padding: 16px;
  width: 100%;
  overflow: hidden;
}
@media (min-width: 768px) {
.blogcard-column__meta {
    padding: 24px 32px
}
  }
.blogcard-column__meta-title {
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  margin: 0;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
@media (min-width: 768px) {
.blogcard-column__meta-title {
    font-size: 18px;
    line-height: 1.45
}
  }
.blogcard-column__meta-description {
  margin: 12px 0 0 0;
  font-size: 12px;
  color: var(--color-gray);
  line-height: 1.5;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
@media (min-width: 768px) {
.blogcard-column__meta-description {
    overflow: visible;
    display: block
}
  }
.blogcard-column__meta-description br {
  display: none;
}
@media (min-width: 768px) {
.blogcard-column__meta-description br {
    display: inline
}
  }
.blogcard-column__meta-url {
  margin: 6px 0 0 0;
  font-size: 9px;
  color: var(--color-gray);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (min-width: 768px) {
.blogcard-column__meta-url {
    margin: 12px 0 0 0;
    font-size: 10px
}
  }
/* --- table-01(見出し・中身の2列テーブル) --- */
.table-01__tr {
  margin: 0;
  display: flex;
  justify-content: flex-start;
  text-align: justify;
  position: relative;
  border-bottom: 1px solid var(--color-light-gray);
}
.table-01__th {
  max-width: 120px;
  width: 100%;
  font-weight: 700;
  padding-top: 32px;
  padding-bottom: 32px;
  padding-right: 16px;
  position: relative;
}
.table-01__th::before {
  content: '';
  display: block;
  width: 40px;
  height: 1px;
  position: absolute;
  bottom: -1px;
  left: 0;
  background: var(--color-black);
}
@media (min-width: 768px) {
  .table-01__th {
    max-width: 240px;
    padding-right: 24px;
  }
}
.table-01__td {
  margin-top: 0;
  padding-top: 32px;
  padding-bottom: 32px;
  max-width: 100%;
  width: 100%;
  color: var(--color-gray);
  position: relative;
}
/* --- feature-01(画像+タイトル+説明文のリピーター、「特徴」紹介用) --- */
.block-features-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(370px, 1fr));
  gap: 48px 0;
  margin: 0 -16px;
}
.block-features-item {
  width: 100%;
  padding: 0 16px;
}
.features-image {
  background: #F5F7FA;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  margin: 0;
}
.features-image img {
  object-fit: cover;
}
.features-body {
  text-align: justify;
  margin: 24px 0 0 0;
}
.features-body-title {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  margin: 0 !important;
  background: none;
  padding: 0 !important;
  border: none !important;
}
.features-body-info {
  margin: 12px 0 0 0 !important;
  color: var(--color-gray);
  font-size: 14px;
}
/*
 * 監修者情報(supervisor.php)のスタイル。本番の実記事で配信されているインラインスタイルを移植
 * (ローカルAPIはスタイル無しのテスト用HTMLを返すため、ここで用意しないと崩れる)。
 */
.supervisor {
  margin: 60px 0 20px;
  padding: 30px 20px;
  border: 1px solid #e5e7eb;
  border-radius: 4px;
}
@media (min-width: 768px) {
  .supervisor {
    margin: 60px 0 0;
    padding: 30px;
  }
}
.supervisor p {
  margin-top: 0 !important;
}
.supervisor__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  border-bottom: 1px dotted #ccc;
  margin-bottom: 16px;
  padding-bottom: 16px;
}
@media (min-width: 768px) {
  .supervisor__inner {
    flex-direction: row;
    align-items: center;
    text-align: left;
    gap: 30px;
  }
}
.supervisor__visual {
  flex-shrink: 0;
}
.supervisor__photo {
  width: 120px;
  height: 120px;
  object-fit: cover;
  border-radius: 8px;
}
.supervisor__header-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
@media (min-width: 768px) {
  .supervisor__header-inner {
    flex-direction: row;
    align-items: center;
    margin-bottom: 20px;
  }
}
.supervisor__label {
  display: inline-block;
  font-size: 12px;
  font-weight: bold;
  padding: 1px 10px;
  border-radius: 2px;
  background-color: #585858;
  color: var(--color-white);
  line-height: 1.6;
  margin-bottom: 0;
}
/*
 * SWELL標準の .post_content h2:where(...) 装飾を打ち消す。
 * このルールは margin/font-size だけでなく、border-left(装飾線)・background(斜めストライプ)も
 * 付けてくるので、それらも合わせてリセットする必要がある。
 */
.post_content .supervisor__name {
  font-size: 24px;
  font-weight: bold;
  margin: 0 !important;
  margin-top: 0 !important;
  padding: 0 !important;
  color: var(--color-black);
  line-height: 1.2;
  border-bottom: none !important;
  border-left: none !important;
  background: none !important;
}
.supervisor__name::before,
.supervisor__name::after {
  content: none !important;
  display: none !important;
  border-bottom: none !important;
}
.supervisor__title {
  font-size: 12px;
  font-weight: bold;
  color: #585858;
  margin-top: 8px;
}
.supervisor__text {
  font-size: 12px;
  line-height: 170%;
  color: var(--color-black);
  margin: 0;
}
@media (min-width: 768px) {
  .supervisor__text {
    font-size: 14px;
  }
}
/*
 * SWELL標準のサイドバー幅(--swl-sidebar_width)・本文との隙間(--swl-sidebar_margin)は
 * カスタマイザーに設定項目が無く、1200px以上で304px/52px固定(それ未満は280px/24px)。
 * ここで上書きする(SWELL本体のCSSより後に読み込まれるので値が勝つ)。
 *
 * NOTE: article_sizeはSWELL仕様上「サイドバー無し(1カラム)」の時だけ効く設定で、
 * サイドバーがある2カラムの時は無視される(.-sidebar-on .l-mainContent{max-width:100%}が
 * article_sizeのmax-widthを打ち消すため)。2カラム時の本文の見た目幅は
 * sidebar_width/sidebar_marginの2つだけで決まる(container_size - sidebar_width -
 * sidebar_margin = 本文幅)。以前ここをmax-width上書き+margin:autoで無理に制御しようと
 * したところ、justify-content:space-betweenの余白配分と衝突し、左右非対称に崩れる
 * 不具合が起きたため、素直にこの2つの変数だけで調整する方針にした。
 */
@media (min-width: 1200px) {
  :root {
    --swl-sidebar_width: 320px;
    --swl-sidebar_margin: 80px;
  }
}
/*
 * SWELL標準は960px以上で.post_contentに左右16pxのパディングを入れる(--swl-pad_post_content)。
 * これがあると本文内の画像の実際の表示幅(article_size-32px)と、srcset選択の基準になる
 * article_size(パディング差し引き前)がズレてしまい、本来より一回り大きい画像が読み込まれる
 * (Lighthouseの「画像を適切なサイズに」の減点要因になりうる)。デスクトップサイズでは
 * 画像が縁からわずかに離れているだけの見た目の違いなので、実利を優先して0にする。
 */
@media (min-width: 960px) {
  :root {
    --swl-pad_post_content: 0px;
  }
}
/* SWELL標準は.widget_search .c-widget__title{display:none}で見出しを消しているが、目立たないので表示する */
.widget_search .c-widget__title {
  display: block;
}
.widget_swell_popular_posts {
  margin-bottom:40px;
}
.widget_swell_popular_posts .p-postList__title{
  margin-bottom: 8px;
    display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
.c-widget .-type-list .p-postList__item{
  margin-bottom: 30px;
}
/* サイドバー最上部・最下部のACFバナー(o_sidebar_top_bnr/o_sidebar_bottom_bnr) */
.p-sidebarBnr__item {
  display: block;
  margin-bottom: 30px;
}
.p-sidebarBnr__img {
  width: 100%;
}
/* サイドバーのバナー画像にbox-shadow(ACF + ウィジェットで追加される画像/カスタムHTMLの2種)。ランキング等のサムネは対象外 */
.l-sidebar .p-sidebarBnr__img,
.l-sidebar .widget_media_image img,
.l-sidebar .widget_custom_html img {
  opacity:1;
 transition: opacity .3s ease;
}
.l-sidebar .p-sidebarBnr__img:hover, .l-sidebar .widget_media_image img:hover, .l-sidebar .widget_custom_html img:hover {
    opacity:0.8;

  }
.l-sidebar .c-postThumb::after{
width: 60px;
padding:0.4em;
}
.-w-ranking .p-postList__item:before{
  font-weight: 700;
}
.-w-ranking.-type-list .p-postList__item:before{
  left: -2px;
  top: -2px;
}
/* 目次の下にあるバナー(750px)と横幅を合わせる */
#main_content .p-toc {
  max-width: 750px;
}
ul.is-style-index li::before{
  display: none;
}
.p-articleMetas__termList{
  gap:1em;
}
.hov-flash-up:hover{
box-shadow:none;
 }
/* h2(clamp最大23px)より必ず大きくなるよう、下限・伸び率とも上回る値にしている */
.c-postTitle__ttl{
  font-size: clamp(24px, 6vw, 30px);
  line-height: clamp(1.4em, 2.5vw, 1.6em);
 }
/*
 * SWELL標準は16px基準でh2=1.2em(≒19px)・h3=1.1em(≒17.6px)と本文とほぼ変わらず、
 * スマホでは見出しが小さく感じるためclampで底上げする(PC幅はSWELL標準の1.4em/1.3emに近い値で頭打ち)。
 */
.post_content h2{
  font-size: clamp(20px, 5.5vw, 23px);
}
.post_content h3{
  font-size: clamp(18px, 5vw, 21px);
}
.post_content h4,
.post_content h5{
  font-size: 16px;
}
/* SWELL標準はカスタマイザー変数(--swl-img_shadow)でアイキャッチにシャドーが付くが、消す */
.p-articleThumb__img,
.p-articleThumb__youtube{
  box-shadow: none;
}
