/* ==========================================================================
   Theme Guide
   カラー: メインアクセント var(--primary-color)
   ========================================================================== */

/* --- Reset & Base --- */
*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html {
	font-size: 62.5%;
	scroll-behavior: smooth;
}

body {
	font-family: "Noto Sans JP", sans-serif;
	font-size: 1.6rem;
	line-height: 1.8;
	color: #333;
	background: #fff;
	-webkit-text-size-adjust: 100%;
}

img {
	max-width: 100%;
	height: auto;
	vertical-align: bottom;
}

a {
	color: var(--primary-color);
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

ul, ol {
	list-style: none;
}

/* --- Layout --- */
.row {
	max-width: 1140px;
	margin: 0 auto;
	padding: 0 20px;
}

.site-content {
	min-height: 60vh;
	padding-bottom: 120px;
}

/* ==========================================================================
   Header
   ========================================================================== */
.site-header {
	background: #fff;
	position: sticky;
	top: 0;
	z-index: 1000;
}

.header-top-wrap {
	border-bottom: 1px solid #DCDCDC;
}

.header-inner {
	max-width: 1140px;
	margin: 0 auto;
	padding: 0 20px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 65px;
}

.header-left {
	display: flex;
	align-items: center;
}

.logo-area {
	display: flex;
	align-items: center;
	gap: 30px;
}

.site-logo {
	display: flex;
	align-items: center;
}

.site-logo img {
	width: 100px;
	height: auto;
}

.site-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 260px;
	background: #fff;
	color: var(--primary-color);
	font-size: 2.0rem;
	font-weight: 500;
	padding: 1px 0;
	border: 1px solid var(--primary-color);
	border-radius: 0;
	white-space: nowrap;
}

.header-right {
	display: flex;
	align-items: center;
}

/* 検索フォーム */
.search-form {
	display: flex;
	align-items: center;
	flex-direction: row-reverse;
	border: 1px solid #D1D5DC;
	border-radius: 0;
	overflow: hidden;
	background: #fff;
	width: 260px;
}

.search-field {
	border: none;
	background: transparent;
	padding: 6px 12px;
	font-size: 1.6rem;
	flex: 1;
	width: 100%;
	outline: none;
}

.search-submit {
	border: none;
	background: transparent;
	padding: 6px 10px;
	cursor: pointer;
	color: #99A1AF;
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

/* Primary Nav */
.primary-nav {
	background: #fff;
	border-bottom: 1px solid #DCDCDC;
}

.nav-inner {
	max-width: 1140px;
	margin: 0 auto;
	padding: 0 20px;
}

.primary-nav .nav-menu {
	display: flex;
	gap: 55px;
}

.primary-nav .nav-menu li a {
	color: #333;
	font-size: 1.4rem;
	font-weight: 700;
	padding: 12px 0;
	display: block;
}

.primary-nav .nav-menu li a:hover {
	color: var(--primary-color);
	text-decoration: none;
}

/* SP検索フォーム（PCでは非表示） */
.sp-search-form {
	display: none;
}

/* Hamburger */
.hamburger {
	display: none;
	flex-direction: column;
	gap: 5px;
	cursor: pointer;
	background: none;
	border: none;
	padding: 8px;
}

.hamburger span {
	display: block;
	width: 22px;
	height: 2px;
	background: #333;
	transition: transform 0.3s, opacity 0.3s;
}

/* ==========================================================================
   Hero (TOP)
   ========================================================================== */
.hero-section {
	background: url('../images/bg-top.jpg') center center / cover no-repeat;
	position: relative;
	overflow: hidden;
	border-bottom: 1px solid #DCDCDC;
}

.hero-bg {
	padding: 110px 0 80px;
	text-align: left;
	position: relative;
}

.hero-title {
	font-size: 4.2rem;
	font-weight: 700;
	color: #333;
	margin-bottom: 30px;
	line-height: 1.4;
	text-align: center;
}

.hero-subtitle {
	font-size: 2.0rem;
	font-weight: 400;
	color: #555;
	max-width: 1040px;
	margin: 0;
	line-height: 1.8;
}

/* ==========================================================================
   Category Cards (TOP)
   ========================================================================== */
.category-cards {
	padding: 120px 0 180px;
}

.cards-grid {
	display: grid;
	grid-template-columns: repeat(3, 340px);
	justify-content: space-between;
	row-gap: 65px;
}

.category-card {
	display: block;
	padding: 24px 0 0;
}

.card-title {
	font-size: 1.8rem;
	font-weight: 700;
	margin-bottom: 8px;
}

.card-title a {
	color: var(--primary-color);
	text-decoration: none;
}

.card-title a:hover {
	text-decoration: underline;
}

.card-desc {
	font-size: 1.4rem;
	font-weight: 400;
	color: #333;
	line-height: 1.6;
}

/* ==========================================================================
   Article List (TOP / Archive)
   ========================================================================== */
.article-list-section {
	padding: 0 0 60px;
}

.section-title {
	font-size: 2.4rem;
	font-weight: 700;
	margin-bottom: 0;
	padding-bottom: 30px;
	border-bottom: 1px solid #DCDCDC;
}

.article-list {
	display: flex;
	flex-direction: column;
	gap: 0;
}

.article-card {
	border-bottom: 1px solid #DCDCDC;
}

.article-card:last-child {
	border-bottom: none;
}

.article-card-link {
	display: flex;
	align-items: center;
	gap: 20px;
	padding: 30px 0;
	color: #333;
}

.article-card-link:hover {
	text-decoration: none;
}

.article-card-thumb {
	flex-shrink: 0;
	width: 160px;
	height: 160px;
	border-radius: 0;
	overflow: hidden;
	background: #f0f0f0;
}

.article-card-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.no-thumb {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #bbb;
	font-size: 1.3rem;
	background: #f5f5f5;
}

.article-card-body {
	flex: 1;
	min-width: 0;
}

.article-card-title {
	font-size: 2.4rem;
	font-weight: 500;
	margin-bottom: 20px;
	line-height: 1.5;
	color: #333;
	display: inline;
	background-image: linear-gradient(currentColor, currentColor);
	background-position: 0 100%;
	background-size: 0 1px;
	background-repeat: no-repeat;
	transition: background-size 0.4s ease;
}

.article-card-link:hover .article-card-title {
	background-size: 100% 1px;
}

.article-card-excerpt {
	padding-top: 15px;
	font-size: 1.6rem;
	font-weight: 400;
	color: #666;
	line-height: 1.7;
}

/* ==========================================================================
   Breadcrumb
   ========================================================================== */
.breadcrumb {
	background: #fff;
	font-size: 1.0rem;
	color: #888;
	border-bottom: 1px solid #DCDCDC;
}

.breadcrumb .row {
	padding-top: 10px;
	padding-bottom: 10px;
}

.breadcrumb-list {
	display: flex;
	align-items: center;
	list-style: none;
	padding: 0;
	margin: 0;
}

.breadcrumb-list li + li::before {
	content: "";
	display: inline-block;
	width: 6px;
	height: 6px;
	border-top: 1px solid #ccc;
	border-right: 1px solid #ccc;
	transform: rotate(45deg);
	margin: 0 8px;
	vertical-align: middle;
}

.breadcrumb a {
	color: var(--primary-color);
}

/* ==========================================================================
   Single Post - 2 Column Layout
   ========================================================================== */
.content-with-sidebar {
	display: grid;
	grid-template-columns: 1fr 280px;
	gap: 40px;
	padding: 60px 0 60px;
}

.main-column {
	min-width: 0;
}

/* Entry Header */
.entry-header {
	margin-bottom: 30px;
}

.page-content {
	padding: 60px 0 60px;
}

.entry-title {
	font-size: 3.2rem;
	line-height: 1.4;
	font-weight: 700;
	margin-bottom: 25px;
}

.entry-meta {
	font-size: 1.2rem;
	color: #888;
	margin-top: 8px;
}

.entry-meta .updated {
	margin-left: 8px;
}

.entry-thumbnail {
	margin-bottom: 32px;
	overflow: hidden;
	text-align: center;
}

.entry-thumbnail img {
	max-width: 100%;
	height: auto;
}

/* ==========================================================================
   Entry Content (本文スタイル)
   ========================================================================== */
.entry-content,
.summary-card-wrap {
	font-size: 1.8rem;
	line-height: 1.7;
}

.summary-card-wrap .summary-card {
	background: #e5e5e5;
	padding: 25px;
	margin-bottom: 30px;
}

.entry-content h2 {
	font-size: 2.4rem;
	font-weight: 700;
	line-height: 1.4;
	margin: 48px 0 16px;
	scroll-margin-top: 120px;
}

.entry-content h3 {
	font-size: 2.2rem;
	font-weight: 700;
	line-height: 1.4;
	margin: 36px 0 12px;
}

.entry-content p {
	margin-bottom: 16px;
}

.entry-content ul {
	margin: 16px 0;
	padding-left: 0;
}

.entry-content ol {
	margin: 16px 0;
	padding-left: 24px;
}

.entry-content ul {
	list-style: none;
}

.entry-content ul > li::before {
	content: "・";
}

.entry-content ol {
	list-style: decimal;
}

.entry-content li {
	margin-bottom: 8px;
}

/* 比較表 */
/* テーブルスクロール */
.table-scroll-wrap {
	margin: 24px 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

/* スクロールバー常時表示・カスタムスタイル */
.table-scroll-wrap::-webkit-scrollbar {
	height: 8px;
}

.table-scroll-wrap::-webkit-scrollbar-track {
	background: #f0f0f0;
	border-radius: 4px;
}

.table-scroll-wrap::-webkit-scrollbar-thumb {
	background: #ccc;
	border-radius: 4px;
}

.table-scroll-wrap::-webkit-scrollbar-thumb:hover {
	background: #aaa;
}

/* Firefox */
.table-scroll-wrap {
	scrollbar-width: thin;
	scrollbar-color: #ccc #f0f0f0;
}

.table-scroll-wrap .scroll-hint-icon {
	top: 20%;
	bottom: auto;
	left: 50%;
	transform: translateX(-50%);
}

.entry-content table {
	width: 100%;
	min-width: 600px;
	border-collapse: collapse;
	font-size: 1.4rem;
}

.entry-content table th,
.entry-content table td {
	border: 1px solid #D1D5DC;
	padding: 12px 16px;
	text-align: center;
	vertical-align: middle;
	min-width: 140px;
	white-space: nowrap;
}

.entry-content table td {
	white-space: normal;
	min-width: 160px;
}

.entry-content table th {
	background: #e5e5e5;
	color: #333;
	font-size: 2.0rem;
	font-weight: 700;
}

.entry-content table tbody tr:nth-child(even) {
	background: #fafafa;
}

/* 引用 */
.entry-content blockquote {
	margin: 24px 0;
	padding: 60px 30px;
	background: #e5e5e5;
	font-size: 1.8rem;
	color: #333;
	position: relative;
}

.entry-content blockquote::before {
	content: "";
	position: absolute;
	top: 25px;
	left: 35px;
	width: 24px;
	height: 21px;
	background: url('../images/quote-open.svg') no-repeat center / contain;
}

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

.entry-content blockquote::after {
	content: "";
	position: absolute;
	bottom: 25px;
	right: 35px;
	width: 24px;
	height: 21px;
	background: url('../images/quote-close.svg') no-repeat center / contain;
}

/* リンク色 */
.entry-content img {
	display: block;
	margin-left: auto;
	margin-right: auto;
}

.entry-content a {
	color: var(--primary-color);
	text-decoration: underline;
}

.entry-content a {
	transition: opacity 0.3s;
}

.entry-content a:hover {
	opacity: 0.7;
}

/* ==========================================================================
   要約カード (details/summary)
   ========================================================================== */
.entry-content details {
	margin: 24px 0;
	border: 2px solid var(--primary-color);
	border-radius: 8px;
	overflow: hidden;
}

.entry-content details summary {
	padding: 16px 20px;
	background: #e0f6f7;
	cursor: pointer;
	font-weight: 600;
	font-size: 1.5rem;
	list-style: none;
}

.entry-content details summary::-webkit-details-marker {
	display: none;
}

.entry-content details summary::before {
	content: "【要約カード】";
	display: block;
	font-size: 1.2rem;
	color: var(--primary-color);
	margin-bottom: 4px;
	font-weight: 700;
}

.entry-content details > *:not(summary) {
	padding: 0 20px;
}

.entry-content details > p:last-child {
	padding-bottom: 16px;
}

/* ==========================================================================
   目次 (TOC)
   ========================================================================== */
.toc {
	margin: 24px 0 32px;
	padding: 20px 0;
}

.toc-title {
	font-weight: 600;
	font-size: 1.8rem;
	margin-bottom: 12px;
	color: #333;
}

.toc ul {
	list-style: none;
	padding: 0 0 0 35px;
	margin: 0;
}

.toc ul li {
	margin-bottom: 6px;
	padding-left: 15px;
	position: relative;
}

.toc ul li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 5px;
	height: 5px;
	background: #000;
	border-radius: 50%;
}

.toc ul li a {
	color: #333;
	font-size: 1.4rem;
	display: inline;
	padding: 3px 0;
}

.toc ul li a:hover {
	color: var(--primary-color);
	text-decoration: underline;
}

/* ==========================================================================
   FAQ Section (本文内)
   ========================================================================== */
.entry-content .faq h2 {
	background: none;
	border-left: none;
	padding: 0;
	margin-bottom: 20px;
}

.entry-content .faq h3 {
	border-bottom: none;
	margin: 0;
	padding: 16px 20px 16px 48px;
	background: #f0fafb;
	cursor: default;
	position: relative;
	font-size: 1.8rem;
}

.entry-content .faq h3::before {
	content: "Q";
	font-family: "Inter", sans-serif;
	position: absolute;
	left: 16px;
	top: 1.5em;
	width: 24px;
	height: 24px;
	background: var(--primary-color);
	color: #fff;
	font-size: 1.3rem;
	font-weight: 700;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}

.entry-content .faq h3 + p {
	padding: 16px 20px 16px 48px;
	margin-bottom: 12px;
	position: relative;
}

.entry-content .faq h3 + p::before {
	content: "A";
	font-family: "Inter", sans-serif;
	position: absolute;
	left: 16px;
	top: 1.5em;
	width: 24px;
	height: 24px;
	background: #ff7043;
	color: #fff;
	font-size: 1.3rem;
	font-weight: 700;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}

/* ==========================================================================
   Sidebar
   ========================================================================== */
.sidebar-column {
	position: sticky;
	top: 120px;
	align-self: start;
}

/* ==========================================================================
   Author Box
   ========================================================================== */
.author-box {
	display: flex;
	gap: 24px;
	margin-top: 60px;
	padding: 24px;
	background: #fff;
	border: 1px solid #DCDCDC;
}

.author-box-image {
	flex-shrink: 0;
}

.author-box-image img {
	width: 120px;
	height: 120px;
	border-radius: 50%;
	object-fit: cover;
}

.author-box-info {
	flex: 1;
	min-width: 0;
}

.author-box-title {
	font-size: 1.2rem;
	font-weight: 400;
	color: #000;
	margin-bottom: 0;
}

.author-box-name {
	font-size: 1.6rem;
	font-weight: 600;
	margin-bottom: 6px;
}

.author-box-bio {
	font-size: 1.2rem;
	line-height: 1.5;
	color: #333;
	margin-bottom: 6px;
}

.author-box-link a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 1.2rem;
	color: var(--primary-color);
	text-decoration: none;
}

.author-box-link a::before {
	content: "";
	width: 6px;
	height: 12px;
	background-color: var(--primary-color);
	-webkit-mask: url('../images/arrow-right-sm.svg') no-repeat center / contain;
	mask: url('../images/arrow-right-sm.svg') no-repeat center / contain;
	flex-shrink: 0;
}

.author-box-link a svg {
	display: none;
}

.author-box-link a:hover {
	text-decoration: underline;
}

.widget {
	margin-bottom: 24px;
}

.widget-title {
	font-size: 1.8rem;
	font-weight: 700;
	margin-bottom: 16px;
	padding-bottom: 12px;
	border-bottom: 1px solid #DCDCDC;
}

.popular-posts {
	list-style: none;
	padding: 0;
}

.popular-posts li {
	margin-bottom: 18px;
}

.popular-posts li a {
	color: var(--primary-color);
	font-size: 1.4rem;
	display: flex;
	align-items: center;
	gap: 8px;
	line-height: 1.5;
	text-decoration: none;
}

.popular-posts li a::before {
	content: "";
	flex-shrink: 0;
	width: 8px;
	height: 13px;
	background-color: var(--primary-color);
	-webkit-mask: url('../images/arrow-right.svg') no-repeat center / contain;
	mask: url('../images/arrow-right.svg') no-repeat center / contain;
}

.popular-posts li a:hover {
	text-decoration: underline;
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer {
	background: #fff;
	border-top: 1px solid #DCDCDC;
}

.footer-top {
	padding: 40px 0;
}

.footer-grid {
	display: flex;
	gap: 40px;
}

.footer-brand {
	flex: 0 0 220px;
}

.footer-col {
	flex: 1;
}

.footer-logo-area {
	margin-bottom: 8px;
}

.footer-logo-area img {
	width: 115px;
	height: auto;
}

.footer-badge {
	font-size: 1.8rem;
	font-weight: 700;
	color: var(--primary-color);
	margin-bottom: 12px;
}

.footer-description {
	font-size: 1.4rem;
	font-weight: 400;
	color: #333;
	line-height: 1.7;
}

.footer-heading {
	font-size: 1.6rem;
	font-weight: 700;
	margin-bottom: 16px;
	color: #333;
}

.footer-menu {
	list-style: none;
	padding: 0;
}

.footer-menu li {
	margin-bottom: 10px;
}

.footer-menu li a {
	color: #333;
	font-size: 1.4rem;
	font-weight: 400;
}

.footer-menu li a:hover {
	color: var(--primary-color);
}

.footer-bottom {
	border-top: 1px solid #DCDCDC;
	padding: 20px 0;
	text-align: center;
	font-size: 1.4rem;
	color: #000;
}

/* ==========================================================================
   Archive
   ========================================================================== */
.archive-header {
	margin-bottom: 32px;
	padding: 32px 0 0;
}

.archive-title {
	font-size: 2.4rem;
	font-weight: 700;
}

.archive-description {
	margin-top: 8px;
	color: #666;
}

/* ==========================================================================
   404
   ========================================================================== */
/* Search */
.no-results {
	padding: 60px 0;
	text-align: center;
}

.no-results p {
	margin-bottom: 16px;
	color: #666;
}

.no-results .search-form {
	display: inline-flex;
	margin-top: 16px;
}

.error-404 {
	text-align: center;
	padding: 80px 20px;
}

.error-404 h1 {
	font-size: 2.4rem;
	margin-bottom: 16px;
}

.error-404 p {
	margin-bottom: 16px;
	color: #666;
}

.error-404 .search-form {
	display: inline-flex;
	margin: 24px 0;
}

.error-404-btn {
	margin-top: 16px;
}

.btn {
	display: inline-block;
	padding: 12px 32px;
	background: var(--primary-color);
	color: #fff;
	border-radius: 6px;
	font-weight: 600;
	text-align: center;
	transition: opacity 0.3s;
}

.btn:hover {
	opacity: 0.85;
	text-decoration: none;
	color: #fff;
}

/* ==========================================================================
   Pagination
   ========================================================================== */
.pagination {
	margin: 40px 0;
	text-align: center;
}

.page-numbers {
	display: inline-block;
	padding: 8px 14px;
	margin: 0 4px;
	border: 1px solid #ddd;
	border-radius: 4px;
	color: #333;
	text-decoration: none;
	transition: border-color 0.3s;
}

.page-numbers:hover {
	border-color: var(--primary-color);
	text-decoration: none;
}

.page-numbers.current {
	background: var(--primary-color);
	color: #fff;
	border-color: var(--primary-color);
}

/* ==========================================================================
   Writer Page
   ========================================================================== */
.writer-page-header {
	padding: 40px 0 30px;
}

.writer-page-header .entry-title {
	font-size: 3.2rem;
	font-weight: 700;
	margin-bottom: 12px;
}

.writer-page-desc {
	font-size: 1.8rem;
	color: #333;
}

/* メインライター */
.writer-main {
	padding: 0;
}

.writer-main-name {
	font-size: 2.4rem;
	font-weight: 700;
	margin-bottom: 24px;
}

.writer-name-en {
	font-weight: 700;
	color: #333;
}

.writer-main-content {
	display: flex;
	gap: 30px;
}

.writer-main-image {
	flex-shrink: 0;
}

.writer-main-image img {
	width: 275px;
	height: 275px;
	object-fit: cover;
}

.writer-main-info {
	flex: 1;
	min-width: 0;
}

.writer-main-title {
	font-size: 1.8rem;
	font-weight: 700;
	margin-bottom: 12px;
}

.writer-main-bio {
	font-size: 1.8rem;
	line-height: 1.7;
	margin-bottom: 16px;
}

.writer-main-detail {
	font-size: 1.8rem;
	line-height: 1.7;
}

.writer-main-detail h3 {
	font-size: 1.8rem;
	font-weight: 700;
	margin: 40px 0 8px;
}

.writer-main-detail p {
	margin-bottom: 16px;
}

.writer-main-detail ul,
.writer-main-detail ol {
	margin: 16px 0;
}

.writer-main-detail li {
	margin-bottom: 8px;
}

.writer-main-detail a {
	color: var(--primary-color);
}

.writer-main-detail ul {
	list-style: none;
	padding: 0;
}

.writer-main-detail ul li::before {
	content: "・";
}

/* その他のライター */
.writer-others {
	padding: 50px 0 60px;
}

.writer-others-heading {
	font-size: 2.4rem;
	font-weight: 700;
	margin-bottom: 30px;
}

.writer-others-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 45px;
}

.writer-card {
	display: flex;
	align-items: flex-start;
	gap: 16px;
}

.writer-card-image {
	flex-shrink: 0;
}

.writer-card-image img {
	width: 155px;
	height: 155px;
	object-fit: cover;
}

.writer-card-info {
	flex: 1;
	min-width: 0;
}

.writer-card-name {
	font-size: 1.8rem;
	font-weight: 700;
	margin-bottom: 6px;
}

.writer-card-bio {
	font-size: 1.4rem;
	font-weight: 400;
	line-height: 1.5;
	color: #333;
	margin-bottom: 8px;
}

.writer-card-link a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 1.8rem;
	color: var(--primary-color);
	text-decoration: none;
}

.writer-card-link a::before {
	content: "";
	width: 6px;
	height: 12px;
	background-color: var(--primary-color);
	-webkit-mask: url('../images/arrow-right-sm.svg') no-repeat center / contain;
	mask: url('../images/arrow-right-sm.svg') no-repeat center / contain;
	flex-shrink: 0;
}

.writer-card-link a:hover {
	text-decoration: underline;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

/* --- Tablet (max-width: 1080px) --- */
@media (max-width: 1080px) {
	.cards-grid {
		grid-template-columns: repeat(2, 1fr);
		justify-content: start;
		gap: 30px;
	}
}

/* --- Tablet (max-width: 900px) --- */
@media (max-width: 900px) {
	/* 2カラム → 1カラム */
	.content-with-sidebar {
		grid-template-columns: 1fr;
	}

	.sidebar-column {
		position: static;
	}

	/* ライター一覧 2列 → 1列 */
	.writer-others-grid {
		grid-template-columns: 1fr;
	}

	/* フッター */
	.footer-grid {
		flex-wrap: wrap;
		gap: 30px 40px;
	}

	.footer-brand {
		flex: 0 0 100%;
	}

	.footer-col {
		flex: 1;
		min-width: 0;
	}
}

/* --- SP (max-width: 768px) --- */
@media (max-width: 768px) {

	/* ===== Header ===== */
	.header-inner {
		height: 52px;
	}

	.site-logo img {
		width: 80px;
	}

	.site-badge {
		font-size: 1.4rem;
		width: auto;
		padding: 1px 10px;
	}

	.logo-area {
		gap: 12px;
	}

	.header-right {
		display: none;
	}

	.hamburger {
		display: flex;
	}

	.primary-nav {
		display: none;
		border-bottom: none;
	}

	.primary-nav.is-open {
		display: block;
		border-bottom: 1px solid #DCDCDC;
	}

	.primary-nav .nav-menu {
		flex-direction: column;
		gap: 0;
	}

	.primary-nav .nav-menu li a {
		padding: 12px 20px;
		font-size: 1.4rem;
		border-bottom: 1px solid #eee;
	}

	.sp-search-form {
		display: block;
		padding: 16px 20px;
	}

	.sp-search-form .search-form {
		width: 100%;
	}

	.sp-search-form .search-field {
		width: 100%;
		font-size: 1.6rem;
	}

	.hamburger.is-active span:nth-child(1) {
		transform: translateY(7px) rotate(45deg);
	}

	.hamburger.is-active span:nth-child(2) {
		opacity: 0;
	}

	.hamburger.is-active span:nth-child(3) {
		transform: translateY(-7px) rotate(-45deg);
	}

	/* ===== Hero ===== */
	.hero-bg {
		padding: 50px 0 40px;
	}

	.hero-title {
		font-size: 2.4rem;
		margin-bottom: 20px;
	}

	.hero-subtitle {
		font-size: 1.5rem;
	}

	/* ===== カードメニュー ===== */
	.category-cards {
		padding: 60px 0 80px;
	}

	.cards-grid {
		grid-template-columns: 1fr;
		row-gap: 30px;
	}

	.card-title {
		font-size: 1.6rem;
	}

	.card-desc {
		font-size: 1.3rem;
	}

	/* ===== 記事一覧 ===== */
	.section-title {
		font-size: 2rem;
		padding-bottom: 20px;
	}

	.article-card-link {
		gap: 16px;
		padding: 24px 0;
	}

	.article-card-thumb {
		width: 120px;
		height: 120px;
	}

	.article-card-title {
		font-size: 1.8rem;
	}

	.article-card-excerpt {
		padding-top: 10px;
		font-size: 1.4rem;
	}

	/* ===== パンくず ===== */
	.breadcrumb {
		font-size: 1.0rem;
	}

	.breadcrumb-list li + li::before {
		margin: 0 6px;
	}

	/* ===== レイアウト ===== */
	.page-content {
		padding: 30px 0 40px;
	}

	.content-with-sidebar {
		padding: 30px 0 40px;
	}

	.site-content {
		padding-bottom: 60px;
	}

	/* ===== エントリー ===== */
	.entry-header {
		margin-bottom: 20px;
	}

	.entry-title {
		font-size: 2.6rem;
		margin-bottom: 16px;
	}

	.entry-thumbnail {
		margin-bottom: 24px;
	}

	.entry-content,
	.summary-card-wrap {
		font-size: 1.6rem;
	}

	.summary-card-wrap .summary-card {
		padding: 20px;
		margin-bottom: 24px;
	}

	.summary-card-wrap h2 {
		font-size: 2rem;
		margin: 0 0 8px;
	}

	.entry-content h2 {
		font-size: 2rem;
		margin: 36px 0 12px;
		scroll-margin-top: 80px;
	}

	.entry-content h3 {
		font-size: 1.8rem;
		margin: 28px 0 10px;
	}

	.entry-content p {
		margin-bottom: 14px;
	}

	.entry-content ul,
	.entry-content ol {
		margin: 14px 0;
	}

	/* ===== details/summary ===== */
	.entry-content details {
		margin: 20px 0;
	}

	.entry-content details summary {
		padding: 14px 16px;
		font-size: 1.4rem;
	}

	.entry-content details summary::before {
		font-size: 1.1rem;
	}

	.entry-content details > *:not(summary) {
		padding: 0 16px;
	}

	/* ===== 目次 ===== */
	.toc {
		margin: 20px 0 24px;
		padding: 16px 0;
	}

	.toc-title {
		font-size: 1.6rem;
		margin-bottom: 10px;
	}

	.toc ul {
		padding: 0 0 0 20px;
	}

	.toc ul li a {
		font-size: 1.3rem;
	}

	/* ===== テーブル ===== */
	.table-scroll-wrap {
		margin: 20px 0;
	}

	.entry-content table {
		min-width: 500px;
	}

	.entry-content table th,
	.entry-content table td {
		padding: 10px 12px;
		font-size: 1.3rem;
		min-width: 100px;
	}

	.entry-content table th {
		font-size: 1.6rem;
	}

	.entry-content table td {
		min-width: 120px;
	}

	/* ===== 引用 ===== */
	.entry-content blockquote {
		margin: 20px 0;
		padding: 40px 20px;
		font-size: 1.6rem;
	}

	.entry-content blockquote::before,
	.entry-content blockquote::after {
		width: 20px;
		height: 17px;
	}

	.entry-content blockquote::before {
		top: 12px;
		left: 16px;
	}

	.entry-content blockquote::after {
		bottom: 12px;
		right: 16px;
	}

	/* ===== FAQ ===== */
	.entry-content .faq h3 {
		font-size: 1.6rem;
		padding: 14px 16px 14px 42px;
	}

	.entry-content .faq h3::before,
	.entry-content .faq h3 + p::before {
		left: 12px;
		width: 22px;
		height: 22px;
		font-size: 1.2rem;
	}

	.entry-content .faq h3 + p {
		padding: 14px 16px 14px 42px;
		margin-bottom: 10px;
	}

	/* ===== 著者ボックス ===== */
	.author-box {
		flex-direction: column;
		align-items: center;
		gap: 16px;
		padding: 20px;
		margin-top: 40px;
	}

	.author-box-info {
		text-align: center;
	}

	.author-box-bio {
		text-align: left;
	}

	.author-box-image img {
		width: 100px;
		height: 100px;
	}

	/* ===== サイドバー ===== */
	.sidebar-column {
		margin-top: 40px;
	}

	.widget {
		margin-bottom: 20px;
	}

	.widget-title {
		font-size: 1.6rem;
		margin-bottom: 12px;
		padding-bottom: 10px;
	}

	.popular-posts li {
		margin-bottom: 14px;
	}

	.popular-posts li a {
		font-size: 1.3rem;
	}

	/* ===== ライターページ ===== */
	.writer-page-desc {
		font-size: 1.6rem;
	}

	.writer-main-content {
		flex-direction: column;
		align-items: center;
		gap: 20px;
	}

	.writer-main-image img {
		width: 200px;
		height: 200px;
	}

	.writer-main-name {
		font-size: 2rem;
		margin-bottom: 16px;
	}

	.writer-name-en {
		display: block;
		font-size: 1.6rem;
		margin-top: 4px;
	}

	.writer-main-title {
		font-size: 1.6rem;
	}

	.writer-main-bio {
		font-size: 1.6rem;
		margin-bottom: 12px;
	}

	.writer-main-detail {
		font-size: 1.6rem;
	}

	.writer-main-detail h3 {
		font-size: 1.6rem;
		margin: 28px 0 8px;
	}

	.writer-main-detail p {
		margin-bottom: 12px;
	}

	.writer-others {
		padding: 40px 0;
	}

	.writer-others-heading {
		font-size: 2rem;
		margin-bottom: 24px;
	}

	.writer-others-grid {
		gap: 30px;
	}

	.writer-card {
		gap: 12px;
	}

	.writer-card-image img {
		width: 100px;
		height: 100px;
	}

	.writer-card-name {
		font-size: 1.6rem;
	}

	.writer-card-bio {
		font-size: 1.3rem;
	}

	.writer-card-link a {
		font-size: 1.4rem;
	}

	/* ===== フッター ===== */
	.footer-top {
		padding: 30px 0;
	}

	.footer-grid {
		flex-direction: column;
		gap: 24px;
	}

	.footer-brand {
		max-width: 100%;
	}

	.footer-col {
		min-width: 0;
	}

	.footer-logo-area img {
		width: 90px;
	}

	.footer-badge {
		font-size: 1.6rem;
	}

	.footer-description {
		font-size: 1.3rem;
	}

	.footer-heading {
		font-size: 1.5rem;
		margin-bottom: 12px;
	}

	.footer-menu li a {
		font-size: 1.3rem;
	}

	.footer-bottom {
		padding: 16px 0;
		font-size: 1.2rem;
	}

	/* ===== ページネーション ===== */
	.pagination {
		margin: 30px 0;
	}

	.page-numbers {
		padding: 6px 12px;
		font-size: 1.3rem;
	}

	/* ===== 404 ===== */
	.error-404 {
		padding: 50px 20px;
	}

	.error-404 h1 {
		font-size: 2rem;
	}

	.error-404 p {
		margin-bottom: 24px;
	}

	.btn {
		padding: 10px 24px;
	}

	/* ===== 検索結果なし ===== */
	.no-results {
		padding: 40px 0;
	}
}

/* --- Small SP (max-width: 480px) --- */
@media (max-width: 480px) {
	.row {
		padding: 0 15px;
	}

	.header-inner {
		padding: 0 15px;
	}

	/* Hero */
	.hero-title {
		font-size: 2rem;
	}

	.hero-subtitle {
		font-size: 1.4rem;
	}

	.article-card-thumb {
		width: 80px;
		height: 80px;
	}

	/* エントリータイトル */
	.entry-title {
		font-size: 2.4rem;
	}

	/* 著者ボックス */
	.author-box {
		padding: 16px;
	}

	/* ライター */
	.writer-main-image img {
		width: 160px;
		height: 160px;
	}

	.writer-card-image img {
		width: 80px;
		height: 80px;
	}

	/* フッター */
	.footer-bottom {
		font-size: 1.1rem;
	}
}
