@charset "UTF-8";

/* =============================================================================
	ブログ一覧
============================================================================= */

.blog-section {
	padding: 72px 0;
}

.blog-hero {
	margin-bottom: 24px;
}

.blog-hero__title {
	margin: 0 0 8px;
	font-size: 30px;
	line-height: 1.25;
	letter-spacing: -.02em;
}

.blog-hero__lead {
	margin: 0;
	color: var(--muted);
	line-height: 1.8;
}

.blog-post-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
}


/* =============================================================================
	記事カード
============================================================================= */

.blog-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;

	border: 1px solid var(--line);
	border-radius: var(--radius);
	background-color: rgb(255 255 255 / .92);

	box-shadow: 0 12px 26px rgb(2 6 23 / .06);

	transition:
		transform .12s ease,
		border-color .20s ease,
		box-shadow .20s ease;
}

.blog-card:hover {
	transform: translateY(-2px);

	border-color: rgb(29 145 183 / .20);

	box-shadow: 0 16px 34px rgb(2 6 23 / .10);
}


/* 画像 */

.blog-card__media {
	display: block;

	aspect-ratio: 16 / 9;
	overflow: hidden;

	background-color: var(--bg-soft);

	border-bottom: 1px solid var(--line);
}

.blog-card__media img {
	display: block;

	width: 100%;
	height: 100%;

	object-fit: cover;

	transition: transform .28s ease;
}

.blog-card:hover .blog-card__media img {
	transform: scale(1.03);
}


/* 本文 */

.blog-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;

	padding: 18px;
}


.blog-card__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 10px;

	margin-bottom: 10px;

	color: var(--muted);

	font-size: 12px;
}


.blog-card__date {
	margin: 0;

	white-space: nowrap;
}


/* カテゴリー */

.blog-card__cats {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.blog-card__cat {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	padding: 5px 8px;

	border: 1px solid rgb(29 145 183 / .18);
	border-radius: 999px;

	background-color: rgb(29 145 183 / .10);

	color: var(--brand-700);

	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
}

.blog-card__cat:hover {
	text-decoration: underline;
}


/* タイトル */

.blog-card__title {
	margin: 0;

	font-size: 18px;
	line-height: 1.45;
	letter-spacing: -.01em;
}

.blog-card__title a:hover {
	text-decoration: underline;
}


/* 抜粋 */

.blog-card__excerpt {
	margin: 12px 0 0;

	color: var(--muted);

	font-size: 14px;
	line-height: 1.8;
}


/* 詳細リンク */

.blog-card__actions {
	margin-top: auto;
	padding-top: 16px;
}

.blog-card__link {
	display: inline-flex;
	align-items: center;
	gap: 6px;

	color: var(--brand-700);

	font-size: 14px;
	font-weight: 800;
}

.blog-card__link:hover {
	text-decoration: underline;
}


/* =============================================================================
	カテゴリーフィルター
============================================================================= */

.blog-filter-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;

	margin: 18px 0 24px;
}


.blog-filter {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	padding: 6px 10px;

	border: 1px solid rgb(29 145 183 / .14);
	border-radius: 999px;

	background-color: rgb(29 145 183 / .06);

	color: var(--muted);

	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;

	transition:
		background-color .20s ease,
		border-color .20s ease,
		color .20s ease;
}

.blog-filter:hover,
.blog-filter.is-current {
	border-color: rgb(29 145 183 / .28);

	background-color: rgb(29 145 183 / .14);

	color: var(--text);
}


/* =============================================================================
	タグ
============================================================================= */

.blog-tag-list {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;

	margin-bottom: 18px;
}


.blog-tag {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	padding: 6px 10px;

	border: 1px solid rgb(29 145 183 / .14);
	border-radius: 999px;

	background-color: rgb(29 145 183 / .06);

	color: var(--brand-700);

	font-size: 13px;
	font-weight: 700;
}

.blog-tag:hover {
	background-color: rgb(29 145 183 / .12);
}


/* =============================================================================
	記事詳細
============================================================================= */

.blog-article {
	max-width: 820px;
	margin: 0 auto;
}


.blog-article__head {
	margin-bottom: 22px;
}


.blog-article__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 10px;

	margin-bottom: 12px;

	color: var(--muted);

	font-size: 13px;
}


.blog-article__date {
	margin: 0;
}


.blog-article__title {
	margin: 0 0 12px;

	font-size: clamp(28px, 4vw, 40px);

	line-height: 1.28;
	letter-spacing: -.03em;
}


.blog-article__lead {
	margin: 0;

	color: var(--muted);

	font-size: 16px;
	line-height: 1.9;
}


/* =============================================================================
	記事アイキャッチ画像
============================================================================= */

.blog-article__image,
.blog-article__thumb {
	margin: 22px 0 30px;

	overflow: hidden;

	border: 1px solid var(--line);
	border-radius: var(--radius);

	background-color: var(--bg-soft);

	box-shadow: 0 12px 26px rgb(2 6 23 / .06);
}


.blog-article__image img,
.blog-article__thumb img {
	display: block;

	width: 100%;
	height: auto;

	aspect-ratio: 16 / 9;

	object-fit: cover;
}


/* =============================================================================
	記事本文
============================================================================= */

.blog-article-content {
	font-size: 16px;
	line-height: 1.95;
}


.blog-article-content p {
	margin: 0 0 1.2em;
}


.blog-article-content h2 {
	margin: 2.1em 0 .75em;
	padding-left: 14px;

	border-left: 4px solid rgb(29 145 183 / .34);

	font-size: 24px;
	line-height: 1.45;
	letter-spacing: -.02em;
}


.blog-article-content h3 {
	margin: 1.8em 0 .65em;

	font-size: 20px;

	line-height: 1.45;
	letter-spacing: -.01em;
}


.blog-article-content h4 {
	margin: 1.6em 0 .55em;

	font-size: 17px;

	line-height: 1.45;
}


/* リスト */

.blog-article-content ul,
.blog-article-content ol {
	margin: 0 0 1.2em;

	padding-left: 1.4em;
}


.blog-article-content li {
	margin: .45em 0;
}


/* 本文リンク */

.blog-article-content a:not(.wp-block-button__link) {
	color: var(--brand-700);

	font-weight: 700;

	text-decoration: underline;
	text-underline-offset: 3px;
}


/* 本文画像 */

.blog-article-content img {
	display: block;

	max-width: 100%;
	height: auto;

	margin: 1.4em 0;

	border-radius: 14px;
}


.blog-article-content figure {
	margin: 1.6em 0;
}


.blog-article-content figcaption {
	margin-top: 8px;

	color: var(--muted);

	font-size: 13px;

	text-align: center;
}


/* =============================================================================
	引用
============================================================================= */

.blog-article-content blockquote,
.blog-article-content .wp-block-quote {
	margin: 1.6em 0;
	padding: 16px 18px;

	border-left: 4px solid rgb(29 145 183 / .32);
	border-radius: 14px;

	background-color: rgb(29 145 183 / .06);

	color: var(--muted);
}


.blog-article-content blockquote p:last-child {
	margin-bottom: 0;
}


/* =============================================================================
	表組み
============================================================================= */

.blog-article-content table {
	width: 100%;

	margin: 1.6em 0;

	border-collapse: collapse;

	font-size: 14px;
}


.blog-article-content th,
.blog-article-content td {
	padding: 10px 12px;

	border: 1px solid rgb(15 23 42 / .12);

	text-align: left;
	vertical-align: top;
}


.blog-article-content th {
	background-color: rgb(29 145 183 / .06);

	font-weight: 800;
}


/* =============================================================================
	Gutenberg対応
============================================================================= */

.blog-article-content .wp-block-buttons {
	margin: 1.6em 0;
}


.blog-article-content .wp-block-button {
	margin: 0;
}


.blog-article-content .wp-block-image {
	margin: 1.6em 0;
}


.blog-article-content .wp-block-image img {
	display: block;

	max-width: 100%;
	height: auto;

	border-radius: 14px;
}


.blog-article-content .wp-block-gallery {
	margin: 1.8em 0;
}


.blog-article-content .wp-block-columns {
	gap: 20px;
}


.blog-article-content .wp-block-group {
	margin: 1.8em 0;
}


.blog-article-content .wp-block-cover {
	margin: 1.8em 0;

	overflow: hidden;

	border-radius: var(--radius);
}


.blog-article-content .wp-block-separator {
	margin: 2em 0;

	border: 0;
	border-top: 1px solid var(--line);
}


/* =============================================================================
	記事下
============================================================================= */

.blog-article-footer {
	margin-top: 34px;
	padding-top: 22px;

	border-top: 1px solid var(--line);
}


/* 前後記事 */
.blog-back {
	margin: 18px 0 0;
}


/* =============================================================================
	CTA
============================================================================= */

.blog-cta {
	margin-top: 34px;
}

.blog-article-cta {
	margin-top: 34px;
}

/* =============================================================================
	検索フォーム
============================================================================= */

.blog-search-form {
	display: flex;
	gap: 10px;

	margin: 18px 0 24px;
}


.blog-search-field {
	width: 100%;
	min-height: 44px;

	padding: 12px;

	border: 1px solid rgb(15 23 42 / .14);
	border-radius: 12px;

	background-color: #fff;

	color: var(--text);

	font-size: 16px;
	line-height: 1.5;
}


.blog-search-field::placeholder {
	color: rgb(71 85 105 / .75);
}


.blog-search-field:focus {
	outline: none;
}


.blog-search-field:focus-visible {
	border-color: rgb(29 145 183 / .55);

	box-shadow:
		0 0 0 4px rgb(29 145 183 / .18);
}


.blog-search-submit {
	flex: 0 0 auto;
}


/* =============================================================================
	ページネーション
============================================================================= */

.blog-pagination {
	display: flex;
	justify-content: center;

	margin-top: 28px;
}


.blog-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
}


.blog-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	min-width: 40px;
	height: 40px;

	padding: 0 12px;

	border: 1px solid var(--line);
	border-radius: 999px;

	background-color: #fff;

	color: var(--muted);

	font-size: 14px;
	font-weight: 700;

	transition:
		background-color .20s ease,
		border-color .20s ease,
		color .20s ease;
}


.blog-pagination .page-numbers:hover,
.blog-pagination .page-numbers.current {
	border-color: rgb(29 145 183 / .28);

	background-color: rgb(29 145 183 / .12);

	color: var(--text);
}


/* =============================================================================
	空状態
============================================================================= */

.blog-empty {
	padding: 24px;
	border: 1px solid var(--line);
	border-radius: var(--radius);
	background-color: rgb(255 255 255 / .92);
	box-shadow: 0 12px 26px rgb(2 6 23 / .06);
}

.blog-empty__title {
	margin: 0 0 8px;
	font-size: 20px;
	line-height: 1.4;
}

.blog-empty__text {
	margin: 0;
	color: var(--muted);
}

.blog-empty__label {
	margin: 0 0 8px;
	color: var(--muted);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
}


/* =============================================================================
	404ページ
============================================================================= */

.error404 .blog-empty {
	text-align: center;
}


.error404 .card-actions {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;

	margin-top: 20px;
}


/* =============================================================================
	コメント
============================================================================= */

.comments-area {
	margin-top: 40px;
	padding-top: 24px;

	border-top: 1px solid var(--line);
}


.comments-title {
	margin: 0 0 18px;

	font-size: 20px;
}


.comment-list {
	margin: 0;
	padding: 0;

	list-style: none;
}


.comment-body {
	padding: 16px;

	border: 1px solid var(--line);
	border-radius: var(--radius);

	background-color: rgb(255 255 255 / .92);
}


.comment-meta {
	margin-bottom: 10px;

	color: var(--muted);

	font-size: 13px;
}


.comment-content p:last-child {
	margin-bottom: 0;
}


/* =============================================================================
	管理画面ログイン時調整
============================================================================= */

.admin-bar .site-header {
	top: 32px;
}


@media (max-width: 782px) {

	.admin-bar .site-header {
		top: 46px;
	}

}


/* =============================================================================
	記事内CTAボタン文字色調整
============================================================================= */

.blog-article-content .blog-contact-button {
	color: rgb(255 255 255) !important;
	text-decoration: none !important;
	text-decoration-line: none !important;
}

.blog-article-content .blog-contact-button:hover,
.blog-article-content .blog-contact-button:focus,
.blog-article-content .blog-contact-button:focus-visible,
.blog-article-content .blog-contact-button:active {
	color: rgb(255 255 255) !important;
	text-decoration: none !important;
	text-decoration-line: none !important;
}




/* =============================================================================
	Responsive：タブレット
============================================================================= */

@media (max-width: 980px) {

	.blog-post-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}


	.blog-article {
		max-width: 100%;
	}


	.blog-post-nav {
		grid-template-columns: 1fr;
	}

}


/* =============================================================================
	Responsive：スマートフォン
============================================================================= */

@media (max-width: 700px) {

	.blog-section {
		padding: 56px 0;
	}


	.blog-container {
		padding: 0 16px;
	}


	.blog-post-grid {
		grid-template-columns: 1fr;
	}


	.blog-search-form {
		flex-direction: column;
	}


	.blog-search-submit {
		width: 100%;
	}


	.blog-article__title {
		font-size: 28px;
	}


	.blog-article-content {
		font-size: 15px;
	}


	.blog-article-content h2 {
		font-size: 21px;
	}


	.blog-article-content h3 {
		font-size: 18px;
	}

}


/* =============================================================================
	Responsive：小型スマートフォン
============================================================================= */

@media (max-width: 520px) {

	.blog-hero__title {
		font-size: 26px;
	}


	.blog-card__body {
		padding: 16px;
	}


	.blog-card__title {
		font-size: 17px;
	}


	.blog-card__excerpt {
		font-size: 13px;
	}


	.blog-article__lead {
		font-size: 15px;
	}


	.blog-article__image,
	.blog-article__thumb {
		margin: 18px 0 22px;
	}


	.blog-article-content .wp-block-button {
		width: 100%;
	}


	.blog-article-content .wp-block-button__link {
		width: 100%;

		min-height: var(--btn-minh-sp);

		font-size: var(--btn-fz-sp);
	}


	.blog-pagination .page-numbers {
		min-width: 36px;
		height: 36px;

		font-size: 13px;
	}

}