/* ==========================================================================
   YFC TOP PAGE — front-page専用CSS
   構成:
     1. Design Tokens
     2. Base / Reset（最小限）
     3. Typography
     4. Layout helpers（Container / Section Title）
     5. Buttons
     6. Header
     7. Hero
     8. Facility Stats
     9. Purpose
    10. Why YFC
    11. Main Services
    12. Photo Gallery
    13. News
    14. Access
    15. FAQ
    16. Final CTA
    17. Footer
    18. Mobile Fixed CTA
    19. Accessibility / Reduced Motion
   Breakpoint方針:
     - 1280px以上 : Desktop Master（1440）基準
     - 1024–1279px: Desktop構成を保ちつつ幅に応じて縮小
     - 768–1023px : Tablet Master基準（独立調整、Desktopの単純縮小ではない）
     - 767px以下  : Mobile Master基準（1カラム化、Fixed CTA表示）
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Design Tokens
   -------------------------------------------------------------------------- */
:root {
	--yfc-green-deep: #0E2721;
	--yfc-green-dark: #10532D;
	--yfc-green: #16703C;
	--yfc-green-light: #6E9E57;

	--yfc-yellow: #EAD356;
	--yfc-yellow-hover: #D8B949;

	--yfc-white: #FFFFFF;
	--yfc-offwhite: #F4F5F4;
	--yfc-gray-100: #EEF1EE;
	--yfc-gray-300: #D8DDD9;
	--yfc-gray-600: #68716C;
	--yfc-text: #14231D;

	--yfc-border: #D8DDD9;

	--yfc-font-jp: "Noto Sans JP", "Hiragino Sans", "Yu Gothic", sans-serif;
	--yfc-font-en: "Barlow Condensed", var(--yfc-font-jp);

	--yfc-container-max: 1320px;
	--yfc-container-pad: 32px;

	--yfc-radius-sm: 6px;
	--yfc-radius-md: 10px;

	--yfc-header-h: 76px;
	--yfc-fixed-cta-h: 64px;

	--yfc-ease: cubic-bezier(0.4, 0, 0.2, 1);
}

@media (max-width: 767px) {
	:root {
		--yfc-container-pad: 20px;
		--yfc-header-h: 64px;
	}
}

/* --------------------------------------------------------------------------
   2. Base / Reset（最小限。既存テーマのグローバルリセットと重複する場合は削除して良い）
   -------------------------------------------------------------------------- */
.yfc-main,
.yfc-main *,
.yfc-header,
.yfc-header *,
.yfc-footer,
.yfc-footer *,
.yfc-fixed-cta,
.yfc-fixed-cta * {
	box-sizing: border-box;
}

.yfc-main img {
	max-width: 100%;
	display: block;
}

.yfc-main a {
	text-decoration: none;
	color: inherit;
}

.yfc-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.yfc-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--yfc-green-deep);
	color: var(--yfc-white);
	padding: 10px 16px;
	z-index: 2000;
	border-radius: 0 0 var(--yfc-radius-sm) 0;
}

.yfc-skip-link:focus {
	left: 0;
}

/* focus-visible: 既存テーマのfocusリセットを上書きしすぎない範囲で明示 */
.yfc-main a:focus-visible,
.yfc-main button:focus-visible,
.yfc-header a:focus-visible,
.yfc-header button:focus-visible,
.yfc-footer a:focus-visible,
.yfc-footer button:focus-visible,
.yfc-fixed-cta a:focus-visible {
	outline: 3px solid var(--yfc-yellow);
	outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   3. Typography
   -------------------------------------------------------------------------- */
.yfc-main,
.yfc-header,
.yfc-footer,
.yfc-fixed-cta {
	font-family: var(--yfc-font-jp);
	color: var(--yfc-text);
	font-weight: 400;
	line-height: 1.7;
}

.yfc-section-title {
	font-family: var(--yfc-font-en);
	font-weight: 800;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	font-size: clamp(28px, 3vw, 40px);
	line-height: 1.15;
	color: var(--yfc-green-deep);
	margin: 0 0 8px;
}

.yfc-section-title--onDark {
	color: var(--yfc-white);
}

.yfc-section-title__sub {
	display: block;
	font-family: var(--yfc-font-jp);
	font-weight: 700;
	text-transform: none;
	font-size: 15px;
	letter-spacing: 0;
	color: var(--yfc-gray-600);
	margin-top: 2px;
}

/* --------------------------------------------------------------------------
   4. Layout helpers
   -------------------------------------------------------------------------- */
.yfc-container {
	max-width: var(--yfc-container-max);
	margin-inline: auto;
	padding-inline: var(--yfc-container-pad);
}

/*
 * PASS 2修正：全Section一律の大きなpadding-block（旧 clamp(48px,6vw,96px)）は廃止。
 * Visual Masterは高密度・コンパクトなため、各Sectionが下記トークンか
 * 自身の固有値でpadding-blockを個別に指定する（後述の各Sectionブロック参照）。
 */
:root {
	--yfc-section-pad: 56px;
}
@media (max-width: 1023px) {
	:root {
		--yfc-section-pad: 40px;
	}
}
@media (max-width: 767px) {
	:root {
		--yfc-section-pad: 30px;
	}
}

/* --------------------------------------------------------------------------
   5. Buttons
   -------------------------------------------------------------------------- */
.yfc-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font-family: var(--yfc-font-jp);
	font-weight: 700;
	font-size: 15px;
	line-height: 1;
	padding: 14px 22px;
	border-radius: var(--yfc-radius-sm);
	border: 2px solid transparent;
	min-height: 44px;
	white-space: normal;
	text-align: center;
	cursor: pointer;
	transition: transform 0.15s var(--yfc-ease), background-color 0.15s var(--yfc-ease), box-shadow 0.15s var(--yfc-ease);
}

.yfc-btn:hover {
	transform: translateY(-1px);
}

.yfc-btn--yellow {
	background: var(--yfc-yellow);
	color: var(--yfc-green-deep);
	border-color: var(--yfc-yellow);
}
.yfc-btn--yellow:hover {
	background: var(--yfc-yellow-hover);
	border-color: var(--yfc-yellow-hover);
}

.yfc-btn--green {
	background: var(--yfc-green);
	color: var(--yfc-white);
	border-color: var(--yfc-green);
}
.yfc-btn--green:hover {
	background: var(--yfc-green-dark);
	border-color: var(--yfc-green-dark);
}

.yfc-btn--outline {
	background: transparent;
	color: var(--yfc-green-deep);
	border-color: var(--yfc-green-deep);
}
.yfc-btn--outline:hover {
	background: var(--yfc-green-deep);
	color: var(--yfc-white);
}

/* Hero内のsecondary CTAは背景が暗いので白系outlineにする */
.yfc-hero__ctas .yfc-btn--outline {
	color: var(--yfc-white);
	border-color: rgba(255, 255, 255, 0.75);
}
.yfc-hero__ctas .yfc-btn--outline:hover {
	background: rgba(255, 255, 255, 0.12);
	color: var(--yfc-white);
}

.yfc-btn--sm {
	padding: 10px 16px;
	font-size: 14px;
	min-height: 40px;
}
.yfc-btn--md {
	padding: 12px 20px;
}
.yfc-btn--lg {
	padding: 16px 26px;
	font-size: 16px;
}

.yfc-btn--block {
	width: 100%;
}

.yfc-btn--stacked {
	justify-content: flex-start;
	text-align: left;
	padding: 16px 20px;
	gap: 12px;
}
.yfc-btn--stacked .yfc-btn__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex: 1;
}
.yfc-btn--stacked .yfc-btn__text small {
	font-weight: 400;
	font-size: 12px;
	opacity: 0.85;
}
.yfc-btn--stacked .yfc-btn__arrow {
	font-weight: 700;
}

.yfc-icon {
	flex-shrink: 0;
}

/* --------------------------------------------------------------------------
   6. Header
   Desktop: White / height ~76px / sticky / Logo左・Nav中央右・CTA右
   Tablet : Full Navを維持（768px基準でMasterが成立）
   Mobile : Logo + Hamburger（Desktop Navの縮小表示はしない）
   -------------------------------------------------------------------------- */
.yfc-header {
	position: sticky;
	top: 0;
	z-index: 1000;
	background: var(--yfc-white);
	border-bottom: 1px solid var(--yfc-border);
	padding-top: env(safe-area-inset-top, 0px);
}

.yfc-header__inner {
	display: flex;
	align-items: center;
	gap: 24px;
	height: var(--yfc-header-h);
	min-width: 0;
}

.yfc-header__logo {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-shrink: 0;
	margin-right: auto;
}

.yfc-header__logo-mark {
	font-family: var(--yfc-font-en);
	font-weight: 800;
	font-size: 22px;
	color: var(--yfc-green);
	line-height: 1;
}

.yfc-header__logo-text {
	display: flex;
	flex-direction: column;
	line-height: 1.25;
}

.yfc-header__logo-ja {
	font-weight: 700;
	font-size: 15px;
	color: var(--yfc-text);
}

.yfc-header__logo-en {
	font-family: var(--yfc-font-en);
	font-weight: 600;
	font-size: 10px;
	letter-spacing: 0.06em;
	color: var(--yfc-gray-600);
}

.yfc-header__nav ul {
	display: flex;
	align-items: center;
	gap: 28px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.yfc-header__nav a {
	font-weight: 600;
	font-size: 15px;
	white-space: nowrap;
}
.yfc-header__nav a:hover {
	color: var(--yfc-green);
}

.yfc-header__cta {
	flex-shrink: 0;
}

.yfc-header__hamburger {
	display: none;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background: none;
	border: none;
	width: 44px;
	height: 44px;
	flex-shrink: 0;
	cursor: pointer;
}

.yfc-header__hamburger-box {
	position: relative;
	width: 22px;
	height: 16px;
}
.yfc-header__hamburger-box span {
	position: absolute;
	left: 0;
	width: 100%;
	height: 2px;
	background: var(--yfc-green-deep);
	border-radius: 1px;
	transition: transform 0.2s var(--yfc-ease), opacity 0.2s var(--yfc-ease);
}
.yfc-header__hamburger-box span:nth-child(1) { top: 0; }
.yfc-header__hamburger-box span:nth-child(2) { top: 7px; }
.yfc-header__hamburger-box span:nth-child(3) { top: 14px; }

.yfc-header__hamburger[aria-expanded="true"] .yfc-header__hamburger-box span:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.yfc-header__hamburger[aria-expanded="true"] .yfc-header__hamburger-box span:nth-child(2) {
	opacity: 0;
}
.yfc-header__hamburger[aria-expanded="true"] .yfc-header__hamburger-box span:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}

.yfc-mobile-menu {
	position: fixed;
	inset: var(--yfc-header-h) 0 0 0;
	background: var(--yfc-white);
	padding: 24px var(--yfc-container-pad);
	overflow-y: auto;
	z-index: 999;
}
.yfc-mobile-menu[hidden] {
	display: none;
}
.yfc-mobile-menu nav ul {
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
	display: flex;
	flex-direction: column;
}
.yfc-mobile-menu nav a {
	display: block;
	padding: 16px 4px;
	font-weight: 600;
	font-size: 17px;
	border-bottom: 1px solid var(--yfc-border);
}

/*
 * モバイルメニュー表示中の背面スクロールロック。
 * body.yfc-menu-open は yfc-front.js がメニュー開閉時のみ付与/削除するため、
 * TOPページ以外に影響することはない。
 */
body.yfc-menu-open {
	overflow: hidden;
	height: 100%;
}
body.yfc-menu-open .yfc-main {
	overflow: hidden;
}

/* Desktop/Large Tablet: 1024–1279px — Desktop構成を維持しつつ、Header content幅が
   Viewportをわずかに超えていた問題（1024px幅でscrollWidth約1051px）を、
   overflowを隠すのではなくcontainer padding / nav gap / inner gapの縮小で根本修正する。 */
@media (min-width: 1024px) and (max-width: 1279px) {
	.yfc-header .yfc-container {
		padding-inline: 24px;
	}
	.yfc-header__inner {
		gap: 16px;
	}
	.yfc-header__nav ul {
		gap: 18px;
	}
	.yfc-header__nav a {
		font-size: 14px;
	}
	.yfc-header__cta {
		padding: 10px 14px;
	}
}

/* Tablet: 768–1023px — Tablet Masterに合わせ、Full Nav + CTA(テキスト付き) + Hamburgerを同時表示。
   768px幅で確実に収まるよう、container padding / logo / nav / CTA を積極的に縮小する。 */
@media (max-width: 1023px) {
	.yfc-header .yfc-container {
		padding-inline: 16px;
	}
	.yfc-header__inner {
		gap: 10px;
	}
	.yfc-header__logo {
		gap: 6px;
	}
	.yfc-header__logo-mark {
		font-size: 18px;
	}
	.yfc-header__logo-ja {
		font-size: 12px;
	}
	.yfc-header__logo-en {
		font-size: 8px;
	}
	.yfc-header__nav ul {
		gap: 8px;
	}
	.yfc-header__nav a {
		font-size: 11.5px;
	}
	.yfc-header__cta {
		padding: 8px 8px;
		gap: 4px;
	}
	.yfc-header__cta .yfc-icon {
		width: 15px;
		height: 15px;
	}
	.yfc-header__cta-label {
		display: inline;
		font-size: 12px;
	}
	.yfc-header__hamburger {
		display: flex;
		width: 36px;
		height: 36px;
	}
}

/* Mobile: 767px以下 — Nav・CTAを非表示にしHamburgerのみ（Tablet同様、Hamburgerは既に表示中） */
@media (max-width: 767px) {
	.yfc-header__nav,
	.yfc-header__cta {
		display: none;
	}
}

/* --------------------------------------------------------------------------
   7. Hero
   Desktop: height 430–470px、左Copy＋背景に選手写真、右上Tagline
   Tablet : Desktop構成を維持しつつ幅なりに独立調整（縮小コピーではない）
   Mobile : 縦長Hero、CTAは3つ縦並び
   -------------------------------------------------------------------------- */
.yfc-hero {
	position: relative;
	min-height: 426px;
	display: flex;
	align-items: center;
	overflow: hidden;
	background: var(--yfc-green-deep);
	padding-block: 0;
}

.yfc-hero__bg {
	position: absolute;
	inset: 0;
	background: linear-gradient(115deg, var(--yfc-green-deep) 0%, #143a30 45%, #1c2b22 100%);
	/* PHOTO REQUIRED差し込み時: background-image + background-size:cover; background-position は
	   Desktop/Tablet/Mobileそれぞれ独立して調整すること（下記メディアクエリ参照） */
	background-position: center;
	background-size: cover;
}

.yfc-hero__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, rgba(14, 39, 33, 0.88) 0%, rgba(14, 39, 33, 0.55) 45%, rgba(14, 39, 33, 0.15) 75%);
}

.yfc-hero__inner {
	position: relative;
	z-index: 1;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding-block: 38px;
}

.yfc-hero__copy {
	color: var(--yfc-white);
	max-width: 560px;
}

.yfc-hero__title {
	font-size: clamp(34px, 4.4vw, 56px);
	font-weight: 900;
	line-height: 1.2;
	margin: 0 0 10px;
}

.yfc-hero__subcopy {
	font-size: 15px;
	line-height: 1.8;
	margin: 0 0 18px;
	opacity: 0.92;
}

.yfc-hero__ctas {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.yfc-hero__tagline {
	color: var(--yfc-white);
	text-align: right;
	flex-shrink: 0;
	align-self: flex-start;
	margin: 32px 0 0;
	font-size: 13px;
	line-height: 1.6;
}

.yfc-hero__tagline-en {
	display: block;
	font-family: "Georgia", "Times New Roman", serif;
	font-style: italic;
	font-size: 20px;
	margin-bottom: 6px;
}

.yfc-hero__tagline-ja {
	display: block;
	opacity: 0.9;
}

/* Tablet: 768–1023px — Desktopと同じ骨格を維持しつつ独立調整 */
@media (max-width: 1023px) {
	.yfc-hero {
		min-height: 400px;
	}
	.yfc-hero__inner {
		padding-block: 40px;
	}
	.yfc-hero__title {
		font-size: clamp(30px, 5vw, 42px);
	}
	.yfc-hero__tagline {
		font-size: 11px;
		margin-top: 20px;
	}
	.yfc-hero__tagline-en {
		font-size: 16px;
	}
}

/* Mobile: 767px以下 — 縦長Hero、CTA縦並び */
@media (max-width: 767px) {
	.yfc-hero {
		min-height: 560px;
		flex-direction: column;
		align-items: stretch;
		justify-content: flex-end;
	}
	.yfc-hero__scrim {
		background: linear-gradient(180deg, rgba(14, 39, 33, 0.35) 0%, rgba(14, 39, 33, 0.78) 62%, rgba(14, 39, 33, 0.94) 100%);
	}
	.yfc-hero__bg {
		background-position: top center; /* PHOTO REQUIRED: Mobile用object-position/background-positionは選手が上寄りに来るよう個別調整 */
	}
	.yfc-hero__inner {
		position: relative;
		flex-direction: column;
		align-items: flex-start;
		padding-block: 28px 32px;
		margin-top: auto;
	}
	.yfc-hero__copy {
		max-width: none;
	}
	.yfc-hero__title {
		font-size: 34px;
	}
	.yfc-hero__ctas {
		flex-direction: column;
		width: 100%;
	}
	.yfc-hero__ctas .yfc-btn {
		width: 100%;
	}
	/* コピー・subcopyと視覚的に近い、右側中央〜下寄りへ配置（画面最上部への貼り付けは禁止） */
	.yfc-hero__tagline {
		position: absolute;
		top: 38%;
		right: var(--yfc-container-pad);
		margin: 0;
		font-size: 10px;
		text-align: right;
		z-index: 2;
	}
	.yfc-hero__tagline-en {
		font-size: 13px;
		margin-bottom: 2px;
	}
}

/* --------------------------------------------------------------------------
   8. Facility Stats
   Desktop/Tablet: 4 columns、各項目は icon + (数字+英字ラベル / 日本語補足) の横方向構成。
   Mobile: 2x2グリッドは禁止。縦4段（各段は横方向の1行、separator付き）。
   -------------------------------------------------------------------------- */
.yfc-stats {
	background: var(--yfc-white);
	border-bottom: 1px solid var(--yfc-border);
	padding-block: 24px;
}

.yfc-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 24px;
}

.yfc-stats__item {
	display: flex;
	align-items: center;
	gap: 12px;
}

.yfc-stats__icon {
	color: var(--yfc-green);
	flex-shrink: 0;
	display: inline-flex;
}

.yfc-stats__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.yfc-stats__value {
	display: flex;
	align-items: baseline;
	gap: 6px;
	flex-wrap: wrap;
	font-family: var(--yfc-font-en);
}

.yfc-stats__value strong {
	font-size: 28px;
	font-weight: 800;
	color: var(--yfc-green-deep);
	line-height: 1;
}

.yfc-stats__unit {
	font-size: 12px;
	font-weight: 700;
	color: var(--yfc-green-deep);
}

.yfc-stats__label {
	font-size: 13px;
	font-weight: 700;
	color: var(--yfc-green-deep);
	letter-spacing: 0.02em;
	margin-left: 2px;
	white-space: nowrap;
}

.yfc-stats__note {
	display: block;
	font-size: 12px;
	color: var(--yfc-gray-600);
	white-space: nowrap;
}

@media (max-width: 1023px) {
	.yfc-stats__grid {
		gap: 14px;
	}
	.yfc-stats__value strong {
		font-size: 24px;
	}
	.yfc-stats__label,
	.yfc-stats__note {
		white-space: normal;
	}
}

/* Mobile: 縦4段。各段は横方向1行（icon + 数字/英字ラベル + 日本語補足）。2x2グリッドにはしない。 */
@media (max-width: 767px) {
	.yfc-stats__grid {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.yfc-stats__item {
		padding-block: 14px;
		border-bottom: 1px solid var(--yfc-border);
		justify-content: flex-start;
	}
	.yfc-stats__item:last-child {
		border-bottom: none;
	}
	.yfc-stats__text {
		flex-direction: row;
		align-items: baseline;
		flex-wrap: wrap;
		gap: 4px 10px;
	}
	.yfc-stats__note {
		white-space: normal;
	}
}

/* --------------------------------------------------------------------------
   9. Purpose
   Desktop/Tablet: 3 columns / Mobile: 1 column stack
   -------------------------------------------------------------------------- */
.yfc-purpose {
	background: var(--yfc-white);
	padding-block: 30px;
}

.yfc-purpose__head {
	display: flex;
	align-items: baseline;
	gap: 20px;
	flex-wrap: wrap;
	margin-bottom: 20px;
}

.yfc-purpose__subcopy {
	color: var(--yfc-gray-600);
	font-size: 14px;
	margin: 0;
	position: relative;
	padding-left: 20px;
}
.yfc-purpose__subcopy::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 12px;
	height: 2px;
	background: var(--yfc-green);
	transform: translateY(-50%);
}

.yfc-purpose__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}

.yfc-purpose__card {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	border-radius: var(--yfc-radius-md);
	overflow: hidden;
	background: var(--yfc-green-deep);
}

.yfc-purpose__card-bg {
	position: absolute;
	inset: 0;
	background: linear-gradient(160deg, #143a30, #0e2721);
	/* PHOTO REQUIRED差し込み時: background-image + background-size:cover; */
	transition: transform 0.4s var(--yfc-ease);
}

.yfc-purpose__card:hover .yfc-purpose__card-bg {
	transform: scale(1.04);
}

.yfc-purpose__card-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(14, 39, 33, 0.05) 40%, rgba(14, 39, 33, 0.82) 100%);
}

.yfc-purpose__card-body {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 22px;
	color: var(--yfc-white);
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.yfc-purpose__card-ja {
	font-weight: 800;
	font-size: 18px;
}

.yfc-purpose__card-copy {
	font-size: 13px;
	opacity: 0.9;
	line-height: 1.6;
}

.yfc-purpose__card-en {
	font-family: var(--yfc-font-en);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.06em;
	opacity: 0.8;
	margin-top: 4px;
}

.yfc-purpose__card-arrow {
	position: absolute;
	right: 18px;
	bottom: 18px;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--yfc-white);
	color: var(--yfc-green-deep);
	display: flex;
	align-items: center;
	justify-content: center;
}

.yfc-purpose__card-mobile-body {
	display: none; /* Desktop/Tablet、およびMobileのCOURT/ACADEMYでは非表示。MobileのKOSALのみ下のmedia queryで表示 */
}

@media (max-width: 1023px) {
	.yfc-purpose {
		padding-block: 26px;
	}
	.yfc-purpose__grid {
		gap: 16px;
	}
}

@media (max-width: 767px) {
	.yfc-purpose {
		padding-block: 28px;
	}
	.yfc-purpose__grid {
		grid-template-columns: 1fr;
		gap: 14px;
	}

	/* COURT: 既存の大きな写真カード＋dark overlay＋text＋circle arrowを維持。比率のみMasterへ近づける */
	.yfc-purpose__card--court {
		aspect-ratio: 16 / 8.7;
	}

	/* KOSAL: 上部写真＋下部white body（説明チェックリスト＋yellow CTA）。card自体は自然な高さに。 */
	.yfc-purpose__card--kosal {
		aspect-ratio: auto;
		display: flex;
		flex-direction: column;
		background: var(--yfc-white);
		border: 1px solid var(--yfc-border);
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-bg {
		position: static;
		aspect-ratio: 3 / 1;
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-overlay,
	.yfc-purpose__card--kosal .yfc-purpose__card-arrow {
		display: none;
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-body {
		position: static;
		padding: 10px 14px 0;
		color: var(--yfc-text);
		gap: 3px;
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-copy {
		font-size: 12px;
		line-height: 1.4;
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-en {
		/* Mobile MasterにはKOSAL英字ラベルの表示がないため、Mobileのみ省略して余白を詰める */
		display: none;
	}
	.yfc-purpose__card--kosal .yfc-purpose__card-mobile-body {
		display: flex;
		flex-direction: column;
		gap: 6px;
		padding: 4px 14px 12px;
	}
	.yfc-purpose__card-mobile-checklist {
		display: flex;
		flex-direction: column;
		gap: 4px;
	}
	.yfc-purpose__card-mobile-checklist span {
		display: flex;
		align-items: center;
		gap: 6px;
		font-size: 11px;
		color: var(--yfc-gray-600);
	}
	.yfc-purpose__card-mobile-checklist svg {
		color: var(--yfc-green);
		flex-shrink: 0;
	}
	.yfc-purpose__card-mobile-cta {
		margin-top: 0;
	}

	/* ACADEMY: 薄い横長Photo Banner＋title＋circle arrow（説明文・英字ラベルは省略）。概ね維持。 */
	.yfc-purpose__card--academy {
		aspect-ratio: 4 / 1;
	}
	.yfc-purpose__card--academy .yfc-purpose__card-copy,
	.yfc-purpose__card--academy .yfc-purpose__card-en {
		display: none;
	}
	.yfc-purpose__card--academy .yfc-purpose__card-body {
		padding: 14px 18px;
		justify-content: center;
	}
	.yfc-purpose__card--academy .yfc-purpose__card-ja {
		font-size: 15px;
	}
	.yfc-purpose__card--academy .yfc-purpose__card-arrow {
		right: 14px;
		bottom: 50%;
		transform: translateY(50%);
		width: 28px;
		height: 28px;
	}
}

/* --------------------------------------------------------------------------
   10. Why YFC
   Desktop/Tablet: Text + Large photo + Reasons list（3ブロック横並び）
   Mobile: 縦積み（Text → Photo → Reasons）
   -------------------------------------------------------------------------- */
.yfc-why {
	background: var(--yfc-offwhite);
	padding-block: 36px;
}

.yfc-why__grid {
	display: grid;
	grid-template-columns: 0.85fr 1.3fr 0.85fr;
	gap: 32px;
	align-items: center;
}

.yfc-why__eyebrow {
	font-family: var(--yfc-font-en);
	font-weight: 800;
	color: var(--yfc-green);
	letter-spacing: 0.08em;
	margin: 0 0 4px;
	font-size: 14px;
}

/* Desktop Masterでは見出しが1行で収まる。Intro columnは狭い(0.85fr)ため、
   共通の.yfc-section-title（clamp(28px,3vw,40px)）だとテキストが折れて
   「選ばれる4つの理/由」のように不自然に改行される。専用に縮小して1行に収める。 */
.yfc-why__intro .yfc-section-title {
	font-size: clamp(20px, 1.7vw, 26px);
	margin-bottom: 6px;
}

.yfc-why__copy {
	color: var(--yfc-gray-600);
	font-size: 13px;
	margin: 0 0 14px;
}

.yfc-why__photo {
	aspect-ratio: 21 / 9;
	border-radius: var(--yfc-radius-md);
	background: linear-gradient(160deg, #143a30, #0e2721);
	/* PHOTO REQUIRED差し込み時: background-image + background-size:cover; 横長パノラマ比率のため被写体は中央に収まる構図を推奨 */
}

.yfc-why__reasons {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 13px;
}

.yfc-why__reasons li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.yfc-why__reason-icon {
	color: var(--yfc-green);
	flex-shrink: 0;
}

.yfc-why__reason-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
	font-size: 13px;
}

.yfc-why__reason-text strong {
	font-size: 14px;
	color: var(--yfc-green-deep);
}

@media (max-width: 1023px) {
	.yfc-why {
		padding-block: 28px;
	}
	.yfc-why__grid {
		grid-template-columns: 1fr 1.1fr 0.9fr;
		gap: 20px;
	}
	.yfc-why__intro .yfc-section-title {
		font-size: clamp(18px, 2.2vw, 24px);
	}
}

@media (max-width: 767px) {
	.yfc-why {
		padding-block: 22px;
	}
	.yfc-why__grid {
		grid-template-columns: 0.95fr 1.05fr;
		gap: 16px;
		align-items: center;
	}
	.yfc-why__photo {
		aspect-ratio: 4 / 3;
	}
	.yfc-why__eyebrow {
		font-size: 12px;
	}
	.yfc-why__copy {
		font-size: 12px;
		margin-bottom: 12px;
	}
	/* Mobile Masterでは4 Reasonsの詳細リストを表示しない（Desktop/Tabletのみ表示） */
	.yfc-why__reasons {
		display: none;
	}
}

/* --------------------------------------------------------------------------
   11. Main Services
   Desktop/Tablet: 3 columns / Mobile: vertical stack
   -------------------------------------------------------------------------- */
.yfc-services {
	background: var(--yfc-white);
	padding-block: 0 32px;
}

.yfc-services__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}

.yfc-services__heading {
	/* Desktop/Tabletでは非表示（視覚的にはyfc-sr-onlyと同等）。Mobileのみ下のmedia queryで表示。 */
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.yfc-service-card {
	border: 1px solid var(--yfc-border);
	border-radius: var(--yfc-radius-md);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.yfc-service-card__photo {
	position: relative;
	aspect-ratio: 3 / 1;
	background: linear-gradient(160deg, #1c2b22, #0e2721);
	/* PHOTO REQUIRED差し込み時: background-image + background-size:cover; かなり浅い横長のため、
	   被写体は上下中央に収まるシンプルな構図を推奨（縦方向の情報は overlay heading の下に隠れやすいため） */
}

.yfc-service-card__photo-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(14, 39, 33, 0) 35%, rgba(14, 39, 33, 0.85) 100%);
}

.yfc-service-card__photo-heading {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 8px 12px;
	color: var(--yfc-white);
}

.yfc-service-card__en {
	font-family: var(--yfc-font-en);
	font-weight: 800;
	font-size: 17px;
	letter-spacing: 0.02em;
	margin: 0;
	line-height: 1.1;
}

.yfc-service-card__ja {
	font-size: 10px;
	margin: 1px 0 0;
	opacity: 0.9;
}

.yfc-service-card__body {
	padding: 10px 12px 12px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.yfc-service-card__lead {
	font-size: 12px;
	color: var(--yfc-gray-600);
	margin: 0;
	line-height: 1.4;
}

.yfc-service-card__checklist {
	list-style: none;
	margin: 6px 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.yfc-service-card__checklist li {
	display: flex;
	align-items: flex-start;
	gap: 6px;
	font-size: 11px;
}

.yfc-service-card__checklist svg {
	color: var(--yfc-green);
	flex-shrink: 0;
	margin-top: 2px;
}

.yfc-service-card__body > .yfc-btn {
	width: 100%;
	margin-top: 8px;
	min-height: 44px; /* tap targetは44px以上を維持 */
	border-radius: var(--yfc-radius-sm);
}

@media (max-width: 1023px) {
	.yfc-services {
		padding-block: 0 30px;
	}
	.yfc-services__grid {
		gap: 16px;
	}
}

@media (max-width: 767px) {
	.yfc-services {
		padding-block: 0 26px;
	}
	.yfc-services__grid {
		grid-template-columns: 1fr;
	}
	/* Mobile専用：Master準拠で「主なサービス」見出しを表示 */
	.yfc-services__heading {
		position: static;
		width: auto;
		height: auto;
		padding: 0;
		margin: 0 0 18px;
		overflow: visible;
		clip: auto;
		white-space: normal;
		border: 0;
	}
}

/* --------------------------------------------------------------------------
   12. Photo Gallery
   Deep Green background。横スクロール（自動Slideなし）。
   -------------------------------------------------------------------------- */
.yfc-gallery {
	background: var(--yfc-green-deep);
	overflow: hidden;
	padding-block: 16px;
}

.yfc-gallery__layout {
	display: flex;
	align-items: center;
	gap: 32px;
}

.yfc-gallery__side {
	flex: 0 0 220px;
}

.yfc-gallery__subcopy {
	color: rgba(255, 255, 255, 0.75);
	font-size: 13px;
	margin: 8px 0 0;
}

.yfc-gallery__main {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 10px;
}

.yfc-gallery__arrow {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.35);
	background: transparent;
	color: var(--yfc-white);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color 0.15s var(--yfc-ease);
}
.yfc-gallery__arrow:hover {
	background: rgba(255, 255, 255, 0.12);
}
.yfc-gallery__arrow:disabled {
	opacity: 0.35;
	cursor: default;
	pointer-events: none;
}

.yfc-gallery__track {
	flex: 1 1 auto;
	display: flex;
	gap: 10px;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	padding-bottom: 8px;
	scrollbar-width: thin;
	min-width: 0;
}

/* Desktop: Gallery area幅の中へ6 thumbnailsがcompactに収まる目安の幅 */
.yfc-gallery__item {
	flex: 0 0 auto;
	width: 140px;
	aspect-ratio: 3 / 2;
	border-radius: var(--yfc-radius-sm);
	overflow: hidden;
	scroll-snap-align: start;
	margin: 0;
}

.yfc-gallery__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(160deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.04));
	/* PHOTO REQUIRED差し込み時: <img> に置き換え、object-fit:cover を使用 */
}

/* Tablet: sideを狭め、6 thumbnailsがほぼ収まるサイズへさらに縮小 */
@media (max-width: 1023px) {
	.yfc-gallery {
		padding-block: 24px;
	}
	.yfc-gallery__layout {
		gap: 20px;
	}
	.yfc-gallery__side {
		flex: 0 0 150px;
	}
	.yfc-gallery__item {
		width: 78px;
	}
	.yfc-gallery__arrow {
		width: 34px;
		height: 34px;
	}
}

/* Mobile: 上段に見出し・subcopy、下段に横スクロール写真列。4枚前後が同時に見えるサイズ（Mobile Master準拠） */
@media (max-width: 767px) {
	.yfc-gallery {
		padding-block: 20px;
	}
	.yfc-gallery__layout {
		flex-direction: column;
		align-items: stretch;
		gap: 16px;
	}
	.yfc-gallery__side {
		flex: none;
	}
	.yfc-gallery__arrow {
		display: none; /* Mobileはタッチスクロールのみ（Mobile Master準拠） */
	}
	.yfc-gallery__track {
		margin: 0 calc(-1 * var(--yfc-container-pad));
		padding-inline: var(--yfc-container-pad);
	}
	.yfc-gallery__item {
		width: 82px;
	}
}

/* --------------------------------------------------------------------------
   12.5 NEWS + ACCESS 帯（Tabletのみ）
   front-page.php で NEWS と ACCESS を <div class="yfc-band-news-access"> がラップしている。
   Desktop（≥1024px）/ Mobile（≤767px）ではこのdivに何も適用せず、通常のblock要素として
   NEWS→ACCESSが縦に並ぶ（Desktop Masterどおり、それぞれ独立した横長Section）。
   Tablet（768–1023px）のみ2カラムグリッド化し、LEFT=NEWS / RIGHT=ACCESSを同一の水平帯にする
   （Tablet Master準拠）。band自体にはcontainer相当のpadding-inlineを持たせていないため、
   各Sectionが個別に持つ .yfc-container のpadding-inlineと二重にならない。
   -------------------------------------------------------------------------- */
@media (min-width: 768px) and (max-width: 1023px) {
	.yfc-band-news-access {
		display: grid;
		grid-template-columns: 1fr 1fr;
		align-items: stretch;
	}
	.yfc-band-news-access .yfc-news,
	.yfc-band-news-access .yfc-access {
		padding-block: 14px;
	}
	.yfc-band-news-access .yfc-access {
		border-left: 1px solid var(--yfc-border);
	}
	.yfc-band-news-access .yfc-section-title {
		font-size: 20px;
		margin-bottom: 4px;
	}
}

/* --------------------------------------------------------------------------
   13. News
   Desktop: LEFT見出し / RIGHT 4記事の横方向構成 / Tablet: 帯内でコンパクトmini-list / Mobile: リスト型UI
   -------------------------------------------------------------------------- */
.yfc-news {
	background: var(--yfc-white);
	padding-block: 18px;
}

.yfc-news__layout {
	display: flex;
	align-items: flex-start;
	gap: 28px;
}

.yfc-news__side {
	flex: 0 0 200px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
}

.yfc-news__list {
	list-style: none;
	margin: 0;
	padding: 0;
	flex: 1 1 auto;
	min-width: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}

.yfc-news__card-link {
	display: block;
}

.yfc-news__card-thumb {
	display: block;
	aspect-ratio: 2 / 1;
	border-radius: var(--yfc-radius-sm);
	overflow: hidden;
	margin-bottom: 8px;
	background: var(--yfc-gray-100);
}
.yfc-news__card-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.yfc-news__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: var(--yfc-gray-100);
}

.yfc-news__card-body {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.yfc-news__card-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 11px;
	color: var(--yfc-gray-600);
}

.yfc-news__card-cat {
	background: var(--yfc-gray-100);
	color: var(--yfc-green-dark);
	padding: 2px 8px;
	border-radius: 999px;
	font-weight: 700;
}

.yfc-news__card-title {
	font-size: 13px;
	font-weight: 700;
	line-height: 1.5;
	color: var(--yfc-text);
}

.yfc-news__empty {
	color: var(--yfc-gray-600);
	font-size: 14px;
}

/*
 * Tablet: 本Sectionは .yfc-band-news-access 内でACCESSと半々の帯を組む（front-page.php参照）。
 * Tablet Masterに合わせ、縦list化ではなく「見出し＋記事カードの横方向compact配置」とする。
 * 帯の半分幅（約340px前後）に収めるため、Desktopの4件表示ではなく3件表示にする
 * （Desktop/Mobileは4件のまま。Tabletのみ3件）。
 */
@media (min-width: 768px) and (max-width: 1023px) {
	.yfc-news__layout {
		flex-direction: column;
		gap: 6px;
	}
	.yfc-news__side {
		flex: none;
		width: 100%;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
	}
	.yfc-news__list {
		grid-template-columns: repeat(3, 1fr);
		gap: 8px;
	}
	.yfc-news__card:nth-child(n + 4) {
		display: none; /* Tabletのみ3件表示（Desktop/Mobileは4件のまま） */
	}
	.yfc-news__card-thumb {
		margin-bottom: 3px;
	}
	.yfc-news__card-title {
		font-size: 11px;
		line-height: 1.3;
	}
	.yfc-news__card-meta {
		font-size: 10px;
	}
}

/* Mobile: リスト型UI（thumb左＋text右の横並び行）。Tabletのcompact grid化とは別に定義する。 */
@media (max-width: 767px) {
	.yfc-news__layout {
		flex-direction: column;
		gap: 14px;
	}
	.yfc-news__side {
		flex: none;
		width: 100%;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
	}
	.yfc-news__list {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.yfc-news__card {
		border-bottom: 1px solid var(--yfc-border);
	}
	.yfc-news__card-link {
		display: flex;
		align-items: center;
		gap: 14px;
		padding-block: 14px;
	}
	.yfc-news__card-thumb {
		width: 84px;
		flex-shrink: 0;
		margin-bottom: 0;
	}
	.yfc-news__card-title {
		font-size: 13px;
	}
}

/* --------------------------------------------------------------------------
   14. Access
   Desktop/Tablet: Text + Map + Facility photo（横並び）
   Mobile: Text → Map → Facility photo（縦積み。Facility pointsはTextブロック内に含む）
   -------------------------------------------------------------------------- */
.yfc-access {
	background: var(--yfc-offwhite);
	padding-block: 20px;
}

.yfc-access__grid {
	display: grid;
	grid-template-columns: 0.9fr 1.1fr 0.8fr;
	grid-template-rows: auto auto;
	grid-template-areas:
		"info map photo"
		"info map points";
	gap: 10px 20px;
	align-items: stretch;
}

.yfc-access__info {
	grid-area: info;
	display: flex;
	flex-direction: column;
	gap: 9px;
}

.yfc-access__address {
	font-style: normal;
	font-size: 14px;
	line-height: 1.55;
	color: var(--yfc-text);
}

.yfc-access__points {
	grid-area: points;
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 16px;
	align-self: center;
}

.yfc-access__points li {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	color: var(--yfc-gray-600);
}

.yfc-access__points svg {
	color: var(--yfc-green);
	width: 18px;
	height: 18px;
}

.yfc-access__map {
	min-height: 120px;
	border-radius: var(--yfc-radius-md);
	overflow: hidden;
	background: var(--yfc-gray-100);
}
.yfc-access__map iframe {
	display: block;
}

.yfc-access__photo {
	min-height: 90px;
	border-radius: var(--yfc-radius-md);
	background: linear-gradient(160deg, #1c2b22, #0e2721);
	/* PHOTO REQUIRED差し込み時: background-image + background-size:cover; */
}

/*
 * Tablet（768–1023px）: 本Sectionは .yfc-band-news-access 内でNEWSと半々の帯を組むため
 * 使用可能幅は狭い。Tablet Masterに合わせ、INFO → MAP+PHOTO(横並び) → POINTS の
 * 3段構成にする（4段の単純縦積みではない）。
 */
@media (min-width: 768px) and (max-width: 1023px) {
	.yfc-access__grid {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: auto auto auto;
		grid-template-areas:
			"info info"
			"map photo"
			"points points";
		gap: 6px;
	}
	.yfc-access__map,
	.yfc-access__photo {
		min-height: 85px;
	}
	.yfc-access__points {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 4px 12px;
	}
	.yfc-access__address {
		font-size: 12.5px;
		line-height: 1.5;
	}
	.yfc-access__info {
		gap: 6px;
	}
}

@media (max-width: 767px) {
	.yfc-access__grid {
		grid-template-columns: 1fr;
		grid-template-rows: auto;
		grid-template-areas:
			"info"
			"map"
			"photo"
			"points";
		gap: 14px;
	}
	.yfc-access__map {
		min-height: 160px;
	}
	.yfc-access__photo {
		min-height: 110px;
	}
	.yfc-access__points {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 8px 16px;
	}
}

/* --------------------------------------------------------------------------
   15. FAQ
   Desktop/Tablet: 2 columns / Mobile: 1 column
   -------------------------------------------------------------------------- */
.yfc-faq {
	background: var(--yfc-white);
	padding-block: 14px;
}

.yfc-faq__layout {
	display: flex;
	align-items: flex-start;
	gap: 40px;
}

.yfc-faq__side {
	flex: 0 0 220px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
}

.yfc-faq__grid {
	flex: 1 1 auto;
	min-width: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 2px 24px;
	align-content: start;
}

.yfc-faq__item {
	border-bottom: 1px solid var(--yfc-border);
}

.yfc-faq__question {
	margin: 0;
	font-size: inherit;
	font-weight: inherit;
}

.yfc-faq__trigger {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	background: none;
	border: none;
	text-align: left;
	font-size: 13px;
	font-weight: 700;
	color: var(--yfc-text);
	padding: 10px 4px;
	cursor: pointer;
	min-height: 44px; /* tap target floor。paddingを削っても44px未満にはならない */
}

.yfc-faq__icon {
	flex-shrink: 0;
	color: var(--yfc-green);
	transition: transform 0.2s var(--yfc-ease);
}

.yfc-faq__trigger[aria-expanded="true"] .yfc-faq__icon {
	transform: rotate(45deg);
}

.yfc-faq__panel {
	padding: 0 4px 14px;
	font-size: 12px;
	color: var(--yfc-gray-600);
}

.yfc-faq__panel[hidden] {
	display: none;
}

@media (max-width: 1023px) {
	.yfc-faq {
		padding-block: 24px;
	}
	.yfc-faq__layout {
		gap: 24px;
	}
	.yfc-faq__side {
		flex: 0 0 180px;
	}
}

@media (max-width: 767px) {
	.yfc-faq {
		padding-block: 10px;
	}
	.yfc-faq__layout {
		flex-direction: column;
		gap: 10px;
	}
	.yfc-faq__side {
		flex: none;
		width: 100%;
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}
	.yfc-faq__side .yfc-section-title {
		font-size: 22px;
		margin-bottom: 2px;
	}
	.yfc-faq__grid {
		grid-template-columns: 1fr;
		width: 100%;
	}
}

/* --------------------------------------------------------------------------
   16. Final CTA
   Deep Green background。Desktop/Tablet: 横並び / Mobile: 縦積み（3 CTA縦並び）
   -------------------------------------------------------------------------- */
.yfc-final-cta {
	background: var(--yfc-green-deep);
	color: var(--yfc-white);
	padding-block: 16px;
}

.yfc-final-cta__inner {
	display: flex;
	align-items: center;
	gap: 32px;
}

.yfc-final-cta__copy {
	flex: 0 0 auto;
	max-width: 320px;
}

.yfc-final-cta__title {
	font-family: var(--yfc-font-en);
	font-weight: 900;
	font-size: clamp(24px, 2.8vw, 36px);
	line-height: 1.05;
	margin: 0 0 8px;
}

.yfc-final-cta__copy p {
	margin: 0;
	font-size: 13px;
	opacity: 0.85;
	line-height: 1.7;
}

.yfc-final-cta__ctas {
	display: flex;
	flex-direction: row;
	gap: 10px;
	flex: 1 1 auto;
	min-width: 0;
}

.yfc-final-cta__ctas .yfc-btn--stacked {
	flex: 1 1 0;
	min-width: 0;
	padding: 10px 14px;
	gap: 8px;
}

.yfc-final-cta__ctas .yfc-btn--stacked strong {
	font-size: 13px;
	line-height: 1.3;
}

.yfc-final-cta__ctas .yfc-btn--stacked .yfc-btn__text small {
	font-size: 10.5px;
	line-height: 1.3;
}

.yfc-final-cta__ctas .yfc-btn--stacked .yfc-icon {
	width: 16px;
	height: 16px;
}

@media (max-width: 1023px) {
	.yfc-final-cta__inner {
		gap: 20px;
	}
	.yfc-final-cta__copy {
		max-width: 220px;
	}
	.yfc-final-cta__ctas {
		gap: 6px;
	}
	.yfc-final-cta__ctas .yfc-btn--stacked {
		padding-inline: 10px;
	}
	.yfc-final-cta__ctas .yfc-btn--stacked strong {
		font-size: 12px;
	}
	.yfc-final-cta__ctas .yfc-btn--stacked .yfc-btn__text small {
		font-size: 9.5px;
		line-height: 1.2;
	}
}

@media (max-width: 767px) {
	.yfc-final-cta__inner {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
	}
	.yfc-final-cta__copy {
		max-width: none;
	}
	.yfc-final-cta__ctas {
		flex-direction: column;
	}
	.yfc-final-cta__ctas .yfc-btn--stacked strong {
		font-size: 14px;
	}
	.yfc-final-cta__ctas .yfc-btn--stacked .yfc-btn__text small {
		display: block;
		font-size: 12px;
	}
}

/* --------------------------------------------------------------------------
   17. Footer
   PASS3: White row（Logo | Nav | Tel+SNS 横方向） + Deep Green bar（Legal | Copyright 横方向）
   の2段構成。Master準拠でDesktop/Tablet/Mobileいずれも大幅にcompact化。
   -------------------------------------------------------------------------- */
.yfc-footer {
	background: var(--yfc-white);
	border-top: 1px solid var(--yfc-border);
}

/* Theme側のグローバルanchor style（color/text-decoration等）がYFC Header/Footerへ
   漏れないよう、必要最小限のデフォルトをscope内で明示（Global selectorでTheme全体は変更しない） */
.yfc-header a,
.yfc-footer a {
	color: inherit;
	text-decoration: none;
}

/* WHITE ROW: Logo | Nav | Tel+SNS を横方向に配置 */
.yfc-footer__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding-block: 18px;
	flex-wrap: wrap;
}

.yfc-footer__logo {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
}

.yfc-footer__logo-mark {
	font-family: var(--yfc-font-en);
	font-weight: 800;
	font-size: 18px;
	color: var(--yfc-green);
}

.yfc-footer__logo-text {
	display: flex;
	flex-direction: column;
	line-height: 1.2;
}

.yfc-footer__logo-ja {
	font-weight: 700;
	font-size: 13px;
}

.yfc-footer__logo-en {
	font-family: var(--yfc-font-en);
	font-size: 9px;
	letter-spacing: 0.06em;
	color: var(--yfc-gray-600);
}

.yfc-footer__nav {
	flex: 1 1 auto;
}

.yfc-footer__nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 6px 16px;
}

.yfc-footer__nav a {
	font-size: 12px;
	color: var(--yfc-gray-600);
}
.yfc-footer__nav a:hover {
	color: var(--yfc-green);
}

.yfc-footer__contact {
	display: flex;
	flex-direction: column;
	gap: 4px;
	align-items: flex-end;
	flex: 0 0 auto;
	text-align: right;
}

.yfc-footer__tel {
	font-family: var(--yfc-font-en);
	font-weight: 700;
	font-size: 15px;
	margin: 0;
}

.yfc-footer__tel a {
	color: var(--yfc-green-deep);
}

.yfc-footer__hours {
	font-size: 10px;
	color: var(--yfc-gray-600);
	margin: 0;
	line-height: 1.4;
}

.yfc-footer__sns {
	display: flex;
	gap: 6px;
	list-style: none;
	margin: 2px 0 0;
	padding: 0;
}

.yfc-footer__sns-link {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--yfc-gray-100);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 8px;
	font-weight: 700;
	color: var(--yfc-gray-600);
}

.yfc-footer__sns-link.is-todo-link {
	outline: 1px dashed var(--yfc-gray-300);
}

/* 共通：URL未確定のTODOリンク（span）。視覚デザインは通常のリンク/ボタンと同一に保ち、
   クリックしても何も起きないことだけを示す最小限の差分（カーソルのみ）。 */
.is-todo-link {
	cursor: default;
}

/* DEEP GREEN BAR: Legal links | Copyright を横方向に配置 */
.yfc-footer__bottom {
	background: var(--yfc-green-deep);
	color: rgba(255, 255, 255, 0.75);
	padding-block: 10px;
	font-size: 11px;
}

.yfc-footer__bottom-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
}

.yfc-footer__legal {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 4px 14px;
}

.yfc-footer__legal a {
	color: rgba(255, 255, 255, 0.75);
}
.yfc-footer__legal a:hover {
	color: var(--yfc-white);
}

.yfc-footer__copyright {
	margin: 0;
	white-space: nowrap;
}

/* 汎用のTablet/Mobile共通調整（先に置く）。768–1023px専用ルールは、この直後に置く
   より詳細な @media (min-width:768px) and (max-width:1023px) が後段で上書きする。 */
@media (max-width: 1023px) {
	.yfc-footer__row {
		padding-block: 16px;
		gap: 16px;
	}
	.yfc-footer__contact {
		align-items: flex-start;
		text-align: left;
	}
}

/* Tablet（768–1023px）専用: White rowを1段（flex-wrap:nowrap）で成立させる。
   Logo/Nav/Contact/SNSを縮小しつつ内容は削除しない。お電話受付時間は折り返し可能にして
   横幅ではなく縦方向へ収める（行のnowrapには影響しない）。
   直前の汎用 @media (max-width:1023px) より後に置くことで、768–1023pxではこちらが
   最終的に有効になる（gap/padding-block/contactの左右寄せがcascadeで上書きされないようにする）。 */
@media (min-width: 768px) and (max-width: 1023px) {
	.yfc-footer .yfc-container {
		padding-inline: 20px;
	}
	.yfc-footer__row {
		flex-wrap: nowrap;
		gap: 10px;
		padding-block: 10px;
	}
	.yfc-footer__logo {
		gap: 5px;
	}
	.yfc-footer__logo-mark {
		font-size: 13px;
	}
	.yfc-footer__logo-ja {
		font-size: 10px;
	}
	.yfc-footer__logo-en {
		font-size: 7px;
	}
	.yfc-footer__nav {
		min-width: 0;
	}
	.yfc-footer__nav ul {
		gap: 4px 8px;
	}
	.yfc-footer__nav a {
		font-size: 9.5px;
		white-space: nowrap;
	}
	.yfc-footer__contact {
		max-width: 150px;
		flex-shrink: 0;
		align-items: flex-end;
		text-align: right;
	}
	.yfc-footer__tel {
		font-size: 12px;
	}
	.yfc-footer__hours {
		font-size: 8.5px;
		white-space: normal; /* 横幅を増やさず縦に折り返す */
	}
	.yfc-footer__sns-link {
		width: 20px;
		height: 20px;
		font-size: 7px;
	}
}

@media (max-width: 767px) {
	.yfc-footer__row {
		flex-direction: column;
		align-items: flex-start;
		padding-block: 10px;
		gap: 8px;
	}
	.yfc-footer__logo {
		gap: 6px;
	}
	.yfc-footer__logo-mark {
		font-size: 15px;
	}
	.yfc-footer__logo-ja {
		font-size: 11px;
	}
	.yfc-footer__logo-en {
		font-size: 8px;
	}
	.yfc-footer__nav {
		width: 100%;
	}
	.yfc-footer__nav ul {
		gap: 4px 12px;
	}
	.yfc-footer__nav a {
		font-size: 11px;
	}
	.yfc-footer__contact {
		align-items: flex-start;
		text-align: left;
		width: 100%;
		gap: 3px;
	}
	.yfc-footer__tel {
		font-size: 13px;
	}
	.yfc-footer__hours {
		font-size: 9px;
		line-height: 1.35;
	}
	.yfc-footer__sns-link {
		width: 22px;
		height: 22px;
		font-size: 7px;
	}
	/* Mobile Masterでは複数リンクが横方向にwrapされる。縦1列には固定しない。 */
	.yfc-footer__bottom-row {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
	}
	.yfc-footer__legal a {
		font-size: 10.5px;
	}
	.yfc-footer__copyright {
		font-size: 10px;
	}
	/* 固定CTAバーにコンテンツが隠れないよう余白を確保（safe-area paddingは維持） */
	.yfc-footer__bottom {
		padding-bottom: calc(8px + var(--yfc-fixed-cta-h) + env(safe-area-inset-bottom, 0px));
		padding-top: 8px;
	}
}

/* --------------------------------------------------------------------------
   18. Mobile Fixed CTA
   Mobile（767px以下）のみ表示。safe-area対応、tap target最低44px。
   -------------------------------------------------------------------------- */
.yfc-fixed-cta {
	display: none;
}

@media (max-width: 767px) {
	.yfc-fixed-cta {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 900;
		box-shadow: 0 -2px 10px rgba(14, 39, 33, 0.12);
		padding-bottom: env(safe-area-inset-bottom, 0px);
	}

	.yfc-fixed-cta__item {
		min-height: 56px;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 2px;
		font-size: 11px;
		font-weight: 700;
		color: var(--yfc-white);
	}

	.yfc-fixed-cta__item--yellow {
		background: var(--yfc-yellow);
		color: var(--yfc-green-deep);
	}
	.yfc-fixed-cta__item--green {
		background: var(--yfc-green);
	}
	.yfc-fixed-cta__item--green:nth-of-type(3) {
		background: var(--yfc-green-dark);
	}
}

/* Fixed CTAの高さ分だけ、mainコンテンツ下部に余白を追加してコンテンツが隠れないようにする */
@media (max-width: 767px) {
	.yfc-main {
		padding-bottom: 0; /* Footerに直接余白を持たせているため、本体側は0のまま */
	}
}

/* --------------------------------------------------------------------------
   19. Accessibility / Reduced Motion
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.yfc-main *,
	.yfc-header *,
	.yfc-footer *,
	.yfc-fixed-cta * {
		transition-duration: 0.001ms !important;
		animation-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* --------------------------------------------------------------------------
   20. V14.1.1 TOP text color hotfix（既存ルールは変更せず、TOPだけに追加）
   見出し要素（h1 / h2）はテーマの見出し色が優先され、親の白（.yfc-hero__copy / .yfc-final-cta）を
   継承せず暗く表示されるため、TOPの該当見出しだけ白を明示する。
   - Hero：.yfc-hero__title はコートレンタルでも共用のため、front pageのbody class（.home）でscope。
   - Final CTA：.yfc-final-cta はTOP（template-parts/front/final-cta.php）専用。
   -------------------------------------------------------------------------- */
body.home .yfc-hero .yfc-hero__title {
	color: var(--yfc-white);
}

.yfc-final-cta .yfc-final-cta__title {
	color: var(--yfc-white);
}

/* --------------------------------------------------------------------------
   21. V15.0.1 Routing / Navigation（既存ルールは変更せず追加のみ）
   - MAIN SERVICES：各カードの「詳しく見る」（サービス詳細ページへのtext link。行動CTAボタンの下）
   - Header / Mobile Menu：現在表示中のサービス詳細ページ（aria-current="page"）
     既存のhover色（--yfc-green）を再利用した控えめな表示。Footerには適用しない。
   -------------------------------------------------------------------------- */
.yfc-service-card .yfc-service-card__detail {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 44px; /* tap target */
	margin-top: 4px;
	font-size: 13px;
	font-weight: 700;
	color: var(--yfc-green-dark);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.yfc-service-card .yfc-service-card__detail:hover {
	color: var(--yfc-green);
}

/* `.yfc-main a { color: inherit }` が .yfc-btn--green の白文字より強く、MAIN SERVICESの緑ボタン（<a>）が
   暗い文字になるため、カード内の緑ボタンだけ白文字を明示する（schoolのCTAが<a>になったことに伴う対応）。 */
.yfc-service-card__body > .yfc-btn--green {
	color: var(--yfc-white);
}

.yfc-header__nav a[aria-current="page"],
.yfc-mobile-menu nav a[aria-current="page"] {
	color: var(--yfc-green);
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 6px;
}

/* Header CTA文言「コート予約」（旧「予約する」より1文字長い）で、狭いTablet幅（768–859px）の
   Headerが横にはみ出さないよう、この幅だけCTA内の装飾矢印（aria-hidden）を省略する。 */
@media (min-width: 768px) and (max-width: 859px) {
	.yfc-header__cta > span[aria-hidden="true"] {
		display: none;
	}
}
