/**
 * カスタムスタイル
 *
 * テーマ固有の追加スタイルはこちらに記述してください。
 *
 * @package Kansuki
 * @since 1.0.0
 */

/* カスタムスタイルをここに追加 */

/* ============================================
   サイト全体のモーション（スクロール演出）
   ============================================ */

/**
 * 下からフワッとフェードインする基本モーション
 * JS から .motion-fade-up と .is-in-view を付与します。
 */
.motion-fade-up {
	opacity: 0;
	transform: translateY(24px);
	transition-property: opacity, transform;
	transition-duration: 0.8s;
	transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
	transition-delay: var(--motion-delay, 0s);
	will-change: opacity, transform;
}

.motion-fade-up.is-in-view {
	opacity: 1;
	transform: translateY(0);
}

/* アクセシビリティ: 動きを減らしたいユーザーにはアニメーションを無効化 */
@media (prefers-reduced-motion: reduce) {
	.motion-fade-up {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}

/* ============================================
   活動ページ
   ============================================ */

.activity-hero {
	margin-bottom: var(--space-3xl, 3rem);
	text-align: center;
}

.activity-title {
	font-size: var(--font-size-3xl);
	color: var(--color-black);
	margin-bottom: var(--space-xl);
	line-height: 1.3;
}

.activity-section {
	margin-bottom: var(--space-3xl);
}

.activity-section--bg {
	padding: var(--space-2xl);
	background: linear-gradient(135deg, rgba(0, 166, 203, 0.05) 0%, rgba(0, 166, 203, 0.02) 100%);
	border-radius: var(--radius-md, 8px);
}

.activity-section h2 {
	font-size: var(--font-size-2xl);
	color: var(--color-primary);
	margin-bottom: var(--space-xl);
	border-bottom: 3px solid var(--color-primary);
	padding-bottom: var(--space-sm);
	display: inline-block;
}

.activity-aim-list,
.activity-content-list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.activity-content-list li {
	position: relative;
	padding-left: 1.5em;
}

.activity-content-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 6px;
	height: 6px;
	background: var(--color-primary);
	border-radius: 50%;
}

.activity-aim-list li:last-child,
.activity-content-list li:last-child {
	margin-bottom: 0;
}

.activity-aim-list li p,
.activity-content-list li p {
	margin: 0;
	line-height: 1.9;
}

/* リード文 */
.activity-lead {
	margin-bottom: var(--space-3xl, 3rem);
}

.activity-lead p {
	margin-bottom: var(--space-lg, 1.25rem);
	line-height: 2;
	font-size: 1.05rem;
	color: var(--color-text, #333);
}

.activity-lead p:last-child {
	margin-bottom: 0;
	font-weight: 700;
	color: var(--color-primary);
}

/* 活動イントロノート */
.activity-intro-note {
	margin-bottom: var(--space-3xl, 3rem);
	padding: var(--space-lg, 1.25rem) var(--space-xl, 1.5rem);
	background: rgba(0, 0, 0, 0.03);
	border-radius: var(--radius-md, 8px);
	line-height: 1.9;
	color: var(--color-text-muted, #666);
	font-size: 0.95rem;
}

/* 年度ブロック */
.activity-year-block {
	margin-bottom: var(--space-3xl, 3rem);
}

.activity-year-block__title {
	display: inline-block;
	font-size: var(--font-size-xl);
	font-weight: 900;
}

/* 年度ブロック内のh3（ねらい・内容などの小見出し） */
.activity-section h3 {
	font-size: var(--font-size-2xl);
	color: var(--color-primary);
	margin-bottom: var(--space-xl);
	border-bottom: 3px solid var(--color-primary);
	padding-bottom: var(--space-sm);
	display: inline-block;
}

/* 活動アイテム（写真＋テキスト横並び） */
.activity-item {
	display: flex;
	gap: var(--space-xl);
	align-items: flex-start;
	margin-bottom: var(--space-3xl, 3rem);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md, 8px);
	padding: var(--space-xl, 1.5rem);
}

.activity-item__image {
	flex: 0 0 42%;
	margin: 0;
}

.activity-item__image img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--radius-sm, 4px);
}

.activity-item__body {
	flex: 1;
	min-width: 0;
}

.activity-item__number {
	display: block;
	font-size: 0.8rem;
	color: var(--color-gray, #999);
	letter-spacing: 0.1em;
	margin-bottom: var(--space-xs, 0.25rem);
}

.activity-item__title {
	font-size: var(--font-size-xl, 1.25rem);
	font-weight: 900;
	color: var(--color-black, #1a1a1a);
	line-height: 1.5;
	border-bottom: none;
	margin-bottom: var(--space-sm, 0.5rem);
}

.activity-item__section {
	margin-bottom: var(--space-xl, 1.5rem);
}

.activity-item__section:last-child {
	margin-bottom: 0;
}

.activity-item__heading {
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-sm, 0.5rem);
	padding-bottom: var(--space-xs, 0.25rem);
	display: inline-block;
}

/* 縦レイアウト（テキスト上・画像下） */
.activity-item--vertical {
	flex-direction: column;
}

.activity-item--vertical .activity-item__body {
	flex: none;
	width: 100%;
}

.activity-item__gallery {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-lg, 1.25rem);
	width: 100%;
}

.activity-item__gallery img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--radius-sm, 4px);
	object-fit: cover;
}

@media (max-width: 640px) {
	.activity-item {
		flex-direction: column;
	}

	.activity-item__image {
		flex: none;
		width: 100%;
	}

	.activity-item__gallery {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 768px) {
	.activity-hero {
		margin-bottom: var(--space-xl);
	}

	.activity-section {
		margin-bottom: var(--space-xl);
	}

	.activity-section--bg {
		padding: var(--space-lg);
	}

	.activity-lead {
		margin-bottom: var(--space-xl);
	}

	.activity-intro-note {
		margin-bottom: var(--space-xl);
		padding: var(--space-md) var(--space-lg);
	}

	.activity-year-block {
		margin-bottom: var(--space-xl);
	}

	.activity-item {
		gap: var(--space-lg);
		margin-bottom: var(--space-xl);
		padding: var(--space-md);
	}
}

@media (max-width: 480px) {
	.activity-hero {
		margin-bottom: var(--space-lg);
	}

	.activity-title {
		font-size: var(--font-size-2xl);
		margin-bottom: var(--space-md);
	}

	.activity-section {
		margin-bottom: var(--space-lg);
	}

	.activity-section--bg {
		padding: var(--space-md);
	}

	.activity-section h2,
	.activity-section h3 {
		font-size: var(--font-size-xl);
		margin-bottom: var(--space-md);
	}

	.activity-lead {
		margin-bottom: var(--space-lg);
	}

	.activity-lead p {
		font-size: 1rem;
	}

	.activity-intro-note {
		margin-bottom: var(--space-lg);
		padding: var(--space-sm) var(--space-md);
		font-size: 0.9rem;
	}

	.activity-year-block {
		margin-bottom: var(--space-lg);
	}

	.activity-item {
		gap: var(--space-md);
		margin-bottom: var(--space-lg);
		padding: var(--space-sm);
	}

	.activity-item__section {
		margin-bottom: var(--space-md);
	}

	.activity-future-equation {
		padding: var(--space-md);
		font-size: 1rem;
	}
}

/* 将来の活動 */
.activity-future-tagline {
	font-size: 1.15rem;
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-xl, 1.5rem);
	line-height: 1.7;
}

.activity-section > .activity-content-list {
	margin-bottom: var(--space-2xl, 2rem);
}

.activity-future-equation {
	padding: var(--space-lg, 1.25rem) var(--space-xl, 1.5rem);
	background: var(--color-primary);
	color: white;
	font-size: 1.1rem;
	font-weight: 900;
	text-align: center;
	border-radius: var(--radius-md, 8px);
	letter-spacing: 0.05em;
	line-height: 1.7;
}

/* ============================================
   地域紹介ページ
   ============================================ */

.regional-hero {
	text-align: center;
}

.regional-lead {
	font-size: var(--font-size-lg);
	line-height: 1.9;
	max-width: 40em;
	margin-left: auto;
	margin-right: auto;
}

.regional-section {
	margin-bottom: var(--space-3xl);
	padding: var(--space-2xl);
	background: linear-gradient(135deg, rgba(0, 166, 203, 0.05) 0%, rgba(0, 166, 203, 0.02) 100%);
	border-radius: var(--radius-md, 8px);
}

.regional-section h2 {
	margin-top: 0;
	font-size: var(--font-size-2xl);
	color: var(--color-primary);
	margin-bottom: var(--space-xl);
	border-bottom: 3px solid var(--color-primary);
	padding-bottom: var(--space-sm);
}

.regional-list {
	list-style: none;
	padding: 0;
	margin: 0;
	margin-top: var(--space-lg);
}

.regional-list li {
	margin-bottom: var(--space-lg);
	padding-left: 1.5em;
	position: relative;
}

.regional-list li:last-child {
	margin-bottom: 0;
}

.regional-list li > span {
	position: absolute;
	left: 0;
	color: var(--color-primary);
	font-weight: 700;
}

.regional-list li p {
	margin: 0;
	line-height: 1.9;
}

.regional-read {
	font-size: var(--font-size-sm);
	margin-bottom: var(--space-lg);
	font-style: italic;
}

/* 地域セクション内の画像3枚横並び */
.regional-images {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--space-lg, 1.25rem);
	margin-top: var(--space-2xl, 2rem);
}

.regional-images img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: var(--radius-sm, 4px);
	object-fit: cover;
}

@media (max-width: 640px) {
	.regional-images {
		grid-template-columns: 1fr;
	}
}

/* 地域ページ：Google Map 埋め込み */
.regional-map {
	margin-top: var(--space-3xl);
	padding: var(--space-2xl);
	background: linear-gradient(135deg, rgba(0, 166, 203, 0.05) 0%, rgba(0, 166, 203, 0.02) 100%);
	border-radius: var(--radius-md, 8px);
}

.regional-map h2 {
	font-size: var(--font-size-2xl);
	color: var(--color-primary);
	margin-bottom: var(--space-xl);
	border-bottom: 3px solid var(--color-primary);
	padding-bottom: var(--space-sm);
	display: inline-block;
}

.regional-map__embed {
	overflow: hidden;
	border-radius: var(--radius-sm, 4px);
}

.regional-map__embed iframe {
	display: block;
	width: 100%;
	height: 400px;
}

/* --- 地域紹介ページ モバイル余白縮小 --- */
@media (max-width: 768px) {
	.regional-hero {
		margin-bottom: var(--space-xl);
	}

	.regional-section {
		margin-bottom: var(--space-xl);
		padding: var(--space-lg);
	}

	.regional-map {
		margin-top: var(--space-xl);
		padding: var(--space-lg);
	}

	.regional-images {
		gap: var(--space-md);
		margin-top: var(--space-lg);
	}
}

@media (max-width: 480px) {
	.regional-hero {
		margin-bottom: var(--space-lg);
	}

	.regional-section {
		margin-bottom: var(--space-lg);
		padding: var(--space-md);
	}

	.regional-section h2 {
		font-size: var(--font-size-xl);
		margin-bottom: var(--space-md);
	}

	.regional-map {
		margin-top: var(--space-lg);
		padding: var(--space-md);
	}

	.regional-map h2 {
		font-size: var(--font-size-xl);
		margin-bottom: var(--space-md);
	}

	.regional-map__embed iframe {
		height: 280px;
	}

	.regional-images {
		gap: var(--space-sm);
		margin-top: var(--space-md);
	}

	.regional-list li {
		margin-bottom: var(--space-md);
	}
}

/* ============================================
   お問い合わせページ
   ============================================ */

.contact-section {
	max-width: var(--container-narrow, 800px);
	margin: 0 auto;
}

.contact-lead {
	margin-bottom: var(--space-2xl);
	text-align: center;
}

.contact-lead p {
	font-size: var(--font-size-lg);
	line-height: 2;
	color: var(--color-text);
}

/* 電話番号エリア */
.contact-info {
	margin-bottom: var(--space-3xl);
}

.contact-info__item {
	display: flex;
	align-items: flex-start;
	gap: var(--space-md);
	padding: var(--space-xl);
	background: linear-gradient(135deg, rgba(0, 166, 203, 0.05) 0%, rgba(0, 166, 203, 0.02) 100%);
	border-radius: var(--radius-md);
	border-left: 4px solid var(--color-primary);
}

.contact-info__icon {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	background: var(--color-primary);
	color: var(--color-white);
	border-radius: 50%;
}

.contact-info__label {
	display: block;
	font-size: var(--font-size-sm);
	font-weight: 700;
	color: var(--color-primary);
	margin-bottom: var(--space-xs);
}

.contact-info__value {
	display: block;
	font-size: var(--font-size-2xl);
	font-weight: 900;
	color: var(--color-black);
	letter-spacing: 0.05em;
}

.contact-info__note {
	display: block;
	font-size: var(--font-size-xs);
	color: var(--color-gray);
	margin-top: var(--space-xs);
}

/* フォームタイトル */
.contact-form-wrap {
	margin-bottom: var(--space-2xl);
}

.contact-form-title {
	font-size: var(--font-size-2xl);
	color: var(--color-primary);
	margin-bottom: var(--space-md);
	border-bottom: 3px solid var(--color-primary);
	padding-bottom: var(--space-sm);
	display: inline-block;
}

.contact-form-note {
	font-size: var(--font-size-sm);
	color: var(--color-gray);
	margin-bottom: var(--space-xl);
}

.contact-required {
	color: #e74c3c;
	font-weight: 700;
}

/* プレースホルダー（CF7ショートコード未設定時） */
.contact-form-placeholder {
	padding: var(--space-2xl);
	background: #f9f9f9;
	border: 2px dashed var(--color-border);
	border-radius: var(--radius-md);
	text-align: center;
	color: var(--color-gray);
}

.contact-form-placeholder p {
	margin-bottom: var(--space-sm);
	line-height: 1.8;
}

.contact-form-placeholder p:last-child {
	margin-bottom: 0;
}

/* プライバシーノート */
.contact-privacy-note {
	padding: var(--space-lg);
	background: #f9f9f9;
	border-radius: var(--radius-md);
	text-align: center;
}

.contact-privacy-note p {
	font-size: var(--font-size-sm);
	color: var(--color-gray);
	line-height: 1.8;
}

.contact-privacy-note a {
	color: var(--color-primary);
	font-weight: 600;
	text-decoration: underline;
}

/* ============================================
   Contact Form 7 スタイル
   ============================================ */

.wpcf7 {
	margin-bottom: var(--space-xl);
}

.wpcf7-form .contact-form-row {
	margin-bottom: var(--space-lg);
}

.wpcf7-form .contact-form-row:last-of-type {
	margin-bottom: var(--space-xl);
}

.wpcf7-form label,
.wpcf7-form .contact-form-label {
	display: block;
	font-weight: 700;
	margin-bottom: var(--space-sm);
	font-size: var(--font-size-base);
	color: var(--color-black);
	text-align: left;
}

.wpcf7-form .contact-form-label .contact-required {
	margin-left: 0.5em;
	font-size: var(--font-size-xs);
}

.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form textarea,
.wpcf7-form select {
	width: 100%;
	padding: var(--space-sm) var(--space-md);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	font-family: var(--font-sans);
	font-size: var(--font-size-base);
	line-height: 1.6;
	color: var(--color-text);
	background-color: var(--color-white);
	transition: border-color var(--transition), box-shadow var(--transition);
	-webkit-appearance: none;
	appearance: none;
}

.wpcf7-form textarea {
	min-height: 200px;
	resize: vertical;
}

.wpcf7-form select {
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-md) center;
	padding-right: calc(var(--space-md) + 20px);
}

.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form input[type="url"]:focus,
.wpcf7-form textarea:focus,
.wpcf7-form select:focus {
	outline: none;
	border-color: var(--color-primary);
	box-shadow: 0 0 0 3px rgba(0, 166, 203, 0.15);
}

/* バリデーションエラー */
.wpcf7-not-valid {
	border-color: #e74c3c !important;
}

.wpcf7-not-valid-tip {
	display: block;
	margin-top: var(--space-xs);
	font-size: var(--font-size-xs);
	color: #e74c3c;
	font-weight: 600;
}

/* 送信ボタン */
.wpcf7-form .contact-submit-wrap {
	text-align: center;
	margin-top: var(--space-2xl);
}

.wpcf7-form input[type="submit"] {
	display: inline-block;
	min-width: 280px;
	padding: var(--space-md) var(--space-2xl);
	background: var(--color-primary);
	color: var(--color-white);
	border: 2px solid var(--color-primary);
	border-radius: var(--radius-md);
	font-family: var(--font-sans);
	font-size: var(--font-size-lg);
	font-weight: 700;
	letter-spacing: 0.1em;
	cursor: pointer;
	transition: background var(--transition), color var(--transition), transform 0.15s ease;
}

.wpcf7-form input[type="submit"]:hover {
	background: transparent;
	color: var(--color-primary);
}

.wpcf7-form input[type="submit"]:active {
	transform: scale(0.97);
}

.wpcf7-form input[type="submit"]:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

/* 送信完了・エラーメッセージ */
.wpcf7-response-output {
	margin: var(--space-xl) 0 0 !important;
	padding: var(--space-md) var(--space-lg) !important;
	border-radius: var(--radius-sm) !important;
	font-size: var(--font-size-sm);
	text-align: center;
}

.wpcf7-mail-sent-ok,
.wpcf7 form.sent .wpcf7-response-output {
	border-color: #27ae60 !important;
	background: rgba(39, 174, 96, 0.05);
	color: #27ae60;
}

.wpcf7-validation-errors,
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output {
	border-color: #e74c3c !important;
	background: rgba(231, 76, 60, 0.05);
	color: #e74c3c;
}

.wpcf7-spam-blocked,
.wpcf7 form.spam .wpcf7-response-output {
	border-color: #f39c12 !important;
	background: rgba(243, 156, 18, 0.05);
	color: #f39c12;
}

/* CF7送信中スピナー */
.wpcf7-spinner {
	display: inline-block;
	margin-left: var(--space-sm);
}

/* ============================================
   お問い合わせページ モバイル対応
   ============================================ */

@media (max-width: 768px) {
	.contact-lead {
		margin-bottom: var(--space-xl);
		text-align: left;
	}

	.contact-lead p {
		font-size: var(--font-size-base);
	}

	.contact-info {
		margin-bottom: var(--space-2xl);
	}

	.contact-info__item {
		padding: var(--space-lg);
	}

	.contact-info__value {
		font-size: var(--font-size-xl);
	}

	.contact-form-wrap {
		margin-bottom: var(--space-xl);
	}

	.wpcf7-form input[type="submit"] {
		min-width: auto;
		width: 100%;
	}
}

@media (max-width: 480px) {
	.contact-lead {
		margin-bottom: var(--space-lg);
	}

	.contact-lead p {
		font-size: var(--font-size-sm);
	}

	.contact-info__item {
		flex-direction: column;
		align-items: center;
		text-align: center;
		padding: var(--space-md);
	}

	.contact-info__value {
		font-size: var(--font-size-lg);
	}

	.contact-form-title {
		font-size: var(--font-size-xl);
	}

	.contact-privacy-note {
		padding: var(--space-md);
		text-align: left;
	}
}

/* Content area text links */
.content-area a:not(.btn):not(.button):not(.wp-block-button__link) {
	text-decoration: underline;
}

.content-area a:not(.btn):not(.button):not(.wp-block-button__link):hover {
	text-decoration: none;
}

/* News item link underlines */
a.news-item .news-item__title {
	text-decoration: underline;
}

a.news-item:hover .news-item__title {
	text-decoration: none;
}

/* ============================================
   お知らせアーカイブ（2カラムレイアウト）
   ============================================ */
.section-news-archive .news-archive__inner {
	display: flex;
	gap: var(--space-3xl, 3rem);
	align-items: flex-start;
}

.section-news-archive .news-archive__list {
	flex: 1 1 auto;
}

.section-news-archive .news-archive__years {
	flex: 0 0 240px;
}

@media (max-width: 768px) {
	.section-news-archive .news-archive__inner {
		flex-direction: column;
	}

	.section-news-archive .news-archive__years {
		flex-basis: auto;
		width: 100%;
	}
}
