/*
 * Dboard — Base layer (전역 유틸리티)
 * ============================================================================
 * design-tokens.css(값) 바로 다음, 컴포넌트 CSS 보다 먼저 실린다.
 * 여기에는 **어느 화면에서나 동일하게 참인 것**만 둔다.
 *
 *   · [hidden] 정규화 — 컴포넌트마다 반복하던 규칙을 한 곳으로.
 *   · .dp-sr-only  — 화면에는 안 보이고 스크린리더만 읽는 라벨.
 *
 * 여기에 리셋(box-sizing 등)을 추가하지 않는다 — 기존 레이아웃이 UA 기본값을
 * 전제로 짜여 있어, 지금 바꾸면 전 화면이 미세하게 어긋난다. 새 제품에 이
 * 시스템을 이식할 때는 리셋을 여기에 얹어 시작하면 된다.
 * ============================================================================
 */

/* hidden 속성이 붙으면 무조건 사라진다.
 * 이게 없으면 컴포넌트의 display:flex/grid 가 UA 의 [hidden] 기본값을 이겨서
 * "숨겼는데 보이는" 사고가 난다 — 예전엔 패널·탭·모달마다 같은 규칙을 따로
 * 써 두고 있었다(8곳). 유틸리티이므로 !important 가 정당하다. */
[hidden] {
	display: none !important;
}

/* 폼 컨트롤은 본문 글꼴을 따른다.
 * UA 기본은 button·input 에 시스템 글꼴(맥 Arial → 한글은 Apple SD Gothic)을 따로 줘서,
 * 클래스마다 font-family:inherit 를 빠뜨린 곳(상단바 탭 등)만 다른 글꼴로 나왔다.
 * 리셋이 아니라 "어느 화면에서나 참"인 규칙이라 여기 둔다. */
button,
input,
select,
textarea,
optgroup {
	font-family: inherit;
	letter-spacing: inherit;
}

/* 스크린리더 전용 텍스트 — 아이콘 버튼의 이름표 등. */
.dp-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ============================================================
 * 빈 화면 — 단일 원본.
 *
 * 기준은 **장비 페이지의 점선 카드**다. 상담·문진·가격·관리·기획·특집·
 * 보관함이 각자 다른 모양이었던 것을 이 하나에 맞춘다.
 * 정의를 base.css 에 두는 이유는 미리보기 두 곳(가격표·특집)이
 * frontend.css 를 싣지 않기 때문이다 — 거기서도 같은 모양이 나와야 한다.
 *
 * 폭은 정하지 않는다. 장비가 그랬듯 놓인 자리를 그대로 채운다.
 *
 * 옛 이름들(.dp-consult-empty 등)은 마크업을 다 고치는 대신 여기에
 * 나란히 세워 같은 모양이 되게 한다 — 새 화면은 .dp-empty 만 쓴다.
 *
 *   .dp-empty          본문에 놓이는 큰 빈 화면
 *   .dp-empty--inline  패널·사이드바·모달 안의 작은 자리표시
 * ============================================================ */
.dp-empty,
.dp-consult-empty,
.ec-empty {
	padding: var(--dp-space-12) var(--dp-space-6);
	text-align: center;
	background: var(--dp-surface-raised);
	border: 1px dashed var(--dp-border-default);
	border-radius: var(--dp-radius-xl);
}
.dp-empty p,
.dp-consult-empty p,
.ec-empty p { color: var(--dp-text-secondary); margin-bottom: var(--dp-space-4); }
.dp-empty .dp-btn,
.dp-consult-empty .dp-btn,
.ec-empty .dp-btn { margin: 0 var(--dp-space-2); }

/* 제목이 붙는 빈 화면(가격표·특집 미리보기)용 — 장비에는 제목이 없어 영향 없다. */
.dp-empty h2,
.dp-empty h3,
.ec-empty h2,
.ec-empty h3 {
	margin: 0 0 var(--dp-space-4);
	font-size: var(--dp-text-lg);
	font-weight: var(--dp-weight-semibold, 600);
	color: var(--dp-text-primary);
}

/* 패널 안 — 같은 언어를 쓰되 자리를 덜 차지한다. */
.dp-empty--inline,
.dp-care__blank,
.dp-glist__empty,
.dp-pick__empty {
	padding: var(--dp-space-6) var(--dp-space-4);
	text-align: center;
	font-size: var(--dp-text-sm);
	color: var(--dp-text-secondary);
	background: var(--dp-surface-raised);
	border: 1px dashed var(--dp-border-default);
	border-radius: var(--dp-radius-lg);
	margin: 0;
}
