.ch-header {
	background: var(--hero);
	color: #fff;
}
.ch-header__inner {
	max-width: calc(var(--content-max) + 2 * var(--gutter));
	margin: 0 auto;
	height: 80px;
	display: flex;
	align-items: center;
	gap: 40px;
	padding: 0 var(--gutter);
}
.ch-header__brand {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 18px;
	font-weight: 600;
	white-space: nowrap;
}
.ch-header__logo {
	display: block;
	height: 40px;
	width: auto;
	max-width: 200px;
}
.ch-gnb {
	flex: 1;
}
.ch-gnb > ul {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 36px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ch-gnb > ul > li {
	position: relative;
}
.ch-gnb a {
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: 8px 2px;
	/* 컨트롤 폰트(디자인 시스템): 17px/400. */
	font-size: 17px;
	font-weight: 400;
	opacity: 0.9;
}
.ch-gnb a:hover,
.ch-gnb a:focus-visible {
	opacity: 1;
	/* AA 4.5:1 텍스트 전용 토큰(어두운 --hero 배경 위) — 원래 --accent(4.37:1)는 sub-AA. */
	color: var(--accent-text-dark, #c48b96);
	text-decoration: underline;
}
.ch-gnb__sub {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 180px;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: #fff;
	/* 오버레이 컨트롤 계층의 기능성 그림자(콘텐츠와 분리 목적)라 플랫 정책 예외로 유지. */
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
	border-radius: var(--r-control, 8px);
	display: none;
	z-index: 20;
}
.ch-gnb > ul > li:hover .ch-gnb__sub,
.ch-gnb > ul > li:focus-within .ch-gnb__sub {
	display: block;
}
.ch-gnb__sub a {
	color: var(--text);
	opacity: 1;
	padding: 8px 20px;
	white-space: nowrap;
}
.ch-gnb__sub a:hover,
.ch-gnb__sub a:focus-visible {
	background: var(--soft);
}
.ch-header__auth {
	margin-left: auto;
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: 44px;
}
.ch-header__auth a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 4px;
	font-size: 14px;
	font-weight: 500;
	opacity: 0.85;
}
.ch-header__auth a:hover,
.ch-header__auth a:focus-visible {
	opacity: 1;
	text-decoration: underline;
}
.ch-auth__nick {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	font-size: 14px;
	font-weight: 600;
}
.ch-header__auth a.ch-btn-admin {
	/* 컴팩트 pill(디자인 시스템): 36px, 8/15 패딩, 14px/400. */
	min-height: var(--btn-h-compact, 36px);
	padding: var(--btn-pad-compact, 8px 15px);
	background: #785359;
	color: #fff;
	border-radius: var(--r-pill, 980px);
	/* body의 line-height 25px 상속 차단 — 컴팩트 pill 높이 스펙 유지(codex 리뷰). */
	line-height: var(--lh-small, 18px);
	font-weight: 400;
	opacity: 1;
}
.ch-header__auth a.ch-btn-admin:hover,
.ch-header__auth a.ch-btn-admin:focus-visible {
	background: #634249;
	text-decoration: none;
}

@media (max-width: 839px) {
	.ch-header__inner {
		height: auto;
		flex-wrap: wrap;
		gap: 16px;
		padding: 16px var(--gutter);
	}
}

/* 홈+서브 공통(배너가 어두운 사진이므로 전 페이지 성립) 헤더 = 사진 위 투명 오버레이(레퍼런스 정합).
   헤더 자체 스크림(::before)으로 admin 임의 슬라이드/배너 사진에서도 흰 텍스트 가독을 보장.
   <840은 드로어 UX 유지 위해 솔리드. */
@media (min-width: 840px) {
	.ch-wrap {
		position: relative;
	}
	.ch-wrap .ch-header {
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		z-index: 30;
		background: transparent;
	}
	.ch-wrap .ch-header::before {
		content: '';
		position: absolute;
		inset: 0;
		z-index: -1;
		pointer-events: none;
		/* 바닥 알파 0.12: 헤더 최하단 픽셀행에서도 순백 사진 대비 AA(4.5:1) 여유 확보
		   (0으로 완전 소멸 시 최하단 ≈4.43:1로 경계 미달 — 리뷰 실측). */
		background: linear-gradient(180deg, rgba(30, 25, 23, 0.45), rgba(30, 25, 23, 0.12));
	}
}
