/*
 * 全ページ共通（新デザイン時のみ読み込まれる）
 * SWELL の出力は #body_wrap に .snw を付けて上書きする。!important は使わない。
 */

/* ---------- 基本 ---------- */
body:has(.snw) {
	background: var(--color-background);
}

.snw {
	--color_main: var(--snw-navy);
	--color_link: var(--snw-navy);
	--color_text: var(--snw-ink);
	--color_bg: var(--snw-ivory);
	background: var(--color-background);
	color: var(--color-text);
	font-family: var(--font-jp);
	font-feature-settings: "palt" 0;
	-webkit-font-smoothing: antialiased;
}

.snw :where(a) {
	color: inherit;
	text-underline-offset: 0.2em;
}

.snw :where(a, button, input, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--snw-coral);
	outline-offset: 3px;
	border-radius: var(--radius-sm);
}

.snw-wrap {
	width: min(100% - var(--gutter) * 2, var(--wrap));
	margin-inline: auto;
}

.snw-en {
	margin: 0 0 var(--space-xs);
	font-family: var(--font-accent);
	font-size: var(--font-size-sm);
	font-weight: 600;
	letter-spacing: var(--tracking-label);
	color: var(--snw-coral-ink);
}

.snw-h2 {
	margin: 0;
	font-size: var(--font-size-h2);
	font-weight: 700;
	line-height: var(--leading-tight);
	letter-spacing: 0.01em;
	color: var(--snw-navy);
}

@media (min-width: 600px) {
	.snw-br-sp { display: none; }
}

/* ---------- ボタン・テキストリンク ---------- */
.snw-button {
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	min-height: 48px;
	padding: 0 var(--space-md);
	border-radius: var(--radius-sm);
	background: var(--snw-navy);
	color: var(--snw-ivory);
	font-weight: 700;
	text-decoration: none;
	transition: background-color var(--duration-fast) var(--ease);
}
.snw-button:hover { background: var(--snw-navy-700); color: var(--snw-ivory); }

.snw-textlink {
	display: inline-block;
	padding-block: 2px;
	font-weight: 700;
	color: var(--snw-navy);
	text-decoration: none;
	background: linear-gradient(var(--snw-coral), var(--snw-coral)) 0 100% / 100% 2px no-repeat;
	transition: background-size var(--duration) var(--ease);
}
.snw-textlink::after { content: " →"; }
.snw-textlink:hover { background-size: 0% 2px; background-position: 100% 100%; }

.snw-arrow {
	flex: none;
	width: 20px;
	height: 2px;
	background: currentColor;
	position: relative;
	transition: transform var(--duration-fast) var(--ease);
}
.snw-arrow::after {
	content: "";
	position: absolute;
	right: 0;
	top: -4px;
	width: 10px;
	height: 10px;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	transform: rotate(45deg);
}

/* ---------- チップ（キーワード・カテゴリー） ---------- */
.snw-chips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
	margin: 0;
	padding: 0;
	list-style: none;
}
.snw-chip {
	display: inline-flex;
	align-items: center;
	min-height: 36px;
	padding: 0 14px;
	border: var(--rule);
	border-radius: 999px;
	background: var(--color-surface);
	font-size: var(--font-size-sm);
	color: var(--snw-navy);
	text-decoration: none;
	transition: border-color var(--duration-fast) var(--ease), background-color var(--duration-fast) var(--ease);
}
.snw-chip:hover { border-color: var(--snw-navy); }
.snw-chip.is-current { background: var(--snw-navy); border-color: var(--snw-navy); color: var(--snw-ivory); }

/* ---------- 検索 ---------- */
.snw-search { margin: 0; }
.snw-search__label {
	display: block;
	margin-bottom: var(--space-xs);
	font-size: var(--font-size-sm);
	font-weight: 700;
	color: var(--snw-navy);
}
.snw-search__field {
	display: flex;
	border: 2px solid var(--snw-navy);
	border-radius: var(--radius-sm);
	background: var(--color-surface);
}
.snw-search__input {
	flex: 1;
	min-width: 0;
	min-height: 56px;
	padding: 0 var(--space-sm);
	border: 0;
	background: transparent;
	font-size: 1rem; /* 16px未満だとiOSで拡大されるため */
	color: var(--snw-ink);
}
.snw-search__input::placeholder { color: var(--snw-muted); }
.snw-search__input:focus-visible { outline: none; }
.snw-search__field:focus-within { outline: 2px solid var(--snw-coral); outline-offset: 3px; }
.snw-search__submit {
	flex: none;
	min-width: 88px;
	border: 0;
	background: var(--snw-navy);
	color: var(--snw-ivory);
	font-weight: 700;
	cursor: pointer;
}
.snw-search__submit:hover { background: var(--snw-navy-700); }
.snw-search__keywords {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-xs) var(--space-sm);
	margin-top: var(--space-sm);
}
.snw-search__keywordsLabel { font-size: var(--font-size-xs); color: var(--snw-muted); }

/* SWELL の検索モーダルも同じ見た目に */
.snw .p-searchModal__inner { max-width: 640px; }
.snw .c-searchForm__s {
	min-height: 56px;
	border: 2px solid var(--snw-navy);
	border-radius: var(--radius-sm);
	font-size: 1rem;
}
.snw .c-searchForm__submit { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }

/* ---------- ヘッダー ---------- */
.snw .l-header,
.snw .l-fixHeader {
	background: color-mix(in srgb, var(--snw-ivory) 94%, transparent);
	border-bottom: var(--rule);
	box-shadow: none;
	backdrop-filter: saturate(1.2) blur(6px);
}
.snw .l-header__bar { display: none; } /* 上部の細いバーは使わない */
.snw .c-gnav > .menu-item > a {
	color: var(--snw-ink);
	font-weight: 700;
	font-size: 0.9375rem;
	letter-spacing: 0.02em;
}
.snw .c-gnav > .menu-item > a .c-smallNavTitle.desc { display: none; } /* メニューの説明文はヘッダーでは出さない */
.snw .c-gnav > .menu-item > a::after { background: var(--snw-coral); height: 2px; }
.snw .c-gnav > .menu-item.current-menu-item > a,
.snw .c-gnav > .menu-item.current-menu-parent > a { color: var(--snw-navy); }
.snw .l-header__customBtn .c-iconBtn,
.snw .l-header__menuBtn .c-iconBtn { color: var(--snw-navy); }

/* ---------- パンくず ---------- */
.snw .p-breadcrumb { background: transparent; border-top: var(--rule); }
.snw .p-breadcrumb__text { color: var(--snw-muted); }

/* ---------- フッター ---------- */
.snw .l-footer { background: var(--snw-navy); color: var(--snw-ivory); }
.snw .l-footer a { color: inherit; }
.snw-footer { padding-block: var(--space-xl) var(--space-lg); }
.snw-footer__grid {
	display: grid;
	gap: var(--space-lg) var(--space-md);
	grid-template-columns: 1fr;
}
@media (min-width: 768px) {
	.snw-footer__grid { grid-template-columns: 1.6fr 1fr 1fr 1fr; }
}
.snw-footer__name {
	margin: 0 0 var(--space-sm);
	font-size: 1.5rem;
	font-weight: 700;
	letter-spacing: 0.06em;
}
.snw-footer__name a { text-decoration: none; }
.snw-footer__message { margin: 0; line-height: var(--leading-body); color: color-mix(in srgb, var(--snw-ivory) 82%, transparent); }
.snw-footer__heading {
	margin: 0 0 var(--space-sm);
	padding-bottom: var(--space-xs);
	border-bottom: 1px solid color-mix(in srgb, var(--snw-ivory) 24%, transparent);
	font-size: var(--font-size-sm);
	font-weight: 700;
}
.snw-footer__nav ul { margin: 0; padding: 0; list-style: none; }
.snw-footer__nav li + li { margin-top: var(--space-xs); }
.snw-footer__nav a {
	font-size: var(--font-size-sm);
	text-decoration: none;
	color: color-mix(in srgb, var(--snw-ivory) 88%, transparent);
}
.snw-footer__nav a:hover { color: var(--snw-ivory); text-decoration: underline; }
.snw-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	gap: var(--space-sm);
	margin-top: var(--space-xl);
	padding-top: var(--space-md);
	border-top: 1px solid color-mix(in srgb, var(--snw-ivory) 24%, transparent);
}
.snw-footer__copy { margin: 0; color: color-mix(in srgb, var(--snw-ivory) 70%, transparent); }

/* ---------- 表示アニメーション（控えめ・JSが無くても表示される） ---------- */
.snw-js .snw-reveal {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity var(--duration) var(--ease), transform var(--duration) var(--ease);
}
.snw-js .snw-reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	.snw *,
	.snw *::before,
	.snw *::after {
		transition-duration: 0.01ms;
		animation-duration: 0.01ms;
		scroll-behavior: auto;
	}
	.snw-js .snw-reveal { opacity: 1; transform: none; }
}
