@import url('/css/theme.tokens.css'); /* UI 리뉴얼 디자인 토큰 — 이 파일을 로드하는 모든 페이지에서 변수 보장 */
html, body {width: 100%;min-width: 320px;min-height: 320px;padding: 0;margin: 0;height: 100%;-webkit-overflow-scrolling:touch;}
body, html { position: fixed; font-size:1rem; font-family: var(--font-sans); color: var(--c-text); letter-spacing: -0.01em; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
button { background: transparent; border: 0; padding: 0; cursor: pointer; color: inherit;}
form { margin: 0; }
a, a:hover, a:visited {color:black;text-decoration: unset;}
* {background-repeat: no-repeat; background-position: center;}

::-webkit-input-placeholder{
	color: gray;
	opacity: 0.5;
}
::-moz-placeholder{
	color: gray;
	opacity: 0.5;
}
:-ms-input-placeholder{
	color: gray;
	opacity: 0.5;
}
:-moz-placeholder{
	color: gray;
	opacity: 0.5;
}
::placeholder {
	color: gray;
	opacity: 0.5;
}
*:focus {
    outline: none !important;
}
material {
	width: 1.3em;
	height: 1.3em;
	display: inline-block;
	background-image: url();
	background-position: center;
	background-size: auto 100%;
	vertical-align: sub;
}
material[name='add'] {
	background-image: url(/img/material.add.svg);
}
material[name='add_white'] {
	background-image: url(/img/material.add.white.svg);
}
material[name='add_circle'] {
	background-image: url(/img/material.add.circle.svg);
}
material[name='add_circle_white'] {
	background-image: url(/img/material.add.circle.white.svg);
}
material[name='naver_reservation'] {
	background-image: url(/img/naver_reservation1.svg);
}
material[name='daangn_reservation'] {
	background-image: url(/img/daangn_reservation.svg);
}
material[name='rev_confirm'] {
	background-image: url(/img/rev_confirm.svg);
}
material[name='homepage_reservation'] {
	background-image: url(/img/homepage_reservation.svg);
}
material[name='kakao_reservation'] {
	background-image: url(/img/logo_kakao.png);
}
material[name='rev_setting'] {
	background-image: url(/img/material.rev_setting.svg);
}
material[name='expire_remind'] {
	background-image: url(/img/material.expire_remind.svg);
}
material[name='sms'] {
	background-image: url(/img/material.sms.svg);
}
material[name='input_all'] {
	background-image: url(/img/material.input.all.svg);
}
material[name='trash'] {
	background-image: url(/img/material.trash.svg);
}
material[name='trash_white'] {
	background-image: url(/img/material.trash.white.svg);
}
material[name='expand_more'] {
	background-image: url(/img/material.expand.more.svg);
}
material[name='expand_less'] {
	background-image: url(/img/material.expand.less.svg);
}
material[name='expand_more_white'] {
	background-image: url(/img/material.expand.more.white.svg);
}
material[name='expand_less_white'] {
	background-image: url(/img/material.expand.less.white.svg);
}
material[name='more'] {
	background-image: url(/img/material.expand.more.svg);
}
material[name='less'] {
	background-image: url(/img/material.expand.less.svg);
}
material[name='close'] {
	background-image: url(/img/material.close.svg);
}
material[name='close_white'] {
	background-image: url(/img/material.close.white.svg);
}
material[name='phone'] {
	background-image: url(/img/material.phone.svg);
}
material[name='schedule'] {
	background-image: url(/img/material.schedule.svg);
}
material[name='mood-good'] {
	background-image: url(/img/material.mood.good.svg);
}
material[name='mood-good'] {
	background-image: url(/img/material.mood.good.svg);
}
material[name='cancel_3d1f1f'] {
	background-image: url(/img/material.cancel.3d1f1f.svg);
}
material[name='cancel'] {
	background-image: url(/img/material.cancel.svg);
}
material[name='error'] {
	background-image: url(/img/material.error.svg);
}
material[name='search_3d1f1f'] {
	background-image: url(/img/material.search.3d1f1f.svg);
}
material[name='search_white'] {
	background-image: url(/img/material.search.white.svg);
}
material[name='star_yellow'] {
	background-image: url(/img/material.star.yellow.svg);
}
input[type="checkbox"] {
	display:none;
}
.swal2-popup input[type="checkbox"] {
	display: inline;
}
input[type="checkbox"] + label span {
	width: 1.2em;
	height: 1.2em;
	margin-right: 5px;
}
input[type="checkbox"] + label span::before {
	content: "";
	color: #818183;
	font-size: 24px;
	content: "";
	width: 24px;
	height: 24px;
	display: inline-block;
	background-image: url(/img/material.unchecked.circle.818183.svg);
	background-position: center;
	background-size: 100%;
	background-repeat: no-repeat;
	vertical-align: bottom;
}
input[type="checkbox"]:checked + label span::before {
	background-image: url(/img/material.check.circle.818183.svg);
}
.popuplayer .popup .close::before{
	content: "" !important;
	background-image: url(/img/material.close.white.svg);
	background-position: center;
	background-size: 70%;
	height: 100%;
	width: 100%;
	background-repeat: no-repeat;
	display: inline-block;
	vertical-align: bottom;
}
._table {
	display: table;
	width: 100%;
}
._table>*:not(._table_row),
._table>._table_row>* {
	display: table-cell;
}
._table>._table_row {
	display: table-row;
}
.non_br br {
	display: none;
}

.row,
.row>div{
	margin: 0;
	padding: 0;
}
ul {
	list-style: none;
	padding: 0;
	margin: 0;
}
p {
	margin: 0;
}
material {
	width: 1.3em;
	height: 1.3em;
	display: inline-block;
	background-image: url();
	background-position: center;
	background-size: auto 100%;
	vertical-align: sub;
}
material[name='close'] {
	background-image: url(/img/material.close.svg);
}
.trans, .trans::before, .trans::after {
	-moz-transition: ease-out 0.3s 0.1s;
	-o-transition: ease-out 0.3s 0.1s;
	-webkit-transition: ease-out 0.3s;
	-webkit-transition-delay: 0.1s;
	transition: ease-out 0.3s 0.1s;
}
.contents {
	position: relative;
	padding-top: 40px;
	width: 100%;
	height: 100%;
	overflow: hidden;
}
.main-container-wrap {
	width: 100%;
	height: 100%;
	overflow: auto;
	background-color: var(--c-app-bg);
}
/* ── 앱 헤더 (UI 리뉴얼: 다크 → 라이트 화이트 앱바) ── */
.header-container {
	position:fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 40px;
	text-align: right;
    white-space: nowrap;
	background-color: var(--c-surface);
	color: var(--c-text);
	padding: 5px 12px;
	z-index: 1;
	border-bottom: 1px solid var(--c-border);
	box-shadow: var(--shadow-sm);
    overflow-x: auto;
    overflow-y: hidden;
}
.header-container span {
	display: inline-block;
	height: 30px;
	line-height: 20px;
	font-size: 0.9em;
	padding: 5px;
	color: var(--c-text-muted);
}
.header-container button {
	color: var(--c-text-sub);
	height: 30px;
	line-height: 18px;
	padding: 4px 12px;
	border: 1px solid var(--c-border);
	border-radius: var(--radius-md);
	font-size: 0.85em;
}
.header-container button:hover,
.header-container button:active {
	background-color: var(--c-surface-2);
	border-color: var(--c-border-strong);
}
/* 다크/라이트 토글 — 아이콘 전용(달/해). 다른 헤더 버튼과 같은 세로 박스(height/line-height)
   를 유지해 정렬을 맞추고, 보더는 없애 가벼운 아이콘 버튼으로. */
.header-container #app-theme-toggle {
	position: relative;
	width: 34px;
	padding: 4px 0;
	border: 0;
	background: transparent;
	text-align: center;
	font-size: 15px;
	overflow: visible;
}
.header-container #app-theme-toggle:hover,
.header-container #app-theme-toggle:active {
	border: 0;
	background-color: var(--c-surface-2);
}
/* 아이콘 span 은 헤더 공용 span 박스(height/padding) 상속을 끊어 정렬 유지 */
.header-container #app-theme-toggle .tg-ico {
	display: inline;
	height: auto;
	padding: 0;
	margin: 0;
	line-height: inherit;
	color: inherit;
}
/* 신규 안내 NEW 배지 — 첫 클릭 전까지 노출(themeIntroSeen, PC당 1회) */
.header-container #app-theme-toggle .app-new-badge {
	position: absolute;
	top: -1px;
	right: -7px;
	height: auto;
	padding: 0 4px;
	line-height: 1.4;
	background: var(--c-danger);
	color: #fff;
	font-size: 8px;
	font-weight: 700;
	letter-spacing: 0.3px;
	border-radius: 7px;
	pointer-events: none;
}
/* 다크모드 신규 안내 말풍선 (원타임 코치마크) — 토글 버튼 아래, 화살표가 버튼을 가리킴 */
#app-theme-coachmark {
	position: fixed;
	z-index: 1200;
	max-width: 250px;
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 10px 12px;
	background: var(--c-primary);
	color: #fff;
	border-radius: 10px;
	box-shadow: 0 8px 24px rgba(0,0,0,0.22);
	font-size: 12px;
	line-height: 1.4;
	animation: tcm-pop .25s ease-out;
}
#app-theme-coachmark .tcm-arrow {
	position: absolute;
	top: -5px;
	left: 20px;
	width: 12px;
	height: 12px;
	background: var(--c-primary);
	transform: rotate(45deg);
	border-radius: 2px;
}
#app-theme-coachmark .tcm-text {
	display: flex;
	flex-direction: column;
}
#app-theme-coachmark .tcm-text b { font-weight: 700; }
#app-theme-coachmark .tcm-text .tcm-sub { font-size: 11px; opacity: 0.92; margin-top: 2px; line-height: 1.35; }
#app-theme-coachmark .tcm-close {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	line-height: 16px;
	text-align: center;
	border-radius: 50%;
	background: rgba(255,255,255,0.22);
	color: #fff;
	font-size: 13px;
	border: 0;
	cursor: pointer;
}
#app-theme-coachmark .tcm-close:hover { background: rgba(255,255,255,0.35); }
@keyframes tcm-pop {
	from { opacity: 0; transform: translateY(-4px); }
	to   { opacity: 1; transform: translateY(0); }
}
.header-container .menu-area {
	text-align: left;
	white-space: nowrap;
}
.header-container .menu-area>a {
	display: inline-block;
	color: var(--c-text-muted);
	padding: 5px 12px;
	margin-right: 2px;
	text-align: center;
	font-size: 0.9em;
	border-radius: var(--radius-md);
	transition: background-color .15s, color .15s;
}
.header-container .menu-area>a:hover {
	color: var(--c-text);
	background-color: var(--c-surface-2);
}
.header-container .menu-area>a[focus] {
	font-weight: 700;
	color: var(--c-primary);
	background-color: var(--c-primary-soft);
}
::-webkit-scrollbar {width:8px; height: 8px;}
::-webkit-scrollbar-track {background-color:transparent;}
::-webkit-scrollbar-thumb {background-color:#c3cbd6; border-radius: 4px}
::-webkit-scrollbar-thumb:hover {background-color:#a7b1bf;}
::-webkit-scrollbar-button {display:none;}
::-webkit-scrollbar-corner {background-color:transparent;}
.main-container {
	width: 100%;
	height: 100%;
	position: relative;
	overflow: hidden;
	background-color: var(--c-app-bg);
}
/* =========================================================================
   로딩 오버레이 — BeautyLounge 스타일 (프로스트 백드롭 + 블루 링 스피너)
   ========================================================================= */
#loading-area {
	position: fixed;
	inset: 0;
	z-index: 9999999;
	display: none;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	background: rgba(255, 255, 255, 0.6);
	-webkit-backdrop-filter: blur(3px) saturate(115%);
	backdrop-filter: blur(3px) saturate(115%);
	cursor: default;
	user-select: none;
}
#loading-area.show {
	display: flex;
	animation: bl-load-fade 0.18s ease;
}
#loading-area .bl-spinner {
	width: 46px;
	height: 46px;
	border: 4px solid var(--c-primary-soft);
	border-top-color: var(--c-primary);
	border-radius: 50%;
	animation: bl-spin 0.8s linear infinite;
}
#loading-area .bl-loading-text {
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -0.01em;
	color: var(--c-text-sub);
}
@keyframes bl-spin {
	to { transform: rotate(360deg); }
}
@keyframes bl-load-fade {
	from { opacity: 0; }
	to { opacity: 1; }
}
/* 다크: 로딩 오버레이 배경이 흰색(rgba 255)이라 다크에서 흰 베일+흐린 글자가 됨 → 어둡게 + 글자 밝게 */
.theme-dark #loading-area {
	background: rgba(16, 18, 24, 0.62);
}
.theme-dark #loading-area .bl-loading-text {
	color: var(--c-text);
}
div:where(.swal2-container).swal2-center>.swal2-popup {
	display: flex !important;
	flex-direction: column;
}
div:where(.swal2-container) h2:where(.swal2-title) {
	padding: .8em 1em !important;
}
div:where(.swal2-container) .swal2-html-container {
	padding: .5em 1.6em !important;
	margin: 0 !important;
}
/* 다크 모드 안내 — 폰·커버에서는 화면 아래 탭 바 위로(2026-10-20).
   토글 버튼 아래를 가리키는 자리가 예약 관리 날짜·고객 관리 검색창·팝업 닫기 ✕ 를 덮었다.
   위치는 JS 가 ng-style 로 넣으므로 !important 로 맞받는다. */
@media (max-width: 767px) {
	#app-theme-coachmark {
		top: auto !important; left: 12px !important; right: 76px !important; /* 오른쪽 + 버튼 자리는 비운다 */
		bottom: calc(70px + env(safe-area-inset-bottom, 0px)) !important;
		max-width: none;
	}
	#app-theme-coachmark .tcm-arrow { display: none; }
	/* 팝업이 열려 있으면 아래 버튼 줄(닫기·저장하기)을 덮으므로 숨긴다. 공지 창(1050)보다는 아래로 */
	#main_app_area.modal_open #app-theme-coachmark { display: none !important; }
	#app-theme-coachmark { z-index: 1000; }
}
