@charset "UTF-8";
/* ==========================================================================
   Foundation / base
   ========================================================================== */
html {
	scroll-behavior: smooth;
	/* 追従ヘッダー分のアンカー余白 */
	scroll-padding-top: var(--header-h);
}

body {
	font-family: var(--font-sans);
	font-size: var(--fs-base);        /* タブレット以上：16px */
	line-height: var(--lh-base);
	color: var(--color-text);
	background: var(--color-bg);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	/* 追従ヘッダー分の余白 */
	padding-top: var(--header-h);
	overflow-wrap: break-word;
}

a {
	transition: color 0.25s var(--ease), opacity 0.25s var(--ease);
}

a:hover {
	opacity: 0.75;
}

:focus-visible {
	outline: 2px solid var(--color-gold);
	outline-offset: 2px;
}

/* スキップリンク */
.c-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 2000;
	padding: 10px 16px;
	background: var(--color-navy);
	color: #fff;
}
.c-skip-link:focus {
	left: 8px;
	top: 8px;
}

/* ---- スマートフォン：基準15px＋左右15pxの余白 ---- */
@media (max-width: 767px) {
	body {
		font-size: 15px;
		padding-top: var(--header-h-sp);
	}
	html {
		scroll-padding-top: var(--header-h-sp);
	}
}

/* スクロールロック（ドロワー展開時） */
body.is-drawer-open {
	overflow: hidden;
}

/* ---- ページ表示時のフェードイン（表示時・下層遷移時ともに） ---- */
@media (prefers-reduced-motion: no-preference) {
	body {
		animation: kashiban-fade-in 0.45s var(--ease) both;
	}
}
@keyframes kashiban-fade-in {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}
