@charset "utf-8";




/*リセットCSS（sanitize.css）の読み込み
---------------------------------------------------------------------------*/
@import url("https://unpkg.com/sanitize.css");

/*slick.cssの読み込み
---------------------------------------------------------------------------*/
@import url("https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css");

/*Font Awesomeの読み込み
---------------------------------------------------------------------------*/
@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css");

/*Google Fontsの読み込み
---------------------------------------------------------------------------*/
@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic&display=swap');

/*テンプレート専用cssファイルの読み込み
---------------------------------------------------------------------------*/
@import url("animation.css");
@import url("inview.css");





/*全体の設定
---------------------------------------------------------------------------*/
html,body {
	margin: 0;padding: 0;
	height: 100%;
	font-size: 13px;	/*基準となるフォントサイズ。下の方にある「画面幅900px以上」で基準を大きなサイズに再設定しています。*/
}

body {
	font-family: 'BIZ UDPGothic', "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, Osaka, "ＭＳ Ｐゴシック", "MS PGothic", sans-serif;	/*フォント種類*/
	-webkit-text-size-adjust: none;
	background: #fff;	/*背景色*/
	color: #555;		/*全体の文字色*/
	line-height: 2;		/*行間*/
	overflow-x: hidden;
}

/*リセット*/
figure {margin: 0;}
dd {margin: 0;}
nav {margin: 0;padding: 0;}

/*table全般の設定*/
table {border-collapse:collapse;}

/*画像全般の設定*/
img {border: none;max-width: 100%;height: auto;vertical-align: middle;}

/*videoタグ*/
video {max-width: 100%;}

/*iframeタグ*/
iframe {width: 100%;}

/*ul,olタグ*/
ul, ol {margin-bottom: 30px;}


/*リンクテキスト全般の設定
---------------------------------------------------------------------------*/
a {
	color: #57524b;	/*文字色*/
	transition: 0.3s;
}

a:hover {
	opacity: 0.8;	/*マウスオン時に80%の透明度にする*/
}


/*sectionタグと、詳細ページの共通設定
---------------------------------------------------------------------------*/
section,
main > article {
	margin: 0 auto;
	max-width: 1300px;	/*最大幅。これ以上広がらない。*/
	padding: 2% 5%;		/*ボックス内の余白*/
}


/*containerブロック
---------------------------------------------------------------------------*/
#container {
	height: 100%;
	display: flex;					/*flexボックスを使う指定*/
	flex-direction: column;			/*子要素を縦並びにする*/
	justify-content: space-between;	/*並びかたの種類の指定*/
}


/*header（ロゴなどが入った最上段のブロック）
---------------------------------------------------------------------------*/
/*ヘッダーブロック*/
header {
	display: flex;				/*flexボックスを使う指定*/
	align-items: center;		/*垂直揃えの指定。上下中央に配置されるように。*/
	justify-content: flex-end;	/*並びかたの種類の指定*/
	background: #111;			/*背景色*/
	color: #fff;				/*文字色*/
	position: relative; z-index: 1;
}

/*ヘッダーのリンクテキストの文字色*/
header a {
	color: #fff;
}

/*ロゴ画像*/
header #logo img {display: block;}
header #logo {
	margin: 0;
	background: linear-gradient(150deg, #ff0e0e, #770000);/*背景グラデーションdegは角度。*/
	width: 150px;		/*ロゴの幅*/
	padding: 40px 20px;	/*ロゴ内の余白。ロゴ画像と背景グラデーションの余白です。*/
	position: absolute;
	left: 3%;	/*ヘッダーの左からの配置場所の指定*/
	top: 0px;	/*ヘッダーの上からの配置場所の指定*/
	box-shadow: 0px 0px 30px rgba(119,0,0,0.2);	/*ボックスの影。右へ、下へ、ぼかし幅の順番。rgbaの数字は、最初の３つがRGBでの色指定で最後の小数点が透明度の指定。*/
}


/*menubarブロック初期設定
---------------------------------------------------------------------------*/
#menubar ul {list-style: none;margin: 0;padding: 0;}

/*メニューを非表示にしておく*/
#menubar {display: none;}

/*開閉用のスタイル*/
#menubar.db {display: block;}
#menubar.dn {display: none;}

/*メニュー１個あたりの設定*/
#menubar a {
	display: block;text-decoration: none;
	text-align: center;		/*テキストを中央に*/
	letter-spacing: 0.1em;	/*文字間隔を少しだけ広くする指定*/
}


/*小さな端末時にアイコン類だけ横並びにする
---------------------------------------------------------------------------*/
.s #menubar.db li.inline,
.s #menubar.db li.inline a {
	display: inline-block;
}


/*小さな端末用の開閉ブロック設定
---------------------------------------------------------------------------*/
/*メニューブロック設定*/
.s #menubar.db {
	position: fixed;overflow: auto;z-index: 100;
	left: 0px;top: 0px;
	width: 100%;
	height: 100%;
	padding: 70px 0;	/*上下、左右へのブロック内の余白*/
	background: rgba(0,0,0,0.9);		/*背景色。0,0,0は黒の事で0.9は色が90%出た状態の事。*/
	color: #fff;						/*文字色*/
	animation: animation1 0.2s both;	/*animation.cssの、animation1を実行する。0.2sは0.2秒の事。*/
	text-align: center;
}

/*メニュー１個あたりの設定*/
.s #menubar.db a {
	color: #fff;	/*文字色*/
	padding: 20px;	/*メニュー内の余白*/
}


/*ドロップダウンメニュー
---------------------------------------------------------------------------*/
/*ドロップダウンを非表示にしておく*/
#menubar .ddmenu_parent ul {
	display: none;
}

/*ドロップダウンメニューを持つ親に矢印アイコンをつける設定*/
a.ddmenu::before {
	font-family: "Font Awesome 5 Free";	/*Font Awesomeを使う指定*/
	content: "\f103";		/*使いたいアイコン名をここで指定。Font Awesomeに記載されています。詳しくは当テンプレートのマニュアルを読んで下さい。*/
	font-weight: bold;		/*この手の設定がないとアイコンが出ない場合があります*/
	margin-right: 0.5em;	/*アイコンとテキストとの間に空けるスペース*/
}

/*ドロップダウンを持つ親のマウスオン時にリンク用のカーソルでなくデフォルトの矢印を出す*/
a.ddmenu {
	cursor: default;
}

/*ドロップダウンメニュー１個あたりの設定*/
.ddmenu_parent ul a {
	background: rgba(0,0,0,0.8);	/*背景色。0,0,0は黒の事で0.8は色が80%出た状態の事。*/
}


/*３本バー（ハンバーガー）アイコン設定
---------------------------------------------------------------------------*/
/*開閉用のスタイル*/
#menubar_hdr.db {display: flex;}
#menubar_hdr.dn {display: none;}

/*３本バーを囲むブロック*/
#menubar_hdr {
	position: fixed;z-index: 101;
	cursor: pointer;
	right: 3%;			/*左からの配置場所指定*/
	top: 0px;			/*上からの配置場所指定*/
	padding: 16px 14px;	/*上下、左右への余白*/
	width: 52px;		/*幅（３本バーが出ている場合の幅になります）*/
	height: 52px;		/*高さ*/
	display: flex;					/*flexボックスを使う指定*/
	flex-direction: column;			/*子要素（３本バー）を縦並びにする*/
	justify-content: space-between;	/*並びかたの種類の指定*/
	order: 0;						/*表示させる順番。「#menubar_hdr」「#logo」「#header-icon」それぞれに指定しており、数字の「小さな順」に左から並びます。*/
	background: rgba(0,0,0,0.5);	/*背景色*/
}

/*バー１本あたりの設定*/
#menubar_hdr span {
	display: block;
	transition: 0.3s;	/*アニメーションにかける時間。0.3秒。*/
	border-top: 2px solid #fff;	/*線の幅、線種、色*/
}

/*×印が出ている状態の設定。※１本目および２本目のバーの共通設定。*/
#menubar_hdr.ham span:nth-of-type(1),
#menubar_hdr.ham span:nth-of-type(3) {
	transform-origin: center center;	/*変形の起点。センターに。*/
	width: 26px;						/*バーの幅*/
}

/*×印が出ている状態の設定。※１本目のバー。*/
#menubar_hdr.ham span:nth-of-type(1){
	transform: rotate(45deg) translate(6px, 7px);	/*回転45°と、X軸Y軸への移動距離の指定*/
}

/*×印が出ている状態の設定。※３本目のバー。*/
#menubar_hdr.ham span:nth-of-type(3){
	transform: rotate(-45deg) translate(6px, -7px);	/*回転-45°と、X軸Y軸への移動距離の指定*/
}

/*×印が出ている状態の設定。※２本目のバー。*/
#menubar_hdr.ham span:nth-of-type(2){
	display: none;	/*２本目は使わないので非表示にする*/
}


/*mainブロック設定
---------------------------------------------------------------------------*/
/*mainブロックの設定*/
main {	
	flex: 1;
}

/*トップページ以外のページのmain上部に余白をとる*/
body:not(.home) main {
	padding-top: 80px;
}

/*mainブロック内のh2タグ*/
main h2 {
	margin-bottom: 30px;	/*下に空けるスペース*/
	position: relative;		/*アニメーションに必要な設定*/
	letter-spacing: 0.1em;	/*文字間隔を少しだけ広くとる設定*/
	border-bottom: 3px solid #f5f5f5;	/*デフォルトのラインの色。下の「bottom」と「height」の３ヶ所の数字部分を合わせる*/
}

/*下線スタイル*/
main h2 .uline {
	display: inline-block;position: relative;
	padding: 10px 20px;	/*h2タグ内の余白。上下、左右への順番。*/
	bottom: -3px;		/*上の「border-bottom」と下の「height」の３ヶ所の数字部分を合わせる。※この行だけマイナスをつけるように。*/
}
main h2 .uline::before {
	content: "";position: absolute;bottom: 0px;left: 0px;width: 100%;
	height: 3px;	/*ラインの高さ。上の「border-bottom」と「bottom」の３ヶ所の数字部分を合わせる*/
	background: #111;			/*アニメーション時のラインの色*/
	transition: 1s 0.5s;		/*1sはアニメーションの実行時間は1秒。0.5秒遅れてスタートする指定。*/
	transform: scaleX(0);		/*幅。最初は0にして見えなくしておく。*/
	transform-origin: left top;	/*線の出現起点が左からになるように。中央からの出現がよければこの１行削除。*/
}
main h2.linestyle .uline::before {
	transform: scaleX(1);
}

/*mainブロック内のh3タグ*/
main h3 {
	margin-bottom: 20px;	/*下に空けるスペース*/
}

/*mainブロックのh3タグの冒頭の装飾設定*/
main h3::before {
	display: inline-block;
	content: "■";			/*この記号を表示させる*/
	transform: scale(0.5);	/*実寸の50%に縮小する指定*/
	padding-right: 10px;	/*記号とテキストとの間にとる余白*/
	margin-left: -0.4em;	/*少しだけ左側に移動する*/
}

/*mainブロックのpタグ*/
main p {
	margin: 0 20px 30px;	/*上、左右、下へ空けるスペース*/
}


/*フッター設定
---------------------------------------------------------------------------*/
footer small {font-size: 100%;}

footer {
	font-size: 0.7rem;		/*文字サイズ*/
	text-align: center;		/*内容をセンタリング*/
	padding: 20px;			/*ボックス内の余白*/
	background: #111;		/*背景色*/
	color: #fff;			/*文字色*/
}

/*リンクテキスト*/
footer a {text-decoration: none;color: #fff;}

/*著作部分*/
footer .pr {display: block;}


/*フッターメニュー
---------------------------------------------------------------------------*/
/*メニューブロック全体*/
#footermenu {
	margin: 0;padding: 0;
	margin-bottom: 15px;	/*下に空けるスペース*/
}

/*メニュー１個あたり*/
#footermenu li {
	display: inline-block;	/*横並びにする*/
	padding: 0 10px;		/*上下、左右への余白*/
	font-size: 1.2em;
}


/*スライドショー（slickを使用）
---------------------------------------------------------------------------*/
.mainimg {
	position: relative;
}

/*丸いページナビボタン全体を囲むブロック*/
ul.slick-dots {
	margin:0;padding: 0;
	line-height: 1;
	width: 100%;
	text-align: center;
	position: absolute;
	bottom: 10px;	/*下からの配置場所指定*/
}

/*丸いページナビボタン１個あたりの設定*/
ul.slick-dots li {
	display: inline-block;
	margin: 0 10px;
	cursor: pointer;
}

/*buttonタグ*/
ul.slick-dots li button {
	border: none;padding: 0;
	display: block;
	text-indent: -9999px;	/*デフォルトで文字が出るので画面の外に追い出す指定*/
	width: 12px;			/*ボタンの幅*/
	height: 12px;			/*ボタンの高さ*/
	border-radius: 50%;		/*丸くする指定*/
	cursor: pointer;		/*クリックで画像へジャンプするので、わかりやすいようhover時にpointerになるように。*/
	background: #fff;		/*背景色。白。*/	
}

/*buttonのアクティブ時（現在表示されている画像を示すボタン）*/
ul.slick-dots li.slick-active button {
	background: #ff0e0e;	/*色*/
}


/*「お知らせ」ブロック
---------------------------------------------------------------------------*/
/*お知らせブロック*/
#new {
	margin: 0;
	display: flex;		/*flexボックスを使う指定*/
	flex-wrap: wrap;	/*折り返す指定*/
	padding: 0 20px;	/*上下、左右へのボックス内の余白*/
}

/*日付(dt)、記事(dd)共通設定*/
#new dt,
#new dd {
	padding: 5px 0;		/*上下、左右へのボックス内の余白*/
}

/*日付(dt)設定*/
#new dt {
	width: 8em;	/*幅。8文字(em)分。※下の「900px以上」の端末用の設定に再設定があります。*/
}

/*日付の横のマーク（共通設定）*/
#new dt span {
	display: none;	/*小さな端末では非表示にしておく。*/
}

/*記事(dd)設定*/
#new dd {
	width: calc(100% - 8em);	/*「8em」は上の「#new dt」のwidthの値です。※下の「900px以上」の端末用の設定に再設定があります。*/
}


/*listブロック
---------------------------------------------------------------------------*/
.list {
	margin-bottom: 30px;	/*ボックス同士の上下間に空けるスペース*/
	padding: 20px;			/*ボックス内の余白*/
	background: #fff;		/*背景色*/
	color: #999;			/*文字色*/
	box-shadow: 5px 5px 20px rgba(0,0,0,0.1);	/*ボックスの影。右へ、下へ、ぼかし幅、0,0,0は黒の事で0.1は色が10%出た状態。*/
	position: relative;
}

/*ボックス内のh4タグ*/
.list h4 {
	margin: 0;
	color: #666;	/*文字色*/
}
.list h4 a {
	color: #666;	/*リンクテキストの文字色*/
}

/*ボックス内のpタグ*/
.list p {
	margin: 0;
	font-size: 0.8em;	/*文字サイズを80%に*/
}

/*list内のNEWマーク*/
.list .new {
	font-size: 0.6em;		/*文字サイズ*/
	background: #ff0000;	/*背景色*/
	color: #fff;			/*文字色*/
	width: 50px;			/*幅*/
	line-height: 50px;		/*高さ*/
	border-radius: 50%;		/*角丸のサイズ。円形になります。*/
	text-align: center;		/*テキストをセンタリング*/
	position: absolute;
	left: -10px;			/*listブロックに対して左からの配置場所の指定*/
	top: -10px;				/*listブロックに対して上からの配置場所の指定*/
	transform: rotate(-30deg);	/*回転。まっすぐ表示させたいならこの１行を削除。*/
}

/*list内でのbtn*/
.list .btn {
	margin-top: 1em;	/*ボタンの上に１文字分のスペースを空ける*/
}
.list .btn a {
	display: block;
}


/*FAQ
---------------------------------------------------------------------------*/
/*FAQボックス全体*/
.faq {
	padding: 0 5px;	/*上下、左右へのボックス内の余白*/
}

/*質問*/
.faq dt {
	border-radius: 3px;		/*枠を角丸にする指定*/
	margin-bottom: 20px;	/*下に空けるスペース*/
	background: linear-gradient(#fff, #f7f7f7);	/*背景グラデーション*/
	text-indent: -2em;				/*テキストのインデント。質問が複数行になった際に、テキストの冒頭を揃える為に設定しています。*/
	padding: 5px 1em 5px 3em;		/*ボックス内の余白。ここを変更する場合、上のtext-indentも調整します。*/
	border: 1px solid #e4e2d7;		/*枠線の幅、線種、色*/
}

/*アイコン（Font Awesome）*/
.faq dt::before {
	font-family: "Font Awesome 5 Free";	/*Font Awesomeを使う指定*/
	content: "\f059";		/*使いたいアイコン名をここで指定。Font Awesomeに記載されています。詳しくは当テンプレートのマニュアルを読んで下さい。*/
	color: #770000;			/*アイコンの色*/
	padding-right: 1em;		/*アイコンとテキストの間の余白*/
}

/*回答*/
.faq dd {
	padding: 5px 1em 30px 3em;		/*ボックス内の余白**/
}

/*opencloseを適用した要素のカーソル*/
.openclose {
	cursor: pointer;	/*カーソルの形状。リンクと同じスタイルにしてクリックできると認識してもらう。*/
}

.faq dt span {text-indent: 0;}


/*btnの設定
---------------------------------------------------------------------------*/
p.btn {margin: 0;}

/*ボタンを囲むブロック*/
.btn {
	text-align: center;	/*内容をセンタリング*/
}

/*ボタン*/
.btn a,
.btn input {
	display: inline-block;text-decoration: none;border: none;
	font-size: 1em;
	box-shadow: 2px 2px 5px rgba(0,0,0,0.2);	/*ボックスの影。右へ、下へ、ぼかし幅の順。0,0,0は黒の事で0.2は色が20%出た状態。*/
	background: linear-gradient(150deg, #ff0e0e, #770000);/*背景グラデーション。#logoと合わせています。*/
	letter-spacing: 0.1em;	/*文字間隔を少し広くする指定*/
	color: #fff;			/*文字色*/
	transition: 0.3s;		/*hoverまでにかける時間。0.3秒。*/
	padding: 1em 2em;		/*余白*/
	margin: 0 auto 30px;	/*ボタンの外側に空けるスペース。上、左右、下への順番。*/
}

/*ボタンのマウスオン時*/
.btn a:hover,
.btn input:hover {
	cursor: pointer;		/*inputタグを使う場合に「手」のマークになるように。リンクと同じ表示になるようにという事です。*/
	opacity: 0.8;			/*冒頭のリンクテキストのhoverと合わせました*/
	transform: scale(1.02);	/*実寸の102%に拡大*/
}

/*listブロック内のボタン*/
.list .btn a {
	margin: 0;
}


/*テーブル
---------------------------------------------------------------------------*/
/*テーブル１行目に入った見出し部分（※caption）*/
.ta1 caption {
	font-weight: bold;		/*太字に*/
	padding: 10px 5px;		/*上下、左右へのボックス内の余白。基本的に数行下の「.ta1 th, .ta1 td」のpaddingと揃えておけばOKです。*/
	background: #eee;		/*背景色*/
	margin-bottom: 15px;	/*下に空けるスペース*/
}

/*ta1テーブルブロック設定*/
.ta1 {
	border-top: 1px solid #ccc;	/*テーブルの一番上の線。幅、線種、色*/
	width: 100%;
	margin: 0 auto 30px;		/*最後の「30px」がテーブルの下に空けるスペースです*/
}

/*tr（１行分）タグ設定*/
.ta1 tr {
	border-bottom: 1px solid #ccc;	/*テーブルの下線。幅、線種、色*/
}

/*th（左側）、td（右側）の共通設定*/
.ta1 th, .ta1 td {
	padding: 10px 5px;		/*上下、左右へのボックス内の余白*。基本的に数行上の「.ta1 caption」のpaddingと揃えておけばOKです。*/
	word-break: break-all;	/*英語などのテキストを改行で自動的に折り返す設定。これがないと、テーブルを突き抜けて表示される場合があります。*/
}

/*th（左側）のみの設定*/
.ta1 th {
	width: 30%;			/*幅*/
	text-align: left;	/*左よせにする*/
}


/*背景色パターン
---------------------------------------------------------------------------*/
.bg1 {
	background: #eee;
}


/*PAGE TOP（↑）設定
---------------------------------------------------------------------------*/
.pagetop-show {display: block;}

/*ボタンの設定*/
.pagetop a {
	display: block;text-decoration: none;text-align: center;z-index: 99;
	position: fixed;	/*スクロールに追従しない(固定で表示)為の設定*/
	right: 20px;		/*右からの配置場所指定*/
	bottom: 20px;		/*下からの配置場所指定*/
	color: #fff;		/*文字色*/
	font-size: 1.5em;	/*文字サイズ*/
	background: rgba(0,0,0,0.2);	/*背景色。0,0,0は黒の事で0.2は色が20%出た状態。*/
	width: 60px;		/*幅*/
	line-height: 60px;	/*高さ*/
	border-radius: 50%;	/*円形にする*/
}


/*その他
---------------------------------------------------------------------------*/
.clearfix::after {content: "";display: block;clear: both;}
.color-theme, .color-theme a {color: #770000 !important;}
.color-check, .color-check a {color: #f00 !important;}
.c {text-align: center !important;}
.ws {width: 95%;display: block;}
.wl {width: 95%;display: block;}
.mb30 {margin-bottom: 30px !important;}
.mt30 {margin-top: 30px !important;}
.look {display: inline-block;padding: 0px 10px;background: #666; color: #fff; border-radius: 3px;margin: 5px 0; word-break: break-all;}
.look .color-check {color: #ffcc00 !important;}
.small {font-size: 0.6em;}






/*---------------------------------------------------------------------------
ここから下は画面幅600px以上の追加指定
---------------------------------------------------------------------------*/
@media screen and (min-width:600px) {


/*listブロック
---------------------------------------------------------------------------*/
.list {
	display: flex;					/*flexボックスを使う指定*/
	justify-content: space-between;	/*並びかたの種類の指定*/
}

/*ボックス内のfigure画像*/
.list figure {
	width: 30%;
	margin-right: 5%;
}

/*ボックス内のtextブロック*/
.list .text {
	flex: 1;
	margin-right: 5%;
}


/*　※注意！　下の閉じカッコ　}　はこのブロックに必要なので、削除しないで下さい。　*/

}





/*---------------------------------------------------------------------------
ここから下は画面幅900px以上の追加指定
---------------------------------------------------------------------------*/
@media screen and (min-width:900px) {


/*全体の設定
---------------------------------------------------------------------------*/
html, body {
	font-size: 15px;	/*基準となるフォントサイズの上書き*/
}


/*header（ロゴなどが入った最上段のブロック）
---------------------------------------------------------------------------*/
/*ヘッダーブロック*/
header {
	position: fixed;	/*スクロールしても一緒に移動しない為の設定。画面上に固定表示されます。*/
	width: 100%;
}


/*menubarブロック設定
---------------------------------------------------------------------------*/
/*メニューブロックの設定*/
#menubar {
	font-size: 0.85em;	/*文字サイズを少し小さくする*/
}
#menubar ul {
	display: flex;	/*flexボックスを使う指定*/
}

/*メニュー１個あたりの設定*/
#menubar a {
	padding: 10px 15px;	/*上下、左右への余白*/
}


/*ドロップダウンメニュー
---------------------------------------------------------------------------*/
#menubar .ddmenu_parent ul {
	position: absolute;
}


/*３本バー（ハンバーガー）アイコン設定
---------------------------------------------------------------------------*/
/*ハンバーガーメニューを非表示にする*/
#menubar_hdr {display: none;}


/*「お知らせ」ブロック
---------------------------------------------------------------------------*/
/*日付(dt)設定*/
#new dt {
	width: 14em;	/*幅。14文字(em)分。*/
	display: flex;	/*flexボックスを使う指定*/
	justify-content: space-between;	/*日付とアイコンをそれぞれ端に寄せる*/
}

/*日付の横のマーク（共通設定）*/
#new dt span {
	display: inline-block;	/*表示させる*/
	width: 6em;				/*幅。6文字(em)分。*/
	background: #999;		/*背景色*/
	color: #fff;			/*文字色*/
	font-size: 0.8em;		/*文字サイズを80%に。*/
	text-align: center;		/*文字をセンタリング*/
	margin-right: 1em;		/*アイコンの右側に空けるスペース*/
	align-self: flex-start;	/*高さを間延びさせない指定*/
	line-height: 1.8;		/*行間を少し狭く*/
	position: relative;top: 0.4em;	/*上下の配置バランスの微調整*/
}

/*bg1設定。サンプルテンプレートでは「サービス」と書いてあるマーク*/
#new dt span.icon-bg1 {
	background: #770000;	/*背景色*/
}

/*記事(dd)設定*/
#new dd {
	width: calc(100% - 14em);	/*「14em」は上の「#new dt」のwidthの値です。*/
}


/*listブロック
---------------------------------------------------------------------------*/
/*listブロック全体を囲むブロック*/
.list-container {
	display: flex;		/*flexボックスを使う指定*/
	flex-wrap: wrap;	/*折り返す指定*/
	justify-content: space-between;	/*並びかたの種類の指定*/
}

/*１個あたりのボックス設定*/
.list {
	flex-direction: column;			/*子要素を縦並びにする*/
	width: 32%;		/*幅。３列になります。*/
}

/*ボックス内のfigure画像*/
.list figure {
	width: 100%;
	margin-right: 0;
}

/*ボックス内のtextブロック*/
.list .text {
	margin-right: 0;
}

/*ボックス内のh4タグ*/
.list h4 {
	margin: 10px 0;	/*上下、左右への余白*/
}


/*テーブル
---------------------------------------------------------------------------*/
/*テーブル１行目に入った見出し部分（※caption）*/
.ta1 caption {
	padding: 5px 15px;		/*上下、左右へのボックス内の余白*/
}

/*th（左側）、td（右側）の共通設定*/
.ta1 th, .ta1 td {
	padding: 20px 15px;		/*上下、左右へのボックス内の余白*/
}

/*th（左側）のみの設定*/
.ta1 th {
	width: 20%;		/*幅*/
}


/*その他
---------------------------------------------------------------------------*/
.ws {width: 48%;display: inline;}


/*　※注意！　下の閉じカッコ　}　はこのブロックに必要なので、削除しないで下さい。　*/

}

/* mainimg スライドショー YouTubeライブ スマホサイズ統一
---------------------------------------------------------------------------*/
/*
  目的：
  - 1〜3枚目の画像スライドと4枚目のYouTubeスライドの表示サイズを揃える
  - TOPICSとの重なりを防ぐ
  - スマホではYouTubeの左右黒帯・縮小表示を抑える
*/

/* スライドショー全体 */
.mainimg {
	position: relative;
	display: block;
	width: 100%;
	height: min(56.25vw, calc(100vh - 52px));
	min-height: 420px;
	margin: 0 0 35px;
	padding: 0;
	background: #000;
	overflow: hidden;
	clear: both;
	z-index: 0;
}

/* slick内部を親の高さに合わせる */
.mainimg .slick-list,
.mainimg .slick-track,
.mainimg .slick-slide,
.mainimg .slick-slide > div,
.mainimg .mainimg-slide {
	width: 100%;
	height: 100% !important;
}

/* slickの横並びを安定させる */
.mainimg .slick-list {
	overflow: hidden;
}

.mainimg .slick-track {
	display: flex !important;
}

.mainimg .slick-slide {
	float: none !important;
}

/* 画像スライド */
.mainimg img,
.mainimg .slick-slide img,
.mainimg .mainimg-slide img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
}

/* YouTubeスライド */
.mainimg .mainimg-youtube-slide {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	background: #000;
	overflow: hidden;
}

/* PCでは通常どおり全面表示 */
.mainimg .mainimg-youtube-slide iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
	background: #000;
}

/* ドット */
.mainimg ul.slick-dots,
.mainimg .slick-dots {
	z-index: 5;
	bottom: 24px;
}

/* 次のコンテンツを通常フローに戻す */
.mainimg + *,
.mainimg ~ main,
.mainimg ~ section {
	position: relative;
	clear: both;
	z-index: 1;
}

/* TOPICSの上余白を自然にする */
body.home main,
body.home main > section:first-child,
main > section:first-child {
	margin-top: 0 !important;
}

/* スマホ：4枚目YouTubeを画像スライドと同じ見え方に揃える */
@media screen and (max-width: 600px) {
	.mainimg {
		height: 52vw;
		min-height: 260px;
		margin-bottom: 35px;
	}

	.mainimg .slick-list,
	.mainimg .slick-track,
	.mainimg .slick-slide,
	.mainimg .slick-slide > div,
	.mainimg .mainimg-slide {
		height: 100% !important;
		min-height: 260px;
	}

	/*
	  YouTube iframeはobject-fitが使えないため、
	  枠より少し大きくして中央配置し、画像スライドと同じように見せる。
	*/
	.mainimg .mainimg-youtube-slide iframe {
		top: 50%;
		left: 50%;
		width: 178%;
		height: 100%;
		transform: translate(-50%, -50%);
	}
}

/* さらに縦長スマホでは高さを少しだけ確保 */
@media screen and (max-width: 430px) {
	.mainimg {
		height: 56vw;
		min-height: 250px;
	}
	.mainimg .slick-list,
	.mainimg .slick-track,
	.mainimg .slick-slide,
	.mainimg .slick-slide > div,
	.mainimg .mainimg-slide {
		min-height: 250px;
	}
}


/* ブログ機能
---------------------------------------------------------------------------*/
.blog-list,
.blog-detail {
	max-width: 1100px;
	margin: 0 auto;
	padding: 3% 5%;
}
.blog-search {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 2rem;
}
.blog-search input {
	flex: 1;
	padding: 0.7rem;
	border: 1px solid #ccc;
}
.blog-search button,
.blog-comment-form button {
	border: none;
	background: linear-gradient(150deg, #ff0e0e, #770000);
	color: #fff;
	padding: 0.7rem 1.2rem;
	cursor: pointer;
}
.blog-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
}
.blog-card {
	background: #fff;
	box-shadow: 5px 5px 20px rgba(0,0,0,0.1);
}
.blog-card figure {
	margin: 0;
}
.blog-card figure img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	display: block;
}
.blog-card-body {
	padding: 1.2rem;
}
.blog-card h2 {
	border-bottom: none;
	margin: 0 0 0.5rem;
	font-size: 1.25rem;
}
.blog-card h2 a {
	text-decoration: none;
}
.blog-meta {
	margin: 0 0 0.8rem;
	font-size: 0.85rem;
	color: #777;
}
.blog-meta span {
	display: inline-block;
	background: #770000;
	color: #fff;
	padding: 0.1rem 0.7rem;
	margin-left: 0.5rem;
}
.blog-eyecatch img {
	width: 100%;
	max-height: 520px;
	object-fit: cover;
	display: block;
}
.blog-body {
	margin: 2rem 0;
	line-height: 2;
}
.blog-body img {
	max-width: 100%;
	height: auto;
}
.blog-gallery {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.8rem;
	margin: 2rem 0;
}
.blog-gallery img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	display: block;
}
.blog-youtube {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: #000;
	margin: 2rem 0;
}
.blog-youtube iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}
.blog-comments {
	margin-top: 3rem;
	padding-top: 2rem;
	border-top: 1px solid #ddd;
}
.blog-comment {
	padding: 1rem;
	background: #f8f8f8;
	border-radius: 6px;
	margin: 1rem 0;
}
.blog-comment-meta {
	margin: 0 0 0.5rem;
	font-size: 0.85rem;
	color: #777;
}
.blog-comment-form input,
.blog-comment-form textarea {
	width: 100%;
	padding: 0.7rem;
	border: 1px solid #ccc;
	box-sizing: border-box;
}
.blog-comment-notice {
	background: #fff7d6;
	border: 1px solid #ead58a;
	padding: 0.8rem;
}
.blog-comments-closed {
	color: #777;
}
.hp-field {
	display: none;
}
@media screen and (min-width:700px) {
	.blog-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.blog-gallery {
		grid-template-columns: repeat(4, 1fr);
	}
}
@media screen and (min-width:1000px) {
	.blog-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}
@media screen and (max-width:600px) {
	.blog-list,
	.blog-detail {
		padding: 80px 5% 3%;
	}
	.blog-search {
		flex-direction: column;
	}
	.blog-gallery {
		grid-template-columns: repeat(2, 1fr);
	}
}


/* ブログ添付ファイル
---------------------------------------------------------------------------*/
.blog-documents {
	margin: 2rem 0;
	padding: 1.2rem;
	background: #f8f8f8;
	border: 1px solid #e5e5e5;
}
.blog-documents h3 {
	margin-top: 0;
}
.blog-documents ul {
	margin: 0;
	padding-left: 1.2rem;
}
.blog-documents li {
	margin: 0.4rem 0;
	word-break: break-all;
}
.blog-documents a {
	text-decoration: underline;
}


/* ブログ一覧内のYouTube・添付ファイル表示
---------------------------------------------------------------------------*/
.blog-youtube-list {
	margin: 1rem 0;
}
.blog-documents-list {
	margin: 1rem 0;
	padding: 0.8rem;
	font-size: 0.92rem;
}
.blog-documents-list ul {
	margin: 0.3rem 0 0;
}


/* ブログ詳細ページ補正
---------------------------------------------------------------------------*/
.blog-detail {
	background: #fff;
}
.blog-detail h2 {
	margin-top: 0;
}
.blog-detail .blog-body {
	font-size: 1rem;
}
.blog-detail .blog-body p {
	margin-left: 0;
	margin-right: 0;
}
.blog-detail .blog-comments h3,
.blog-detail .blog-documents h3 {
	margin-left: 0;
}
.blog-comment-form .hp-field {
	display: none !important;
}


/* ブログ表紙：カード型一覧
---------------------------------------------------------------------------*/
.blog-cover {
	max-width: 1300px;
	margin: 0 auto;
	padding: 3% 5%;
}

.blog-cover .blog-search {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 2rem;
}

.blog-cover .blog-search input {
	flex: 1;
	padding: 0.7rem;
	border: 1px solid #ccc;
	box-sizing: border-box;
}

.blog-cover .blog-search button {
	border: none;
	background: linear-gradient(150deg, #ff0e0e, #770000);
	color: #fff;
	padding: 0.7rem 1.2rem;
	cursor: pointer;
}

.blog-cover-grid {
	display: grid;
	grid-template-columns: repeat(1, minmax(0, 1fr));
	gap: 1.4rem;
}

.blog-cover-card {
	background: #fff;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 8px 22px rgba(0,0,0,0.08);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.blog-cover-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 12px 28px rgba(0,0,0,0.12);
}

.blog-cover-image {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: #eee;
	overflow: hidden;
	text-decoration: none;
}

.blog-cover-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	max-width: none;
	transition: transform 0.3s ease;
}

.blog-cover-card:hover .blog-cover-image img {
	transform: scale(1.04);
}

.blog-cover-image.no-image {
	display: flex;
	align-items: center;
	justify-content: center;
	color: #999;
	font-weight: bold;
}

.blog-cover-body {
	padding: 1rem;
}

.blog-cover-category {
	display: inline-block;
	margin: 0 0 0.5rem;
	padding: 0.15rem 0.7rem;
	border-radius: 999px;
	background: #770000;
	color: #fff;
	font-size: 0.8rem;
	line-height: 1.6;
}

.blog-cover-title {
	margin: 0 0 0.6rem;
	padding: 0;
	border: none;
	font-size: 1.05rem;
	line-height: 1.55;
	letter-spacing: 0.03em;
}

.blog-cover-title::before {
	display: none;
}

.blog-cover-title a {
	color: #333;
	text-decoration: none;
}

.blog-cover-date {
	margin: 0;
	color: #777;
	font-size: 0.86rem;
}

@media screen and (min-width:600px) {
	.blog-cover-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media screen and (min-width:900px) {
	.blog-cover-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media screen and (min-width:1200px) {
	.blog-cover-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

@media screen and (max-width:600px) {
	.blog-cover {
		padding: 80px 5% 3%;
	}
	.blog-cover .blog-search {
		flex-direction: column;
	}
}


/* company 組織図クリック拡大 改良版
---------------------------------------------------------------------------*/
/*
  /company の組織図をクリックした時に、黒背景の中央モーダルで表示する。
  style.cssの差し替えで消えやすいため、最新CSSへ再統合。
*/

.orgchart-lightbox,
main img.orgchart-lightbox-target {
	cursor: zoom-in;
}

/* 背景全体 */
.orgchart-modal {
	display: none;
	position: fixed;
	z-index: 2147483647;
	left: 0;
	top: 0;
	width: 100vw;
	height: 100vh;
	background: rgba(0,0,0,0.88);
	padding: 70px 24px 34px;
	box-sizing: border-box;
	overflow: auto;
}

/* 開いた状態 */
.orgchart-modal.is-open {
	display: block;
}

/* 中央寄せ用 */
.orgchart-modal-inner {
	min-height: calc(100vh - 104px);
	display: flex;
	align-items: center;
	justify-content: center;
}

/* 拡大画像 */
.orgchart-modal img {
	display: block;
	width: auto !important;
	height: auto !important;
	max-width: 96vw !important;
	max-height: calc(100vh - 120px) !important;
	object-fit: contain;
	background: #fff;
	box-shadow: 0 10px 40px rgba(0,0,0,0.55);
}

/* 閉じるボタン */
.orgchart-modal-close {
	position: fixed;
	top: 16px;
	right: 22px;
	z-index: 2147483647;
	width: 48px;
	height: 48px;
	border: none;
	border-radius: 50%;
	background: rgba(255,255,255,0.95);
	color: #111;
	font-size: 34px;
	line-height: 48px;
	text-align: center;
	cursor: pointer;
	box-shadow: 0 4px 16px rgba(0,0,0,0.35);
	padding: 0;
}

/* 説明テキスト */
.orgchart-modal-caption {
	position: fixed;
	left: 20px;
	right: 20px;
	bottom: 8px;
	z-index: 2147483647;
	color: #fff;
	text-align: center;
	font-size: 0.9rem;
	line-height: 1.5;
	pointer-events: none;
}

/* 開いている間は背景ページを固定 */
body.orgchart-modal-open {
	overflow: hidden;
}

/* 万一、モーダルがmain内に入ってもレイアウト影響を受けないようにする */
main .orgchart-modal,
section .orgchart-modal,
article .orgchart-modal {
	position: fixed;
	max-width: none;
	margin: 0;
	padding: 70px 24px 34px;
}

/* スマホ */
@media screen and (max-width:600px) {
	.orgchart-modal {
		padding: 62px 10px 28px;
	}

	.orgchart-modal-inner {
		min-height: calc(100vh - 90px);
	}

	.orgchart-modal img {
		max-width: 96vw !important;
		max-height: calc(100vh - 105px) !important;
	}

	.orgchart-modal-close {
		top: 10px;
		right: 10px;
		width: 44px;
		height: 44px;
		font-size: 30px;
		line-height: 44px;
	}
}


/* TOPICSカードの空白対策：flexからgridへ
---------------------------------------------------------------------------*/
/*
  既存CSSでは .list-container が flex + space-between のため、
  最終行が2枚だけになると左端と右端に分かれて中央が空きます。
  gridに変更して、左から順に詰めて表示します。
*/

@media screen and (min-width:900px) {
	.list-container {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 30px 2%;
		justify-content: normal;
	}

	.list-container .list {
		width: auto;
		margin-bottom: 0;
	}
}

/* タブレットでは2列 */
@media screen and (min-width:600px) and (max-width:899px) {
	.list-container {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 30px 3%;
	}

	.list-container .list {
		width: auto;
		margin-bottom: 0;
	}
}

/* スマホでは1列 */
@media screen and (max-width:599px) {
	.list-container {
		display: block;
	}

	.list-container .list {
		width: auto;
		margin-bottom: 30px;
	}
}


/* ロゴサイズ・スマホ余白の再調整
---------------------------------------------------------------------------*/
/*
  目的：
  - PC表示ではロゴ画像が小さく見えないようにする
  - スマホ表示ではロゴ下の余白を詰める
  - ページ見出しとのかぶりだけ避ける
*/

/* PC・横幅900px以上 */
@media screen and (min-width: 900px) {
	header #logo {
		width: 180px !important;
		padding: 34px 22px !important;
		box-sizing: border-box !important;
	}

	header #logo img {
		display: block !important;
		width: 100% !important;
		height: auto !important;
		max-width: none !important;
	}
}

/* スマホ・タブレット */
@media screen and (max-width: 899px) {
	header {
		min-height: 56px !important;
	}

	header #logo {
		top: 0 !important;
		left: 24px !important;
		width: 240px !important;
		padding: 24px 28px !important;
		margin: 0 !important;
		z-index: 10 !important;
		box-sizing: border-box !important;
	}

	header #logo img {
		display: block !important;
		width: 100% !important;
		height: auto !important;
		max-width: none !important;
	}

	/* 下層ページの余白を詰める。ロゴ高さ分だけ確保 */
	body:not(.home) main {
		padding-top: 118px !important;
	}

	/* HOMEはスライドショーがあるため余白を増やさない */
	body.home main {
		padding-top: 0 !important;
	}

	#menubar_hdr {
		top: 0 !important;
		right: 24px !important;
		z-index: 999 !important;
	}
}

/* 430px以下のスマホ */
@media screen and (max-width: 430px) {
	header #logo {
		left: 24px !important;
		width: 240px !important;
		padding: 24px 28px !important;
	}

	body:not(.home) main {
		padding-top: 116px !important;
	}
}

/* 360px前後の小さい端末 */
@media screen and (max-width: 360px) {
	header #logo {
		left: 18px !important;
		width: 220px !important;
		padding: 22px 24px !important;
	}

	body:not(.home) main {
		padding-top: 108px !important;
	}
}


/* PC版ロゴ視認性調整
---------------------------------------------------------------------------*/
/*
  スマホ側は維持し、PC表示だけロゴを読みやすくする。
  - 赤い背景枠を横に広げる
  - ロゴ画像の表示領域を大きくする
  - 余白を少し減らす
*/
@media screen and (min-width: 900px) {
	header #logo {
		width: 230px !important;
		padding: 30px 24px !important;
		box-sizing: border-box !important;
	}

	header #logo img {
		display: block !important;
		width: 100% !important;
		height: auto !important;
		max-width: none !important;
	}
}

/* 大きめPCではさらに少し見やすく */
@media screen and (min-width: 1200px) {
	header #logo {
		width: 250px !important;
		padding: 32px 26px !important;
	}
}


/* company HTML入力 改行整理後の本文調整
---------------------------------------------------------------------------*/
/*
  HTML入力欄の改行が<br>化されて見出しと本文が離れる問題の補正。
  app/templating.php側でも<br>整理を行い、CSS側でも念のため詰める。
*/

body:not(.home) main h3 {
	position: static !important;
	display: block !important;
	font-size: 1rem !important;
	font-weight: bold !important;
	margin: 0.8em 0 0.15em !important;
	padding: 0 0 0 9px !important;
	border: none !important;
	border-left: 4px solid #222 !important;
	background: transparent !important;
	line-height: 1.45 !important;
	color: #333 !important;
}

body:not(.home) main h3::before,
body:not(.home) main h3::after,
body:not(.home) main h4::before,
body:not(.home) main h4::after {
	display: none !important;
	content: none !important;
}

/* h3直後に残ったbrを消す */
body:not(.home) main h3 + br,
body:not(.home) main h3 + br + br,
.company-support h3 + br,
.company-support h3 + br + br {
	display: none !important;
}

body:not(.home) main h3 + p,
.company-support h3 + p {
	margin-top: 0 !important;
}

body:not(.home) main p {
	margin-top: 0 !important;
	margin-bottom: 0.45em !important;
	line-height: 1.72 !important;
}

.company-support {
	max-width: none !important;
	margin: 0 !important;
	padding: 0 0 8px !important;
	font-family: inherit !important;
	color: #333 !important;
	line-height: 1.72 !important;
}

.company-support h3 {
	margin: 0.8em 0 0.15em !important;
}

.company-support p,
.company-support .lead {
	margin: 0 0 0.45em !important;
	padding: 0 !important;
	line-height: 1.72 !important;
	color: #333 !important;
	text-align: left !important;
	font-size: 1rem !important;
}

body:not(.home) main > section {
	padding-top: 1% !important;
	padding-bottom: 1% !important;
}

body:not(.home) main > section + section {
	margin-top: 0 !important;
}

body:not(.home) main section:has(h3) {
	padding-bottom: 0.15em !important;
	margin-bottom: 0 !important;
}

body:not(.home) main section:has(h3) + section {
	padding-top: 0.45em !important;
	margin-top: 0 !important;
}

@media screen and (max-width: 768px) {
	body:not(.home) main h3 {
		margin: 0.75em 0 0.12em !important;
		padding-left: 8px !important;
	}

	body:not(.home) main p,
	.company-support p,
	.company-support .lead {
		margin-bottom: 0.42em !important;
		line-height: 1.68 !important;
	}
}


/* company スマホ本文余白コンパクト調整
---------------------------------------------------------------------------*/
/*
  スマホ表示で事業内容の本文が縦に広がりすぎる問題を調整。
  PC表示は大きく変えず、スマホだけ見出し・本文・段落間を詰める。
*/
@media screen and (max-width: 768px) {

	body:not(.home) main h2 {
		margin-bottom: 14px !important;
	}

	body:not(.home) main h3 {
		font-size: 1rem !important;
		margin: 1.0em 0 0.25em !important;
		padding-left: 8px !important;
		line-height: 1.35 !important;
	}

	body:not(.home) main h3 + br,
	body:not(.home) main h3 + br + br,
	body:not(.home) main p + br,
	body:not(.home) main p + br + br {
		display: none !important;
	}

	body:not(.home) main p {
		margin-top: 0 !important;
		margin-bottom: 0.45em !important;
		line-height: 1.55 !important;
	}

	.company-support {
		padding-bottom: 8px !important;
		line-height: 1.55 !important;
	}

	.company-support h3 {
		margin: 1.0em 0 0.25em !important;
		line-height: 1.35 !important;
	}

	.company-support p,
	.company-support .lead {
		margin: 0 0 0.45em !important;
		line-height: 1.55 !important;
	}

	body:not(.home) main > section {
		padding-top: 0.8% !important;
		padding-bottom: 0.8% !important;
	}

	body:not(.home) main section:has(h3) {
		padding-bottom: 0 !important;
	}

	body:not(.home) main section:has(h3) + section {
		padding-top: 0.5em !important;
	}
}

/* 430px以下はさらに少しだけ詰める */
@media screen and (max-width: 430px) {

	body:not(.home) main h3 {
		margin: 0.85em 0 0.2em !important;
	}

	body:not(.home) main p,
	.company-support p,
	.company-support .lead {
		margin-bottom: 0.38em !important;
		line-height: 1.5 !important;
	}
}


/* 情報BOX
---------------------------------------------------------------------------*/
.infobox-list .blog-grid,
.infobox-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 30px 2%;
}

.infobox-card {
	background: #fff;
}

.infobox-card figure,
.infobox-eyecatch {
	margin: 0;
}

.infobox-card figure img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.infobox-noimage a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: #eee;
	color: #777;
	text-decoration: none;
	font-weight: bold;
	letter-spacing: .12em;
}

.infobox-detail .infobox-body {
	margin: 1.5rem 0;
	line-height: 1.9;
}

.infobox-detail .infobox-file-name {
	margin: 1rem 0;
	color: #666;
	font-size: .95rem;
}

.infobox-youtube {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	margin: 1.5rem 0;
}

.infobox-youtube iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.infobox-detail .btn.sub a {
	background: #555;
}

@media screen and (max-width: 899px) {
	.infobox-list .blog-grid,
	.infobox-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 24px 3%;
	}
}

@media screen and (max-width: 599px) {
	.infobox-list .blog-grid,
	.infobox-grid {
		grid-template-columns: 1fr;
		gap: 24px;
	}
}



/* 情報BOX ページ送り・並び替え対応
---------------------------------------------------------------------------*/
.infobox-pager {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin: 34px 0 0;
}

.infobox-pager a,
.infobox-pager .current {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border: 1px solid #ddd;
	text-decoration: none;
	background: #fff;
	color: #333;
	box-sizing: border-box;
}

.infobox-pager .current {
	background: #111;
	color: #fff;
	border-color: #111;
}

@media screen and (max-width: 599px) {
	.infobox-pager {
		margin-top: 24px;
	}
}


/* 情報BOX：一覧説明文・YouTubeサムネイル
---------------------------------------------------------------------------*/
.infobox-card .infobox-excerpt {
	margin: 0.6em 0 1.1em;
	line-height: 1.7;
	font-size: 0.95em;
	color: #666;
}

.infobox-youtube-thumb a {
	position: relative;
	display: block;
	overflow: hidden;
}

.infobox-youtube-thumb img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.infobox-play {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 40px;
	border-radius: 8px;
	background: rgba(190, 0, 0, .9);
	color: #fff;
	font-size: 20px;
	line-height: 1;
	box-shadow: 0 8px 20px rgba(0,0,0,.25);
}

@media screen and (max-width: 599px) {
	.infobox-card .infobox-excerpt {
		font-size: 0.92em;
		line-height: 1.65;
	}
}


/* 情報BOX：一覧から直接リンク
---------------------------------------------------------------------------*/
.infobox-card .btn a[target="_blank"]::after {
	content: "";
}


/* 情報BOX：TOPICS同等カード・画像全体表示
---------------------------------------------------------------------------*/
/*
  ・PCは1行3個
  ・12件で次ページへ
  ・カードサイズをTOPICS寄せ
  ・画像は切り抜かず、均等縮小して全体表示
*/
.infobox-list {
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
}

.infobox-list .blog-grid,
.infobox-grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	gap: 36px 3% !important;
	align-items: stretch;
}

.infobox-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	background: #fff;
	box-shadow: 0 10px 30px rgba(0,0,0,.08);
	box-sizing: border-box;
}

.infobox-card figure {
	margin: 0;
	width: 100%;
	background: #f7f7f7;
	border-bottom: 1px solid #eee;
}

.infobox-card figure a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: #f7f7f7;
	overflow: hidden;
}

.infobox-card figure img,
.infobox-youtube-thumb img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain !important;
	object-position: center center !important;
	background: #f7f7f7;
}

.infobox-noimage a {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: #f0f0f0;
	color: #777;
	text-decoration: none;
	font-weight: bold;
	letter-spacing: .12em;
}

.infobox-card .blog-card-body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 22px 24px 26px;
	box-sizing: border-box;
}

.infobox-card .blog-meta {
	margin: 0 0 12px;
}

.infobox-card h2 {
	margin: 0 0 12px !important;
	padding-bottom: 12px;
	border-bottom: 3px solid #111;
	font-size: 1.2rem !important;
	line-height: 1.55 !important;
}

.infobox-card h2 a {
	text-decoration: none;
	color: inherit;
}

.infobox-card .infobox-excerpt {
	margin: 0 0 18px !important;
	line-height: 1.75;
	font-size: .95rem;
	color: #555;
}

.infobox-card .btn {
	margin-top: auto !important;
	text-align: center;
}

.infobox-card .btn a {
	min-width: 170px;
	box-sizing: border-box;
}

/* YouTube再生マーク */
.infobox-youtube-thumb a {
	position: relative;
}

.infobox-play {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 40px;
	border-radius: 8px;
	background: rgba(190, 0, 0, .9);
	color: #fff;
	font-size: 20px;
	line-height: 1;
	box-shadow: 0 8px 20px rgba(0,0,0,.25);
}

/* タブレット：2列 */
@media screen and (max-width: 899px) {
	.infobox-list .blog-grid,
	.infobox-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 28px 4% !important;
	}
}

/* スマホ：1列 */
@media screen and (max-width: 599px) {
	.infobox-list .blog-grid,
	.infobox-grid {
		grid-template-columns: 1fr !important;
		gap: 26px !important;
	}

	.infobox-card .blog-card-body {
		padding: 18px 18px 22px;
	}

	.infobox-card h2 {
		font-size: 1.08rem !important;
		line-height: 1.5 !important;
	}

	.infobox-card .infobox-excerpt {
		font-size: .92rem;
		line-height: 1.65;
	}
}


/* 情報BOX：3列固定・TOPICSカード強制調整
---------------------------------------------------------------------------*/
/*
  既存の blog-card 指定より後ろで強制上書き。
  PC: 3列 × 4段 = 12件
  タブレット: 2列
  スマホ: 1列
  画像: 切り抜きなしで全体表示
*/
main .infobox-list {
	width: min(100%, 1180px) !important;
	max-width: 1180px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	box-sizing: border-box !important;
}

main .infobox-list .blog-grid,
main .infobox-grid,
main .infobox-list div.infobox-grid {
	display: grid !important;
	grid-template-columns: repeat(3, 1fr) !important;
	gap: 32px 28px !important;
	width: 100% !important;
	align-items: stretch !important;
}

main .infobox-list .blog-card,
main .infobox-card {
	width: auto !important;
	max-width: none !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex !important;
	flex-direction: column !important;
	background: #fff !important;
	box-shadow: 0 10px 30px rgba(0,0,0,.08) !important;
	box-sizing: border-box !important;
	overflow: hidden !important;
}

main .infobox-card figure,
main .infobox-card figure a,
main .infobox-card .infobox-noimage a {
	width: 100% !important;
	height: 190px !important;
	min-height: 190px !important;
	max-height: 190px !important;
	aspect-ratio: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	background: #f5f5f5 !important;
	overflow: hidden !important;
	box-sizing: border-box !important;
}

main .infobox-card figure img,
main .infobox-card .infobox-youtube-thumb img {
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	max-height: 100% !important;
	object-fit: contain !important;
	object-position: center center !important;
	background: #f5f5f5 !important;
	display: block !important;
}

main .infobox-card .blog-card-body {
	flex: 1 1 auto !important;
	display: flex !important;
	flex-direction: column !important;
	padding: 20px 22px 24px !important;
	box-sizing: border-box !important;
}

main .infobox-card .blog-meta {
	margin: 0 0 10px !important;
	padding: 0 !important;
	line-height: 1.4 !important;
}

main .infobox-card h2 {
	margin: 0 0 12px !important;
	padding: 0 0 12px !important;
	border-bottom: 3px solid #111 !important;
	font-size: 1.18rem !important;
	line-height: 1.55 !important;
	letter-spacing: .03em !important;
}

main .infobox-card h2 a {
	color: inherit !important;
	text-decoration: none !important;
}

main .infobox-card .infobox-excerpt {
	margin: 0 0 18px !important;
	padding: 0 !important;
	font-size: .92rem !important;
	line-height: 1.7 !important;
	color: #555 !important;
}

main .infobox-card .btn {
	margin: auto 0 0 !important;
	padding: 0 !important;
	text-align: center !important;
}

main .infobox-card .btn a {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-width: 168px !important;
	min-height: 52px !important;
	padding: 0 22px !important;
	box-sizing: border-box !important;
}

main .infobox-youtube-thumb a {
	position: relative !important;
}

main .infobox-play {
	position: absolute !important;
	left: 50% !important;
	top: 50% !important;
	transform: translate(-50%, -50%) !important;
	z-index: 2 !important;
}

/* 既存CSSがfigure内リンクをインライン扱いにする場合の対策 */
main .infobox-card figure > a {
	text-decoration: none !important;
}

/* タブレット */
@media screen and (max-width: 899px) {
	main .infobox-list .blog-grid,
	main .infobox-grid,
	main .infobox-list div.infobox-grid {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 28px 22px !important;
	}

	main .infobox-card figure,
	main .infobox-card figure a,
	main .infobox-card .infobox-noimage a {
		height: 180px !important;
		min-height: 180px !important;
		max-height: 180px !important;
	}
}

/* スマホ */
@media screen and (max-width: 599px) {
	main .infobox-list {
		width: 100% !important;
		max-width: 100% !important;
	}

	main .infobox-list .blog-grid,
	main .infobox-grid,
	main .infobox-list div.infobox-grid {
		grid-template-columns: 1fr !important;
		gap: 24px !important;
	}

	main .infobox-card figure,
	main .infobox-card figure a,
	main .infobox-card .infobox-noimage a {
		height: 190px !important;
		min-height: 190px !important;
		max-height: 190px !important;
	}

	main .infobox-card .blog-card-body {
		padding: 18px 18px 22px !important;
	}

	main .infobox-card h2 {
		font-size: 1.08rem !important;
		line-height: 1.5 !important;
	}

	main .infobox-card .infobox-excerpt {
		font-size: .9rem !important;
		line-height: 1.65 !important;
	}
}


/* 情報BOX：タイトル下線すっきり調整
---------------------------------------------------------------------------*/
/*
  カードタイトル下の太い黒線を消し、TOPICS風にすっきり表示。
*/
main .infobox-card h2 {
	border-bottom: none !important;
	padding-bottom: 0 !important;
	margin: 0 0 12px !important;
	font-size: 1.18rem !important;
	line-height: 1.55 !important;
}

main .infobox-card h2::after {
	content: none !important;
	display: none !important;
}

main .infobox-card .infobox-excerpt {
	border-top: 1px solid #e5e5e5 !important;
	padding-top: 12px !important;
	margin-top: 6px !important;
}

main .infobox-card .blog-meta {
	margin-bottom: 12px !important;
}

@media screen and (max-width: 599px) {
	main .infobox-card h2 {
		font-size: 1.08rem !important;
		line-height: 1.5 !important;
		margin-bottom: 10px !important;
	}

	main .infobox-card .infobox-excerpt {
		padding-top: 10px !important;
	}
}


/* 情報BOX：カード幅TOPICS寄せ最終調整
---------------------------------------------------------------------------*/
/*
  違和感の主因になっていたカード幅を調整。
  TOPICSカードに近い見た目になるよう、一覧全体幅・列幅・余白を固定寄せ。
*/
main .infobox-list {
	max-width: 1080px !important;
	width: 100% !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

main .infobox-list .blog-grid,
main .infobox-grid,
main .infobox-list div.infobox-grid {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	column-gap: 28px !important;
	row-gap: 34px !important;
	max-width: 1080px !important;
	width: 100% !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

main .infobox-card {
	width: 100% !important;
	max-width: 340px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	box-sizing: border-box !important;
}

main .infobox-card figure,
main .infobox-card figure a,
main .infobox-card .infobox-noimage a {
	height: 178px !important;
	min-height: 178px !important;
	max-height: 178px !important;
}

main .infobox-card .blog-card-body {
	padding: 20px 22px 24px !important;
}

@media screen and (max-width: 899px) {
	main .infobox-list {
		max-width: 720px !important;
	}

	main .infobox-list .blog-grid,
	main .infobox-grid,
	main .infobox-list div.infobox-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		max-width: 720px !important;
		column-gap: 24px !important;
		row-gap: 30px !important;
	}

	main .infobox-card {
		max-width: 340px !important;
	}
}

@media screen and (max-width: 599px) {
	main .infobox-list {
		max-width: 360px !important;
	}

	main .infobox-list .blog-grid,
	main .infobox-grid,
	main .infobox-list div.infobox-grid {
		grid-template-columns: 1fr !important;
		max-width: 360px !important;
		row-gap: 26px !important;
	}

	main .infobox-card {
		max-width: 340px !important;
	}

	main .infobox-card figure,
	main .infobox-card figure a,
	main .infobox-card .infobox-noimage a {
		height: 178px !important;
		min-height: 178px !important;
		max-height: 178px !important;
	}
}

