/**
 * Seran Search — 헤더 돋보기 + 검색 모달
 *
 * 색·서체는 seran-tokens / seran-layout 의 --sl-* 를 그대로 쓴다.
 * 모바일 분기 1280px = Seran_Layout::BREAKPOINT.
 */

/* ── 헤더 버튼 ────────────────────────────────────────────── */

.seran-hd__search {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	color: var(--sl-ink, #333);
	background: transparent;
	border: 0;
	border-radius: 50%;
	cursor: pointer;
	transition: color .18s ease, background-color .18s ease;
}

.seran-hd__search:hover,
.seran-hd__search:focus-visible {
	color: var(--sl-accent, #f68b1a);
	background: rgba(246, 139, 26, .1);
}

.seran-hd__search-icon {
	display: flex;
}

/* ── 모달 ─────────────────────────────────────────────────── */

.seran-search[hidden] {
	display: none;
}

.seran-search {
	position: fixed;
	inset: 0;
	z-index: 10000; /* 헤더(900)·모바일 내비(1000)·공지 팝업(9999) 위 */
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 72px 20px 24px;
}

.seran-search__scrim {
	position: absolute;
	inset: 0;
	background: rgba(20, 18, 16, .5);
	backdrop-filter: blur(2px);
	animation: seran-search-fade .18s ease both;
}

.seran-search__panel {
	position: relative;
	display: flex;
	flex-direction: column;
	width: min(720px, 100%);
	max-height: calc(100vh - 96px);
	background: #fff;
	border-radius: var(--seran-radius-lg, 20px);
	box-shadow: 0 20px 60px rgba(0, 0, 0, .22);
	overflow: hidden;
	animation: seran-search-rise .2s cubic-bezier(.2, .8, .3, 1) both;
}

@keyframes seran-search-fade {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes seran-search-rise {
	from { opacity: 0; transform: translateY(-10px); }
	to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.seran-search__scrim,
	.seran-search__panel { animation: none; }
}

/* ── 입력 줄 ──────────────────────────────────────────────── */

.seran-search__head {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 16px 16px 12px;
	border-bottom: 1px solid var(--sl-line, #ddd);
}

.seran-search__field {
	position: relative;
	display: flex;
	flex: 1 1 auto;
	align-items: center;
	min-width: 0;
}

.seran-search__field-icon {
	position: absolute;
	left: 14px;
	display: flex;
	color: var(--seran-ink-3, #888);
	pointer-events: none;
}

.seran-search__input {
	width: 100%;
	height: 48px;
	padding: 0 44px 0 44px;
	font-family: var(--seran-font, inherit);
	font-size: 16px; /* iOS 확대 방지 */
	color: var(--sl-ink, #333);
	background: var(--seran-bg-soft, #fafafa);
	border: 1px solid transparent;
	border-radius: 999px;
	outline: none;
	transition: border-color .18s ease, background-color .18s ease;
}

.seran-search__input::placeholder { color: var(--seran-ink-3, #888); }

.seran-search__input:focus {
	background: #fff;
	border-color: var(--sl-accent, #f68b1a);
}

/* 브라우저 기본 지우기 버튼 — 자체 버튼과 겹쳐서 숨긴다. */
.seran-search__input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }

.seran-search__clear {
	position: absolute;
	right: 12px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	padding: 0;
	color: var(--seran-ink-3, #888);
	background: transparent;
	border: 0;
	border-radius: 50%;
	cursor: pointer;
}

.seran-search__clear:hover { color: var(--sl-ink, #333); }
.seran-search__clear[hidden] { display: none; }

.seran-search__close {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	padding: 0;
	color: var(--seran-ink-2, #555);
	background: transparent;
	border: 0;
	border-radius: 50%;
	cursor: pointer;
}

.seran-search__close:hover { background: var(--seran-bg-soft, #fafafa); }

/* ── 탭 ───────────────────────────────────────────────────── */

.seran-search__tabs {
	display: flex;
	gap: 4px;
	padding: 12px 16px 0;
	overflow-x: auto;
	scrollbar-width: none;
}

.seran-search__tabs::-webkit-scrollbar { display: none; }

.seran-search__tab {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	gap: 5px;
	padding: 8px 14px;
	font-family: var(--seran-font, inherit);
	font-size: 14px;
	color: var(--seran-ink-2, #555);
	white-space: nowrap;
	background: transparent;
	border: 1px solid var(--sl-line, #ddd);
	border-radius: 999px;
	cursor: pointer;
	transition: color .16s ease, background-color .16s ease, border-color .16s ease;
}

.seran-search__tab:hover { border-color: var(--sl-accent-soft, #f6a04d); }

.seran-search__tab.is-active {
	color: #fff;
	font-weight: 600;
	background: var(--sl-accent, #f68b1a);
	border-color: var(--sl-accent, #f68b1a);
}

.seran-search__tab-count {
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	opacity: .75;
}

.seran-search__tab-count[hidden] { display: none; }

.seran-search__meta {
	margin: 10px 16px 0;
	font-size: 12px;
	color: var(--seran-ink-3, #888);
}

/* ── 결과 ─────────────────────────────────────────────────── */

.seran-search__body {
	flex: 1 1 auto;
	padding: 8px 16px 20px;
	overflow-y: auto;
	overscroll-behavior: contain;
}

.seran-search__hint,
.seran-search__empty,
.seran-search__error,
.seran-search__loading {
	margin: 28px 0;
	font-size: 14px;
	color: var(--seran-ink-3, #888);
	text-align: center;
}

.seran-search__error { color: var(--seran-error, #e2554d); }

.seran-search__list {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0;
	list-style: none;
}

.seran-search__item + .seran-search__item {
	border-top: 1px solid var(--seran-line-soft, #e8e8e8);
}

.seran-search__link {
	display: grid;
	grid-template-columns: 56px 1fr;
	gap: 14px;
	align-items: center;
	padding: 14px 10px;
	color: inherit;
	text-decoration: none;
	border-radius: var(--seran-radius, 12px);
	transition: background-color .15s ease;
}

.seran-search__link:hover,
.seran-search__link:focus-visible {
	background: var(--seran-bg-warm, #fff7ef);
}

.seran-search__thumb {
	width: 56px;
	height: 56px;
	object-fit: cover;
	background: var(--seran-bg-soft, #fafafa);
	border-radius: 10px;
}

/* 썸네일이 없는 갈래(검사·건강검진 일부)는 갈래 머리글자를 대신 세운다. */
.seran-search__thumb--blank {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	color: var(--sl-accent, #f68b1a);
	background: var(--seran-bg-warm, #fff7ef);
}

.seran-search__text { min-width: 0; }

.seran-search__kicker {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 3px;
	font-size: 11px;
	letter-spacing: .04em;
	color: var(--sl-accent, #f68b1a);
}

.seran-search__kicker span { color: var(--seran-ink-3, #888); }

.seran-search__title {
	margin: 0 0 3px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--sl-ink, #333);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.seran-search__excerpt {
	margin: 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--seran-ink-2, #555);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.seran-search mark {
	padding: 0 1px;
	color: inherit;
	font-weight: 700;
	background: rgba(246, 139, 26, .22);
	border-radius: 3px;
}

.seran-search__more {
	display: block;
	width: 100%;
	margin-top: 12px;
	padding: 11px 0;
	font-family: var(--seran-font, inherit);
	font-size: 14px;
	color: var(--seran-ink-2, #555);
	background: var(--seran-bg-soft, #fafafa);
	border: 0;
	border-radius: 999px;
	cursor: pointer;
}

.seran-search__more:hover { color: var(--sl-accent, #f68b1a); }

/* ── 모바일 ───────────────────────────────────────────────── */

@media (max-width: 640px) {
	.seran-search { padding: 0; }

	.seran-search__panel {
		width: 100%;
		max-height: 100%;
		height: 100%;
		border-radius: 0;
	}

	.seran-search__head { padding-top: max(14px, env(safe-area-inset-top)); }
	.seran-search__link { grid-template-columns: 48px 1fr; gap: 12px; }
	.seran-search__thumb { width: 48px; height: 48px; }
}
