/**
 * 김대리닷넷 베이스 스타일 (지시서 3장 디자인 시스템 + 9장).
 *
 * 이 파일의 역할:
 *   1. :root CSS 변수 = 디자인 토큰의 원본 (_native/tokens.json 작성 시 이 값을 옮긴다)
 *   2. JS가 다루는 상태 CSS (검색 모달·패키지 세그먼트·모바일 바·준비사항)
 *   3. 포커스 링, reduced-motion 등 전역 예외
 *
 * 컴포넌트 외양(kd-btn, kd-card, kd-header, kd-footer, kd-grid--N 등)은 Bricks 글로벌 클래스가
 * 단일 소스다 (scripts/build-bricks.php → bricks_global_classes). 이 파일에 중복 정의하지 않는다.
 */

/* ---------------------------------------------------------------- 토큰 */

:root {
	/* 컬러 (designbase 2026-10-06 실측 — _original/analysis.md) */
	--kd-bg: #F2F8FC;
	--kd-surface: #FFFFFF;
	--kd-border: #E8EEF2;
	--kd-text: #17191A;
	--kd-text-sub: #5B6470;
	--kd-primary: #2563EB;
	--kd-primary-soft: #E8F0FE;
	--kd-dark: #0B0C11;
	--kd-success: #16A34A;
	--kd-danger: #DC2626;
	--kd-accent-grad: linear-gradient(90deg, #3B82F6, #8B5CF6 50%, #EF4444);

	/* 형태 */
	--kd-radius-card: 12px;
	--kd-radius-tile: 8px;
	--kd-radius-cta: 16px;
	--kd-radius-btn: 12px;

	/* 레이아웃 */
	--kd-container: 1280px;
	--kd-pad-x: 40px;
	--kd-pad-x-m: 16px;

	/* 타이포 (clamp로 데스크톱↔390px 사이 보간) */
	--kd-fs-h1: clamp(36px, 4.2vw, 60px);
	--kd-fs-h2: clamp(26px, 3vw, 36px);
	--kd-fs-h3: clamp(17px, 1.6vw, 20px);
	--kd-fs-body: clamp(15px, 1.1vw, 16px);
	--kd-fs-meta: 13px;

	--kd-font: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont,
		'Apple SD Gothic Neo', 'Malgun Gothic', system-ui, sans-serif;
}

/* 폰트: Pretendard Variable 자체 호스팅 (Google Fonts 금지 — 지시서 2장).
   assets/fonts/ 에 서브셋 woff2 배치 후 활성화. font-display: swap 필수.
@font-face {
	font-family: 'Pretendard Variable';
	font-weight: 45 920;
	font-display: swap;
	src: url('../fonts/PretendardVariable.woff2') format('woff2-variations');
}
*/

/* ---------------------------------------------------------------- 전역 베이스 */

html {
	scroll-behavior: smooth;
}

body {
	font-family: var(--kd-font);
	font-size: var(--kd-fs-body);
	line-height: 1.6;
	color: var(--kd-text);
	background-color: var(--kd-bg);
	-webkit-font-smoothing: antialiased;
}

a {
	color: var(--kd-primary);
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

img {
	max-width: 100%;
	height: auto;
}

/* 접근성: 포커스 링 표시 (지시서 10장) */
:focus-visible {
	outline: 2px solid var(--kd-primary);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------- 패키지 선택 (kd-package.js 상태) */

/* 패키지 비교 표 (단순 선택자 한계로 상태 CSS는 여기에 둔다) */
.kd-pkg {
	width: 100%;
	border-collapse: collapse;
}

.kd-pkg th,
.kd-pkg td {
	padding: 16px;
	border: 1px solid var(--kd-border);
	text-align: left;
	vertical-align: top;
}

.kd-pkg__col--active {
	border-top: 2px solid var(--kd-primary);
}

/* 패키지 선택 세그먼트 — role="radiogroup" (지시서 10장 접근성) */
.kd-pkg-seg {
	display: flex;
	gap: 8px;
	margin-bottom: 16px;
	flex-wrap: wrap;
}

.kd-pkg-seg [role='radio'] {
	flex: 1 1 auto;
	height: 40px;
	padding: 0 14px;
	border: 1px solid var(--kd-border);
	border-radius: var(--kd-radius-btn);
	background-color: var(--kd-surface);
	font-family: var(--kd-font);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.kd-pkg-seg [role='radio']:hover {
	border-color: var(--kd-primary);
}

.kd-pkg-seg [role='radio'].is-active {
	background-color: var(--kd-primary-soft);
	border-color: var(--kd-primary);
	color: var(--kd-primary);
}

.kd-pkg-seg [role='radio'] .kd-pkg-seg__rec {
	color: var(--kd-primary);
	font-weight: 700;
}

/* 모바일 하단 고정 바 (지시서 7-4) */
.kd-mobile-bar {
	display: none;
}

@media (max-width: 767px) {
	.kd-mobile-bar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 90;
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 12px var(--kd-pad-x-m);
		background-color: var(--kd-surface);
		border-top: 1px solid var(--kd-border);
	}
}

/* 준비사항 목록 (주문 완료 페이지 — kd_order_prepare_html 출력) */
.kd-prepare__list {
	padding-left: 0;
	list-style: none;
}

.kd-prepare__list li {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 6px 0;
}

/* 세금계산서 조건부 필드 토글 (kd-checkout.js) */
.kd-hidden {
	display: none !important;
}

/* ---------------------------------------------------------------- 검색 모달 (kd-search.js) */

.kd-search {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: none;
	align-items: flex-start;
	justify-content: center;
	padding: 12vh var(--kd-pad-x-m) 24px;
	background-color: rgba(11, 12, 17, 0.4);
}

.kd-search.is-open {
	display: flex;
}

.kd-search__panel {
	width: 100%;
	max-width: 560px;
	background-color: var(--kd-surface);
	border: 1px solid var(--kd-border);
	border-radius: var(--kd-radius-card);
	overflow: hidden;
	box-shadow: 0 24px 64px rgba(11, 12, 17, 0.18);
}

.kd-search__input {
	width: 100%;
	height: 56px;
	padding: 0 20px;
	border: 0;
	border-bottom: 1px solid var(--kd-border);
	font-size: 16px;
	font-family: var(--kd-font);
	color: var(--kd-text);
	outline: none;
}

.kd-search__results {
	max-height: 320px;
	overflow-y: auto;
	margin: 0;
	padding: 8px;
	list-style: none;
}

.kd-search__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px;
	border-radius: var(--kd-radius-tile);
	cursor: pointer;
}

.kd-search__item:hover,
.kd-search__item.is-active {
	background-color: var(--kd-primary-soft);
}

.kd-search__item-name {
	font-size: 15px;
	font-weight: 600;
	color: var(--kd-text);
}

.kd-search__item-meta {
	font-size: var(--kd-fs-meta);
	color: var(--kd-text-sub);
}

.kd-search__empty {
	padding: 24px 20px;
	text-align: center;
	font-size: 14px;
	color: var(--kd-text-sub);
}

.kd-search__hint {
	padding: 8px 20px 12px;
	border-top: 1px solid var(--kd-border);
	font-size: 12px;
	color: var(--kd-text-sub);
	display: flex;
	gap: 16px;
}

.kd-search__hint kbd {
	padding: 1px 6px;
	border: 1px solid var(--kd-border);
	border-radius: 4px;
	background-color: var(--kd-bg);
	font-family: var(--kd-font);
	font-size: 11px;
}

body.kd-search-open {
	overflow: hidden;
}

/* ---------------------------------------------------------------- 모션 예외 */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}
