@charset "utf-8";


:root {
  
  --brand:       #E8481F;
  --brand-dim:   #FCEDE8;
  --mocha:       #453B38;
  --mocha-deep:  #2A2523;

  
  --bg:          #F5F6F8;
  --surface:     #FFFFFF;
  --surface-2:   #FAFBFC;
  --ink:         #1C1A19;
  --ink-70:      #55504D;
  --ink-50:      #857E7A;
  --ink-30:      #B4AEAA;
  --line:        #E6E4E1;
  --line-soft:   #F0EEEC;

  
  
  --st-reserved: #5FAF8C; --st-reserved-bg: #EAF6F0; --st-reserved-ink: #204E3D;
  --st-pending:  #CBA05A; --st-pending-bg:  #FBF4E6; --st-pending-ink:  #5A431B;
  --st-done:     #6E97CE; --st-done-bg:     #EAF1FA; --st-done-ink:     #29456E;
  --st-cancel:   #B0A69F; --st-cancel-bg:   #F1EEEC; --st-cancel-ink:   #48423F;
  --st-noshow:   #CE8AAC; --st-noshow-bg:   #F9EEF3; --st-noshow-ink:   #67334D;
  --st-wait:     #9B84C6; --st-wait-bg:     #F1EDF9; --st-wait-ink:     #4C3873;
  --mk-sale: #2f3640; --mk-couple: #e67e22; --zone-new-bg: #F4F8FF; --zone-new: #B9D3FF; --zone-old-bg: #fff; --zone-old: #DDD3C8;

  --sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont,
          "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  --mono: "SF Mono", "JetBrains Mono", Consolas, monospace;

  --nav-w: 220px;
  --top-h: 56px;
  
  --banner-h: 0px;
  --r: 10px;
  --r-s: 6px;
  --shadow-s: 0 1px 2px rgba(28,26,25,.05), 0 1px 3px rgba(28,26,25,.04);
  --shadow-m: 0 4px 16px rgba(28,26,25,.08);
  --shadow-l: 0 16px 48px rgba(28,26,25,.16);
  --ease: cubic-bezier(.22,.61,.36,1);
}

*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: var(--sans); font-size: 13.5px; line-height: 1.6;
  letter-spacing: -.01em; word-break: keep-all;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }
table { border-collapse: collapse; width: 100%; }
h1,h2,h3,h4,p,ul,ol,figure { margin: 0; }
ul { padding: 0; list-style: none; }
input, select, textarea { font: inherit; color: inherit; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #D6D2CE; border-radius: 6px; border: 3px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #BDB7B2; background-clip: content-box; }
/* cs1(메디스킨 126bbff · 대표 11/05): 예약 캘린더 가로 스크롤바만 두껍게 — 트랙 20px · 손잡이 위아래 2px 여백 · 세로 스크롤바와 다른 화면은 위 공통 규칙 그대로 */
.calg-wrap::-webkit-scrollbar { height: 20px; }
.calg-wrap::-webkit-scrollbar-track:horizontal { background: #ede9e5; border-radius: 10px; }
.calg-wrap::-webkit-scrollbar-thumb:horizontal { min-width: 44px; background: #8a8078; border: 2px solid transparent; border-radius: 10px; background-clip: padding-box; }
.calg-wrap::-webkit-scrollbar-thumb:horizontal:hover { background: #6b615a; background-clip: padding-box; }
.calg-wrap::-webkit-scrollbar-thumb:horizontal:active { background: #504741; background-clip: padding-box; }
/* ::-webkit-scrollbar 가 없는 브라우저만 — Chromium 에서 표준 속성을 쓰면 위 규칙이 무효가 된다 */
@supports not selector(::-webkit-scrollbar) { .calg-wrap { scrollbar-width: auto; scrollbar-color: #8a8078 #ede9e5; } }


.mock-banner {
  position: fixed; inset: 0 0 auto 0; height: 26px; z-index: 200;
  background: repeating-linear-gradient(135deg, #2A2523, #2A2523 10px, #3A3230 10px, #3A3230 20px);
  color: #F0E9E2; font-size: 11px; letter-spacing: .02em;
  display: flex; align-items: center; justify-content: center; gap: 8px;
}
.mock-banner b { color: var(--brand); font-weight: 700; }


.shell { display: grid; grid-template-columns: var(--nav-w) 1fr; min-height: 100vh; padding-top: var(--banner-h); }


.nav {
  background: var(--mocha-deep); color: #D9D2CC;
  position: sticky; top: var(--banner-h); height: calc(100vh - var(--banner-h));
  display: flex; flex-direction: column; overflow-y: auto;
}
.nav__brand { padding: 20px 18px 15px; border-bottom: 1px solid rgba(255,255,255,.07); }
.nav__logo { display: flex; align-items: center; gap: 10px; font-size: 16.5px; line-height: 1; color: #fff; letter-spacing: .14em; white-space: nowrap; }
.nav__mark { width: 28px; height: 28px; border-radius: 8px; flex: none; display: block; box-shadow: 0 2px 8px rgba(232,72,31,.28); }
.nav__logo span { font-weight: 300; opacity: .92; }
.nav__logo em { font-style: normal; font-weight: 800; color: var(--brand); }
.nav__rule { height: 1px; margin: 9px 0 7px; background: linear-gradient(90deg, var(--brand) 0 26px, rgba(255,255,255,.13) 26px); }
.nav__sub { font-size: 9.5px; color: #A79E98; letter-spacing: .22em; font-weight: 500; }
.nav__sub span { color: #6E6560; letter-spacing: .02em; font-weight: 400; }


.nav__group { padding: 4px 10px 6px; }
.nav__group + .nav__group { margin-top: 2px; }
.nav__label { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #fff; font-weight: 800; letter-spacing: .06em; padding: 9px 10px 9px 9px; text-transform: uppercase; cursor: pointer; user-select: none; border-radius: 0 var(--r-s) var(--r-s) 0; background: rgba(255,255,255,.055); border-left: 3px solid var(--brand); }
.nav__label:hover { background: rgba(255,255,255,.1); }
.nav__label--fav { color: #F4A63F; cursor: default; border-left-color: #F4A63F; }
.nav__label--fav:hover { background: rgba(255,255,255,.055); }
.nav__caret { order: 3; margin-left: auto; font-size: 10px; color: #CFC7C1; transition: transform .15s var(--ease); }
.nav__group.is-collapsed .nav__caret { transform: rotate(-90deg); }
.nav__group.is-collapsed .nav__items { display: none; }
.nav__gdot { width: 6px; height: 6px; border-radius: 50%; background: var(--brand); margin-left: 4px; }
.nav__items { margin: 5px 0 2px 14px; padding-left: 8px; border-left: 1px solid rgba(255,255,255,.13); }
.nav .nav__item {
  display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: var(--r-s);
  font-size: 13px; font-weight: 400; color: #B9B1AB; transition: background .15s var(--ease), color .15s var(--ease);
}
.nav .nav__t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav a.nav__item:hover { background: rgba(255,255,255,.07); color: #fff; }
.nav a.nav__item.is-active { background: var(--brand); color: #fff; font-weight: 600; }
.nav__item--parent { color: #DED7D1; font-weight: 600; }
.nav a.nav__item--child { padding-left: 24px; font-size: 12.5px; font-weight: 400; }
.nav__ico { width: 16px; text-align: center; font-size: 13px; opacity: .9; flex: 0 0 auto; }
.nav__badge { flex: 0 0 auto; background: rgba(255,255,255,.14); font-size: 10.5px; padding: 1px 6px; border-radius: 20px; }
.nav a.nav__item.is-active .nav__badge { background: rgba(0,0,0,.22); }
.nav__star { flex: 0 0 auto; background: transparent; border: 0; color: #8A817C; cursor: pointer; font-size: 13px; line-height: 1; padding: 0 1px; opacity: 0; transition: opacity .12s, color .12s; }
.nav__item:hover .nav__star { opacity: .8; }
.nav__star.is-on { opacity: .95; color: #F4A63F; }
.nav__star:hover { color: #F4A63F; opacity: 1; }
.nav__foot { margin-top: auto; padding: 12px; border-top: 1px solid rgba(255,255,255,.07); }
.nav__user { display: flex; align-items: center; gap: 9px; padding: 6px 8px; }
.nav__avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--brand); color: #fff; display: grid; place-items: center; font-size: 12px; font-weight: 700; }
.nav__uname { font-size: 12.5px; color: #E4DDD7; font-weight: 600; }
.nav__urole { font-size: 10.5px; color: #7E7570; }


.main { min-width: 0; display: flex; flex-direction: column; }
.topbar {
  height: var(--top-h); background: var(--surface); border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 14px; padding: 0 20px;
  position: sticky; top: var(--banner-h); z-index: 50;
}
.topbar__title { font-size: 15.5px; font-weight: 700; letter-spacing: -.02em; }
.topbar__desc { font-size: 12px; color: var(--ink-50); }
.topbar__right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.scope { display: flex; align-items: center; gap: 6px; margin-left: 22px; padding-left: 22px; border-left: 1px solid var(--line); }
.scope .select { height: 30px; font-size: 12px; font-weight: 600; }
.scope__brand { border-color: var(--brand); color: var(--brand); background-color: var(--brand-dim); }
.page { padding: 18px 20px 60px; }


.btn {
  display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px;
  border: 1px solid var(--line); background: var(--surface); border-radius: var(--r-s);
  font-size: 12.5px; font-weight: 500; transition: all .14s var(--ease); white-space: nowrap;
}
.btn:hover { background: var(--surface-2); border-color: #D6D2CE; }
.btn--primary { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.btn--primary:hover { background: #D33C15; border-color: #D33C15; }
.btn--dark { background: var(--mocha); border-color: var(--mocha); color: #fff; }
.btn--dark:hover { background: var(--mocha-deep); }
.btn--ghost { border-color: transparent; background: transparent; }
.btn--ghost:hover { background: var(--line-soft); border-color: transparent; }
.btn--sm { height: 26px; padding: 0 9px; font-size: 11.5px; }
.btn--icon { width: 32px; padding: 0; justify-content: center; }

.btn:disabled, .btn[disabled] {
  background: var(--line-soft); border-color: var(--line); color: var(--ink-30);
  cursor: not-allowed; font-weight: 500;
}
.btn:disabled:hover, .btn[disabled]:hover { background: var(--line-soft); border-color: var(--line); }

.field { display: inline-flex; flex-direction: column; gap: 4px; }
.field__label { font-size: 11.5px; color: var(--ink-50); font-weight: 500; }
.input, .select {
  height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--r-s);
  background: var(--surface); font-size: 12.5px; min-width: 0;
}
.select { padding-right: 26px; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23857E7A' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 9px center; }
.input:focus, .select:focus, textarea:focus { outline: 2px solid rgba(232,72,31,.25); outline-offset: -1px; border-color: var(--brand); }
textarea.input { height: auto; padding: 8px 10px; line-height: 1.55; resize: vertical; }

.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-s); overflow-x: auto; }
.card__head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--line-soft); }
.card__title { font-size: 13px; font-weight: 700; letter-spacing: -.015em; }
.card__hint { font-size: 11.5px; color: var(--ink-50); }
.card__tools { margin-left: auto; display: flex; gap: 6px; align-items: center; }
.card__body { padding: 14px; }
.card__body--flush { padding: 0; }

.grid { display: grid; gap: 14px; }
.g-5 { grid-template-columns: repeat(5, minmax(0,1fr)); }
.g-4 { grid-template-columns: repeat(4, 1fr); }
.g-3 { grid-template-columns: repeat(3, 1fr); }
.g-2 { grid-template-columns: repeat(2, 1fr); }
.g-2-1 { grid-template-columns: 2fr 1fr; }
.g-1-2 { grid-template-columns: 1fr 2fr; }
@media (max-width: 1280px) { .g-4 { grid-template-columns: repeat(2,1fr); } .g-2-1, .g-1-2 { grid-template-columns: 1fr; } }


.kpi { padding: 14px 15px; }
.kpi__label { font-size: 11.5px; color: var(--ink-50); display: flex; align-items: center; gap: 5px; }
.kpi__value { font-size: 26px; font-weight: 750; letter-spacing: -.035em; margin-top: 4px; font-variant-numeric: tabular-nums; }
.kpi__value small { font-size: 14px; font-weight: 600; color: var(--ink-50); margin-left: 2px; }
.kpi__delta { font-size: 11.5px; margin-top: 3px; display: flex; align-items: center; gap: 4px; }
.up { color: #059669; } .down { color: #DC2626; } .flat { color: var(--ink-50); }
.kpi__spark { margin-top: 8px; height: 26px; }


.st { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 7px; border-radius: 20px; font-size: 11px; font-weight: 600; white-space: nowrap; }
.st::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.st--reserved { color: var(--st-reserved-ink); background: var(--st-reserved-bg); box-shadow: inset 0 0 0 1px var(--st-reserved); }
.st--pending  { color: var(--st-pending-ink);  background: var(--st-pending-bg);  box-shadow: inset 0 0 0 1px var(--st-pending); }
.st--done     { color: var(--st-done-ink);     background: var(--st-done-bg);     box-shadow: inset 0 0 0 1px var(--st-done); }
.st--cancel   { color: var(--st-cancel-ink);   background: var(--st-cancel-bg);   box-shadow: inset 0 0 0 1px var(--st-cancel); }
.st--noshow   { color: var(--st-noshow-ink);   background: var(--st-noshow-bg);   box-shadow: inset 0 0 0 1px var(--st-noshow); }
.st--wait     { color: var(--st-wait-ink);     background: var(--st-wait-bg);     box-shadow: inset 0 0 0 1px var(--st-wait); }

.tag { display: inline-flex; align-items: center; min-height: 19px; line-height: 1.25; padding: 1px 7px; border-radius: 4px; font-size: 11px; font-weight: 600; background: var(--line-soft); color: var(--ink-70); }
.tag--new { background: var(--brand-dim); color: var(--brand); }
.tag--vip { background: #FEF3C7; color: #92400E; }
.tag--risk { background: var(--st-noshow-bg); color: var(--st-noshow); }
.tag--web { background: #EEF2FF; color: #4338CA; }
.tag--ai { background: #F5F3FF; color: var(--st-wait); }
.tag--kakao { background: #FEE500; color: #3C1E1E; }


.tbl { font-size: 12.5px; min-width: 540px; }
.tbl th {
  text-align: left; font-size: 11.5px; font-weight: 600; color: var(--ink-50);
  padding: 9px 12px; border-bottom: 1px solid var(--line); background: var(--surface-2);
  position: sticky; top: 0; z-index: 1; white-space: nowrap;
}
.tbl td { padding: 9px 12px; border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
.tbl tbody tr:hover { background: #FBFAF9; }
.tbl tbody tr.is-clickable, .kpi.is-clickable { cursor: pointer; }
.tbl .num { text-align: right; font-variant-numeric: tabular-nums; }
.tbl .nowrap { white-space: nowrap; }
.tbl__wrap { max-height: 520px; overflow: auto; }
.tbl--compact td, .tbl--compact th { padding: 7px 10px; }

.avatar-sm { width: 24px; height: 24px; border-radius: 50%; background: var(--line-soft); color: var(--ink-70); display: inline-grid; place-items: center; font-size: 10.5px; font-weight: 700; }
.who { display: flex; align-items: center; gap: 7px; }
.who__name { font-weight: 600; }
.who__meta { font-size: 11px; color: var(--ink-50); }


.filterbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; padding: 12px 14px; border-bottom: 1px solid var(--line-soft); }
.seg { display: inline-flex; border: 1px solid var(--line); border-radius: var(--r-s); overflow: hidden; }
.seg button { height: 32px; padding: 0 12px; border: 0; background: var(--surface); font-size: 12.5px; color: var(--ink-70); white-space: nowrap; }
.seg button + button { border-left: 1px solid var(--line); }
.seg button.is-on { background: var(--mocha); color: #fff; font-weight: 600; }



.hbar__row { display: grid; grid-template-columns: 104px 1fr 92px; align-items: center; gap: 10px; }
.bar { height: 6px; border-radius: 4px; background: var(--line-soft); overflow: hidden; }
.bar > i { display: block; height: 100%; background: var(--brand); border-radius: 4px; }
.bar--thin { height: 4px; }


.ins { display: flex; gap: 10px; padding: 11px 14px; border-bottom: 1px solid var(--line-soft); align-items: flex-start; }
.ins:last-child { border-bottom: 0; }
.ins__ico { width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center; font-size: 13px; flex: none; }
.ins__body { min-width: 0; flex: 1; }
.ins__t { font-size: 12.5px; font-weight: 600; }
.ins__d { font-size: 11.5px; color: var(--ink-50); margin-top: 1px; }
.ins__act { flex: none; }


.tl { position: relative; padding-left: 58px; }
.tl__row { position: relative; display: flex; gap: 10px; padding: 7px 0; border-top: 1px dashed var(--line); }
.tl__time { position: absolute; left: -58px; width: 50px; text-align: right; font-size: 11.5px; color: var(--ink-50); font-variant-numeric: tabular-nums; padding-top: 8px; }
.tl__card { flex: 1; display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: var(--r-s); background: var(--surface-2); border: 1px solid var(--line-soft); }
.tl__card:hover { border-color: #DCD8D4; }
.tl__prog { font-size: 11.5px; color: var(--ink-50); }
.tl__slot-free { flex: 1; padding: 7px 10px; border-radius: var(--r-s); border: 1px dashed var(--line); color: var(--ink-30); font-size: 11.5px; text-align: center; }


.cal { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; background: var(--surface); }
.cal__head { display: grid; grid-template-columns: 56px repeat(7, 1fr); background: var(--surface-2); border-bottom: 1px solid var(--line); }
.cal__hcell { padding: 8px 6px; text-align: center; font-size: 11.5px; color: var(--ink-50); border-left: 1px solid var(--line-soft); }
.cal__hcell b { display: block; font-size: 14px; color: var(--ink); font-weight: 700; }
.cal__hcell.is-today b { color: var(--brand); }
.cal__body { display: grid; grid-template-columns: 56px repeat(7, 1fr); max-height: 560px; overflow-y: auto; }
.cal__timecol { border-right: 1px solid var(--line); }
.cal__time { height: 54px; font-size: 11px; color: var(--ink-30); text-align: right; padding: 2px 7px 0 0; border-bottom: 1px solid var(--line-soft); }
.cal__col { border-left: 1px solid var(--line-soft); }
.cal__cell { height: 54px; border-bottom: 1px solid var(--line-soft); padding: 2px; display: flex; flex-direction: column; gap: 2px; }
.cal__cell.is-blocked { background: repeating-linear-gradient(135deg, #F7F5F4, #F7F5F4 5px, #EFEDEB 5px, #EFEDEB 10px); }
.ev { position: relative; display: block; width: 100%; appearance: none; text-align: left; font-family: inherit; font-size: 10.5px; line-height: 1.35; padding: 3px 5px; border: 0; border-radius: 4px; border-left: 2.5px solid; overflow: hidden; cursor: pointer; }
.ev b { font-weight: 700; display: block; }
.ev span { color: inherit; opacity: .78; }

.pill { display: inline-block; padding: 1px 7px; border-radius: 999px; font-size: 11.5px; font-weight: 600; line-height: 1.5; vertical-align: middle; }
.pill--blue { background: #DBEAFE; color: #1E40AF; } .pill--gray { background: #E5E7EB; color: #374151; } .pill--red { background: #FEE2E2; color: #991B1B; }

.ev-cat { display: inline-block; width: 3px; height: 1em; border-radius: 1.5px; vertical-align: -0.12em; margin-right: 5px; flex: none; pointer-events: none; }

.ev .ev-cat--bar { position: absolute; left: 2px; top: 0; bottom: 0; width: 3px; height: auto; margin: 0; border-radius: 2px; vertical-align: baseline; }
.ev.has-cat { padding-left: 10px; }
/* cc2: 설정 res_cat_card_bg 를 켜면 색 규칙에 맞는 카드 배경 = 분류 색 옅은 톤(색은 화면이 계산) · 글자는 어두운 색 한 가지로 대비를 지키고 흐리게 하지 않는다 · 상태선·프리미엄 상자·입금대기·동반 표시는 그대로 위에 그려진다 */
.ev.has-catbg, .calg__seat .ev.has-catbg { background: var(--ev-cat-bg); color: #1F2937; }
.ev.has-catbg span, .ev.has-catbg .ev-seat, .calg .ev.has-catbg span, .calg__seat .ev.has-catbg span { opacity: 1; }
.res-cat-chip { padding: 1px 6px; border-radius: 4px; background: var(--ev-cat-bg); color: #1F2937; }
.ev:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.ev--reserved { background: var(--st-reserved-bg); border-color: var(--st-reserved); color: var(--st-reserved-ink); }
.ev--pending  { background: var(--st-pending-bg);  border-color: var(--st-pending);  color: var(--st-pending-ink); }
.ev--done     { background: var(--st-done-bg);     border-color: var(--st-done);     color: var(--st-done-ink); }
.ev--wait     { background: var(--st-wait-bg);     border-color: var(--st-wait);     color: var(--st-wait-ink); }
.ev--cancel   { background: var(--st-cancel-bg);   border-color: var(--st-cancel);   color: var(--st-cancel-ink); text-decoration: line-through; }
.ev--noshow   { background: var(--st-noshow-bg);   border-color: var(--st-noshow);   color: var(--st-noshow-ink); }
.ev.is-selected { outline: 2px solid #1F2937; outline-offset: 1px; box-shadow: 0 0 0 3px rgba(31,41,55,.14); }


.cal__hcell--exceptions { position: sticky; inset-inline-end: 0; z-index: 5; background: #FFF5F7; box-shadow: -1px 0 0 var(--line-soft); }
.calg__cell--exceptions { position: sticky; inset-inline-end: 0; z-index: 2; min-height: 44px; padding: 3px; display: flex; flex-direction: column; gap: 3px; background: #FFF9FA; box-shadow: -1px 0 0 var(--line-soft); }
.calg__exception-count { display: flex; flex-wrap: wrap; gap: 3px 7px; padding: 1px 3px; font-size: 10px; font-weight: 700; line-height: 1.3; }
.calg__exception-count .is-noshow { color: #9D174D; }
.calg__exception-count .is-cancel { color: #9F1239; }



.res-interest-card { position: fixed; z-index: 860; width: min(360px, calc(100vw - 16px)); padding: 11px 14px; border: 1px solid #E5E7EB; border-radius: 5px; background: #fff; color: #4B5563; box-shadow: 0 4px 14px rgba(15,23,42,.14); font-size: 15px; line-height: 1.55; }
.res-interest-card[hidden] { display: none; }

.res-interest-card { pointer-events: none; overflow: hidden; }
.res-interest-card__more { margin-top: 4px; font-size: 11px; color: #857E7A; }
.res-interest-card__name { font-size: 16px; color: #111827; margin-bottom: 2px; overflow-wrap: anywhere; }
.res-interest-card__name span { color: #4B5563; font-size: 15px; }
.res-interest-card__label { margin-top: 7px; color: #374151; font-weight: 650; }

.res-interest-card__vc { display: flex; flex-wrap: wrap; gap: 2px 8px; }
.res-interest-card__vc span { overflow-wrap: anywhere; min-width: 0; }   
.res-pur a { color: #2563EB; text-decoration: underline; }
.res-interest-card__text { white-space: pre-wrap; overflow-wrap: anywhere; }



.res-quick-card { position: fixed; z-index: 865; display: flex; flex-direction: column; width: min(940px, calc(100vw - 32px)); max-height: calc(100vh - 32px); overflow: hidden; border: 1px solid #DDE2E8; border-radius: 10px; background: #fff; box-shadow: 0 12px 32px rgba(15,23,42,.22); color: #374151; font-size: 15.5px; line-height: 1.55; }
.res-quick-card[hidden] { display: none; }
.res-quick-card__head { position: relative; flex: 0 0 auto; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); padding-right: 40px; border-bottom: 1px solid #E5E7EB; }
.res-quick-card__head > div { min-width: 0; padding: 12px 16px; }
.res-quick-card__head > div + div { border-left: 1px solid #E5E7EB; }
.res-quick-card__head strong,.res-quick-card__head span { display: block; overflow-wrap: anywhere; }
.res-quick-card__head strong { color: #2563EB; font-size: 18px; line-height: 1.35; }
.res-quick-card .rq-head__when strong { color: #111827; }
.res-quick-card__head span { margin-top: 3px; color: #6B7280; font-size: 14.5px; line-height: 1.45; }
.res-quick-card .rq-st { color: #111827; font-weight: 700; }
.res-quick-card .rq-st--pending { color: var(--st-pending-ink, #92400E); } .res-quick-card .rq-st--done { color: var(--st-done-ink, #065F46); } .res-quick-card .rq-st--cancel,.res-quick-card .rq-st--noshow { color: #9F2D20; }
.res-quick-card__close { position: absolute; top: 6px; right: 6px; width: 32px; height: 32px; font-size: 16px; border: 0; border-radius: 6px; background: transparent; color: #9CA3AF; cursor: pointer; }
.res-quick-card__close:hover { background: #F3F4F6; color: #111827; }
.res-quick-card .rq-warn { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 8px 16px; background: #FDECEA; color: #9F2D20; border-bottom: 1px solid #F5C6C0; font-size: 15px; line-height: 1.5; overflow-wrap: anywhere; }
.res-quick-card .rq-warn__item b { font-weight: 800; }
.res-quick-card .rq-warn__item--vip { color: #fff; background: #E8481F; border-radius: 6px; padding: 1px 8px; font-weight: 800; }
.res-quick-card__actions { flex: 0 0 auto; display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px 6px; }
.res-quick-card__actions button,.res-quick-card__actions a { display: inline-flex; align-items: center; min-height: 36px; padding: 6px 12px; border: 1px solid #D1D5DB; border-radius: 8px; background: #fff; color: #1F2937; font: inherit; font-weight: 600; line-height: 1.3; text-align: left; text-decoration: none; cursor: pointer; }
.res-quick-card__actions button:hover,.res-quick-card__actions a:hover { background: #F3F4F6; color: #111827; }
.res-quick-card__actions .rq-actions__accent { border-color: #E8481F; color: #E8481F; font-weight: 700; }
.res-quick-card__states { flex: 0 0 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; padding: 4px 16px 10px; border-bottom: 1px solid #E5E7EB; }
.res-quick-card .rq-states__lab,.res-quick-card .rq-danger__lab { font-size: 13.5px; font-weight: 700; color: #6B7280; margin-right: 2px; }
.res-quick-card .rq-states__sep { width: 1px; height: 20px; background: #E5E7EB; margin: 0 6px; }
.res-quick-card .rq-states__info { font-size: 14.5px; color: #4B5563; }
.res-state { min-height: 32px; padding: 3px 10px; border: 1px solid #E5E7EB; border-radius: 999px; background: #fff; color: #4B5563; font: inherit; font-size: 14.5px; text-align: left; cursor: pointer; }
.res-state:hover:not(:disabled) { background: #F3F4F6; color: #111827; }
.res-quick-card .rq-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; }
.res-quick-card .rq-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 22px; padding: 12px 16px 4px; }
.res-quick-card .rq-col { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.res-quick-card .rq-sec { min-width: 0; }
.res-quick-card .rq-h { display: block; margin: 0 0 4px; font-size: 16px; font-weight: 700; color: #374151; }
.res-quick-card .rq-sec p,.res-quick-card__memo p { max-height: none; margin: 0 0 6px; overflow: visible; white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.6; }
.res-quick-card .rq-empty { color: #9CA3AF; font-size: 14.5px; }
.res-quick-card .rq-left { margin: 0 0 4px; font-size: 15.5px; } .res-quick-card .rq-left b { font-size: 18px; color: #111827; }
.res-quick-card .res-pur { margin-top: 2px !important; font-size: 14.5px; line-height: 1.55; }
.res-quick-card .rq-foot { padding: 8px 16px 12px; border-top: 1px solid #F0F0F0; }
.res-quick-card .rq-hist { margin-top: 4px; } .res-quick-card .rq-hist summary { cursor: pointer; color: #6B5B4E; font-weight: 700; font-size: 14.5px; }
.res-quick-card .rq-hist[open] summary { margin-bottom: 4px; }
.res-quick-card #res-hist { max-height: none; overflow: visible; }
.res-quick-card__bottom { flex: 0 0 auto; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px 8px; padding: 8px 16px; border-top: 1px solid #F5C6C0; background: #FFF7F5; }
.res-quick-card__bottom .res-state,.res-quick-card .rq-danger__btn { min-height: 32px; padding: 3px 10px; border: 1px solid #F0B9B1; border-radius: 8px; background: #fff; color: #9F2D20; font: inherit; font-size: 14.5px; font-weight: 600; cursor: pointer; }
.res-quick-card .rq-danger__btn:hover:not(:disabled),.res-quick-card__bottom .res-state:hover:not(:disabled) { background: #FDECEA; }
.res-quick-card .rq-danger__btn:disabled { opacity: .5; cursor: default; }
.res-state { display: flex; align-items: center; gap: 8px; }

.res-state i { width: 13px; height: 13px; border-radius: 2px; background: var(--st-cancel-bg); box-shadow: inset 0 0 0 1px var(--st-cancel); flex: 0 0 auto; }
.res-state--reserved i { background: var(--st-reserved-bg); box-shadow: inset 0 0 0 1px var(--st-reserved); }.res-state--pending i { background: var(--st-pending-bg); box-shadow: inset 0 0 0 1px var(--st-pending); }
.res-state--done i { background: var(--st-done-bg); box-shadow: inset 0 0 0 1px var(--st-done); }.res-state--noshow i { background: var(--st-noshow-bg); box-shadow: inset 0 0 0 1px var(--st-noshow); }
.res-state--cancel i { background: var(--st-cancel-bg); box-shadow: inset 0 0 0 1px var(--st-cancel); }.res-state--wait i { background: var(--st-wait-bg); box-shadow: inset 0 0 0 1px var(--st-wait); }.res-state--couple i { background: var(--mk-couple); box-shadow: none; }

.st-btn { border-width: 1px; }
.st-btn--reserved { background: var(--st-reserved-bg); border-color: var(--st-reserved); color: var(--st-reserved-ink); } .st-btn--pending { background: var(--st-pending-bg); border-color: var(--st-pending); color: var(--st-pending-ink); }
.st-btn--done { background: var(--st-done-bg); border-color: var(--st-done); color: var(--st-done-ink); } .st-btn--noshow { background: var(--st-noshow-bg); border-color: var(--st-noshow); color: var(--st-noshow-ink); }
.st-btn--cancel { background: var(--st-cancel-bg); border-color: var(--st-cancel); color: var(--st-cancel-ink); text-decoration: line-through; } .st-btn--wait { background: var(--st-wait-bg); border-color: var(--st-wait); color: var(--st-wait-ink); }

.legend i.lg--reserved { background: var(--st-reserved-bg); border: 1px solid var(--st-reserved); } .legend i.lg--pending { background: var(--st-pending-bg); border: 1px solid var(--st-pending); }
.legend i.lg--done { background: var(--st-done-bg); border: 1px solid var(--st-done); } .legend i.lg--cancel { background: var(--st-cancel-bg); border: 1px solid var(--st-cancel); }
.legend i.lg--noshow { background: var(--st-noshow-bg); border: 1px solid var(--st-noshow); } .legend i.lg--wait { background: var(--st-wait-bg); border: 1px solid var(--st-wait); }
.legend i.lg--zone-new { background: var(--zone-new-bg); border: 1px solid var(--zone-new); } .legend i.lg--zone-old { background: var(--zone-old-bg); border: 1px solid var(--zone-old); }
.legend i.lg--sale { background: var(--mk-sale); border-radius: 1px; } .legend i.lg--couple { background: var(--mk-couple); border-radius: 1px; }
.res-state.is-current { background: #F3F4F6; color: #111827; font-weight: 700; }
.res-state:disabled { cursor: default; opacity: 1; }
.res-quick-card__memo .is-warning { color: #B42318; }
.res-quick-card .small { font-size: 14px; }
@media (max-width: 760px) { .res-quick-card .rq-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .res-quick-card { width: calc(100vw - 16px); max-height: calc(100vh - 16px); } .res-quick-card__head { grid-template-columns: minmax(0, 1fr); } .res-quick-card__head > div + div { border-left: 0; border-top: 1px solid #E5E7EB; } .res-quick-card__bottom { justify-content: flex-start; } }

.res-profile-strip { display: grid; gap: 7px; margin-top: 12px; padding: 10px 11px; border: 1px solid var(--line-soft); border-radius: 9px; background: #F8F7F5; }
.res-profile-strip__flags { display: flex; flex-wrap: wrap; gap: 5px; }
.res-profile-strip__warning { padding: 7px 8px; border-radius: 7px; background: #FFF3F0; color: #9F2D20; font-size: 15px; }
.res-profile-strip__warning b { margin-right: 5px; }


.mhead { display: grid; grid-template-columns: repeat(7, 1fr); background: var(--surface-2); border: 1px solid var(--line); border-bottom: 0; border-radius: var(--r) var(--r) 0 0; }
.mhead > div { padding: 8px; text-align: center; font-size: 11.5px; color: var(--ink-50); font-weight: 600; }
.mhead .sun { color: #C7362A; }
.mgrid { display: grid; grid-template-columns: repeat(7, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); border-radius: 0 0 var(--r) var(--r); overflow: hidden; }
.mcell { min-height: 84px; border-right: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); padding: 6px 8px; background: var(--surface); }
.mcell--empty { background: var(--surface-2); }
.mcell__d { font-size: 12.5px; font-weight: 700; color: var(--ink-70); }
.mcell.sun .mcell__d { color: #C7362A; }
.mcell.is-today { background: var(--brand-dim); }
.mcell.is-today .mcell__d { color: var(--brand); }
.mcell__c { font-size: 11px; color: var(--st-reserved); font-weight: 600; margin-top: 6px; }
.mcell__c.muted { color: var(--ink-30); font-weight: 400; }


.chart-h { height: 200px; }
.chart-h-s { height: 150px; }
.legend { display: flex; flex-wrap: wrap; gap: 10px; font-size: 11.5px; color: var(--ink-70); }
.legend i { width: 9px; height: 9px; border-radius: 2px; display: inline-block; margin-right: 5px; vertical-align: -1px; }


.funnel { display: flex; flex-direction: column; gap: 8px; }
.funnel__row { display: grid; grid-template-columns: 96px 1fr 108px; align-items: center; gap: 10px; }
.funnel__label { font-size: 12px; color: var(--ink-70); font-weight: 500; }
.funnel__bar { height: 30px; border-radius: 5px; background: var(--line-soft); position: relative; overflow: hidden; }
.funnel__bar > i { position: absolute; inset: 0 auto 0 0; border-radius: 5px; background: linear-gradient(90deg, var(--brand), #F4794F); }
.funnel__bar em { position: absolute; left: 9px; top: 50%; transform: translateY(-50%); font-style: normal; font-size: 12px; font-weight: 700; color: #fff; }
.funnel__rate { font-size: 11.5px; color: var(--ink-50); text-align: right; font-variant-numeric: tabular-nums; }


.chat { display: grid; grid-template-columns: 260px 1fr 280px; height: calc(100vh - var(--banner-h) - var(--top-h) - 36px); }
.chat__list { border-right: 1px solid var(--line); overflow-y: auto; }
.chat__item { padding: 11px 13px; border-bottom: 1px solid var(--line-soft); cursor: pointer; }
.chat__item:hover { background: var(--surface-2); }
.chat__item.is-on { background: var(--brand-dim); box-shadow: inset 3px 0 0 var(--brand); }
.chat__name { font-size: 12.5px; font-weight: 600; display: flex; align-items: center; gap: 6px; }
.chat__time { margin-left: auto; font-size: 10.5px; color: var(--ink-30); font-weight: 400; }
.chat__prev { font-size: 11.5px; color: var(--ink-50); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat__pane { display: flex; flex-direction: column; min-width: 0; }
.chat__log { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px; background: var(--surface-2); }
.msg { max-width: 74%; align-self: flex-start; }
.msg__b { padding: 9px 12px; border-radius: 12px; font-size: 12.5px; line-height: 1.6; }
.msg__m { font-size: 10.5px; color: var(--ink-30); margin-top: 3px; }
.msg--in .msg__b { background: var(--surface); border: 1px solid var(--line); border-top-left-radius: 3px; }
.msg--out { align-self: flex-end; }
.msg--out .msg__b { background: var(--mocha); color: #F5F1EE; border-top-right-radius: 3px; }
.msg--ai .msg__b { background: #F5F3FF; border: 1px solid #DDD6FE; color: #4C1D95; border-top-right-radius: 3px; }
.msg--out .msg__m, .msg--ai .msg__m { text-align: right; }
.msg__card { margin-top: 7px; background: var(--surface); border: 1px solid var(--line); border-radius: 9px; padding: 10px 11px; font-size: 12px; }
.chat__input { border-top: 1px solid var(--line); padding: 10px 12px; display: flex; gap: 8px; background: var(--surface); }
.chat__side { border-left: 1px solid var(--line); overflow-y: auto; background: var(--surface); }


.profile { display: grid; grid-template-columns: 1.4fr 1fr; gap: 14px; }
@media (max-width: 1180px) { .profile { grid-template-columns: 1fr; } }
.dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; font-size: 12.5px; }
.dl dt { color: var(--ink-50); }
.dl dd { margin: 0; font-weight: 500; }
.wallet { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.wallet__cell { padding: 10px 12px; border-radius: var(--r-s); background: var(--surface-2); border: 1px solid var(--line-soft); }
.wallet__k { font-size: 11px; color: var(--ink-50); }
.wallet__v { font-size: 17px; font-weight: 750; letter-spacing: -.03em; font-variant-numeric: tabular-nums; margin-top: 1px; }
.wallet__v small { font-size: 12px; font-weight: 600; color: var(--ink-50); }

.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line); padding: 0 8px; }
.tabs button { height: 38px; padding: 0 13px; border: 0; background: transparent; font-size: 12.5px; color: var(--ink-50); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.tabs button.is-on { color: var(--brand); border-bottom-color: var(--brand); font-weight: 700; }

.note { background: #FFFDF7; border: 1px solid #F2E7CE; border-radius: var(--r-s); padding: 10px 12px; font-size: 12.5px; line-height: 1.7; white-space: pre-wrap; }
.note--warn { background: var(--st-noshow-bg); border-color: #FBD5D5; }


.modal-bg { position: fixed; inset: 0; background: rgba(28,26,25,.42); z-index: 300; display: grid; place-items: center; padding: 20px; }
.modal { background: var(--surface); border-radius: 12px; box-shadow: var(--shadow-l); width: min(560px, 100%); max-height: 88vh; display: flex; flex-direction: column; }
.modal--wide { width: min(880px, 100%); }

.modal--wide.ct-modal { width: min(1320px, 100%); }
.ct-layout { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 14px; align-items: start; }
.ct-col { min-width: 0; }
.ct-blocks { max-height: 62vh; overflow: auto; padding-right: 4px; }
.ct-block { border: 1px solid var(--line, #E5E2DF); border-radius: 10px; padding: 8px 10px; margin-bottom: 8px; background: #fff; }
.ct-block.is-on { border-color: var(--brand, #E8481F); box-shadow: 0 0 0 2px rgba(232, 72, 31, .12); }
.ct-block__h { display: flex; gap: 6px; align-items: center; font-size: 12px; color: #857E7A; margin-bottom: 6px; }
.ct-block__h .ct-type { font-weight: 700; color: #2A2523; }
.ct-block__h .spacer { flex: 1; }
.ct-block textarea.input { min-height: 56px; line-height: 1.55; font-size: 13px; }
.ct-block textarea.input.ct-one { min-height: 38px; }
.ct-tools { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.ct-preview { border: 1px solid var(--line, #E5E2DF); border-radius: 10px; padding: 16px 18px; background: #fff; max-height: 62vh; overflow: auto; font-size: 13px; line-height: 1.75; color: #333; }
.ct-preview.is-mobile { width: 375px; max-width: 100%; margin: 0 auto; padding: 12px 14px; font-size: 14px; }
.ct-preview .cs-h, .nx-consent-doc .cs-h { margin: 14px 0 6px; font-size: 14px; font-weight: 700; color: #111; border-left: 3px solid var(--brand, #c2568a); padding-left: 8px; }
.ct-preview .cs-h:first-child { margin-top: 0; }
.ct-preview .cs-p, .nx-consent-doc .cs-p { margin: 4px 0; }
.ct-preview .cs-list, .nx-consent-doc .cs-list { margin: 4px 0 4px 18px; padding: 0; }
.ct-row { display: flex; gap: 6px; align-items: center; margin: 3px 0; flex-wrap: wrap; }
.ct-row .input { height: 30px; font-size: 12px; }
.ct-note { font-size: 12px; color: #7C5E48; background: #FBF7F4; border: 1px solid #EFE2D8; border-radius: 8px; padding: 6px 10px; margin: 6px 0; }
.ct-err { color: #B91C1C; font-size: 12px; min-height: 16px; }
@media (max-width: 1023px) { .ct-layout { grid-template-columns: 1fr; } .ct-blocks, .ct-preview { max-height: none; } }
@media print { .ct-layout .ct-col:first-child, .modal__head, .modal__foot { display: none !important; } .ct-preview { max-height: none; overflow: visible; border: 0; } }

.re-modal .re-body { padding: 14px 16px; }
.re-layout { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(300px, .9fr); gap: 12px 18px; align-items: start; }
.re-col { min-width: 0; }
.re-col--info .form-grid { gap: 10px 12px; }
.re-col--info textarea.input { width: 100%; box-sizing: border-box; resize: vertical; }
@media (max-width: 1023px) { .re-layout { grid-template-columns: minmax(0, 1fr); } .re-col--pick { order: 2; } .re-col--info { order: 1; } }

.res-interest-card__memo { max-height: 160px; overflow-y: auto; }

.modal--res { width: min(600px, 100%); }
.modal--res .form-grid { gap: 10px 12px; }
.modal--res .seg button { padding: 0 9px; font-size: 12px; }
.modal--res .modal__body { padding: 14px 16px; }
.modal--res .note { font-size: 12px; line-height: 1.6; }

.modal__dirty { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 10px 16px; background: #FFF7ED; border-top: 1px solid #FED7AA; font-size: 12.5px; }
.modal__dirty span { flex: 1; min-width: 160px; }
.modal__dirty.is-again { animation: nx-dirty-shake .35s; }
@keyframes nx-dirty-shake { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }


.ev-seat { display: block; font-style: normal; font-size: .92em; font-weight: 600; line-height: 1.3; padding: 0; border-radius: 0; background: none; opacity: .88; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.modal__head { display: flex; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--line); }
.modal__title { font-size: 14.5px; font-weight: 700; }
.modal__body { padding: 16px; overflow-y: auto; }
.modal__foot { padding: 12px 16px; border-top: 1px solid var(--line); display: flex; gap: 8px; justify-content: flex-end; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form-grid--wide { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.form-grid .full { grid-column: 1 / -1; }
.form-row { display: flex; flex-direction: column; gap: 5px; }
.form-row > label { font-size: 11.5px; color: var(--ink-50); font-weight: 500; }
.slotgrid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.slot { height: 32px; border: 1px solid var(--line); border-radius: var(--r-s); background: var(--surface); font-size: 12px; }

.modal--resv { font-size: 16px; }
.modal--resv .modal__title { font-size: 19px; }
.modal--resv .field__label, .modal--resv label { font-size: 14.5px; }
.modal--resv .input, .modal--resv .select { height: 40px; font-size: 16px; }
.modal--resv textarea.input { height: auto; font-size: 16px; line-height: 1.6; }
.modal--resv .btn { height: 40px; font-size: 16px; }
.modal--resv .btn--sm { height: 34px; font-size: 14.5px; }
.modal--resv .btn--icon { width: 40px; }
.modal--resv .slot { height: 42px; font-size: 16px; }
.modal--resv .small { font-size: 14px; }
.modal--resv .tag { font-size: 13.5px; min-height: 22px; }
.modal--resv .tbl { font-size: 15.5px; }
.modal--resv .note { font-size: 15px; }
.modal--resv .rm-row b { font-size: 17px; }
.modal--resv .legend { font-size: 15px; }
.modal--resv .seg button { height: 40px; font-size: 15.5px; padding: 0 14px; }   
.slot:hover:not(:disabled) { border-color: var(--brand); color: var(--brand); }
.slot.is-on { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.slot:disabled { background: var(--line-soft); color: var(--ink-30); cursor: not-allowed; text-decoration: line-through; }


.muted { color: var(--ink-50); }
.small { font-size: 11.5px; }
.strong { font-weight: 700; }
.right { text-align: right; }
.row { display: flex; align-items: center; gap: 8px; }
.row--wrap { flex-wrap: wrap; }
.spacer { flex: 1; }
.mt-8 { margin-top: 8px; } .mt-14 { margin-top: 14px; } .mb-8 { margin-bottom: 8px; }
.divider { height: 1px; background: var(--line-soft); margin: 12px 0; }
.empty { padding: 36px 16px; text-align: center; color: var(--ink-30); font-size: 12.5px; }
.money::after { content: "원"; font-size: .82em; color: var(--ink-50); margin-left: 1px; }


.filterbar--cust { gap: 10px 12px; align-items: flex-end; }
.filterbar--cust .field__label { font-weight: 600; color: var(--ink-70); white-space: nowrap; }
.filterbar--cust .field__label .fb-unit { color: var(--ink-30); font-weight: 500; }
.filterbar--cust .rangebox { display: inline-flex; align-items: center; gap: 6px; }
.filterbar--cust .rangebox .input { width: 76px; text-align: center; }
.filterbar--cust .rangebox .input--wide { width: 98px; }
.filterbar--cust .rangebox .tilde { color: var(--ink-30); font-size: 12px; user-select: none; }
.filterbar--cust .fb-sep { align-self: stretch; width: 1px; background: var(--line); margin: 4px 2px; }
.filterbar--cust .field--search { position: relative; }
.filterbar--cust .field--search .input { padding-left: 32px; width: 220px; }
.filterbar--cust .field--search .fb-searchic {
  position: absolute; left: 11px; bottom: 0; height: 32px;
  display: inline-flex; align-items: center; color: var(--ink-30); pointer-events: none;
}
.filterbar--cust .fb-reset { color: var(--ink-50); }
.filterbar--cust .fb-reset:hover { color: var(--brand); }
@media (max-width: 900px) {
  .filterbar--cust .fb-sep { display: none; }
  .filterbar--cust .field--search .input { width: 100%; }
}


.rm-rows { display: flex; flex-direction: column; gap: 4px; max-height: 224px; overflow: auto; margin-top: 6px; }
.rm-row { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; width: 100%; text-align: left; padding: 7px 10px;
          border: 1px solid var(--line); border-radius: var(--r-s); background: var(--surface); font-size: 13px; font-family: inherit; cursor: pointer; }
.rm-row:hover { border-color: var(--brand); }
.rm-row b { font-size: 13.5px; }

@media (max-width: 560px) {
  .sl-filter { position: static !important; }
  .sl-filter .filterbar { gap: 6px !important; }
  .sl-filter .filterbar > .seg { flex: 1 1 100%; display: flex; }
  .sl-filter .filterbar > .seg > button { flex: 1 1 0; padding-left: 4px; padding-right: 4px; }
  .sl-filter .sl-dates { flex: 1 1 100%; flex-wrap: wrap; }
  .sl-filter .sl-dates .input { width: auto !important; flex: 1 1 130px; min-width: 0; }
  .sl-filter .sl-dates .btn { flex: 1 1 100%; }
  .sl-filter .filterbar > .select { width: auto !important; flex: 1 1 calc(50% - 6px); min-width: 0; }
  .sl-filter .sl-q { flex: 1 1 100%; }
  .sl-filter .sl-q .input { width: auto !important; flex: 1 1 auto; min-width: 0; }
  .sl-filter .filterbar > .spacer { display: none; }
  .sl-filter .filterbar > .btn { flex: 1 1 auto; }
  #sl-export-msg { flex: 1 1 100%; }
}


.modal--xl { width: min(1180px, 100%); }
.cvp-head { margin-bottom: 10px; line-height: 1.7; display: flex; flex-wrap: wrap; gap: 4px 18px; align-items: center; }
.cvp-bals { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.cvp-top { display: grid; grid-template-columns: 180px 1fr; gap: 10px 14px; align-items: start; margin-top: 6px; }
.cvp-res { display: flex; gap: 8px; align-items: flex-start; padding: 6px 8px; border: 1px solid var(--line); border-radius: 8px; margin-bottom: 4px; cursor: pointer; }
.cvp-res input { margin-top: 3px; } .cvp-res.is-on { border-color: var(--brand); background: #FFF7F3; } .cvp-res.is-off { opacity: .6; cursor: not-allowed; } .cvp-res--walk { border-style: dashed; }
.cvp { display: grid; grid-template-columns: 170px minmax(0, 1fr) 300px; grid-template-rows: auto minmax(220px, 46vh); gap: 10px 12px; margin-top: 12px; }
.cvp-bar { grid-column: 1 / -1; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.cvp-tabs { display: flex; gap: 4px; } .cvp-tab { height: 36px; padding: 0 14px; border: 1px solid var(--line); background: var(--surface); border-radius: 8px; font: inherit; font-weight: 600; cursor: pointer; }
.cvp-tab.is-on { background: var(--ink, #1C1A19); color: #fff; border-color: var(--ink, #1C1A19); } .cvp-tab b { margin-left: 2px; }
.cvp-q { width: 220px !important; height: 36px; }
.cvp-cats { display: flex; flex-direction: column; gap: 4px; overflow: auto; }
.cvp-cat { text-align: left; min-height: 36px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); font: inherit; cursor: pointer; line-height: 1.3; }
.cvp-cat.is-on { background: #FFF7F3; border-color: var(--brand); font-weight: 700; }
.cvp-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; align-content: start; overflow: auto; padding-right: 4px; }
.cvp-card { display: flex; flex-direction: column; gap: 6px; text-align: left; min-height: 74px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); font: inherit; cursor: pointer; }
.cvp-card.is-on { border-color: var(--brand); background: #FFF7F3; box-shadow: inset 0 0 0 1px var(--brand); }
.cvp-card--opt { cursor: default; }
.cvp-card__name { font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; } .cvp-card__memo { font-size: 12px; color: var(--muted); line-height: 1.4; overflow-wrap: anywhere; }
.cvp-card__foot { display: flex; justify-content: space-between; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: auto; }
.cvp-card__price { font-weight: 700; } .cvp-card__pol { font-size: 11.5px; color: #15803D; } .cvp-card__pol.is-alt { color: #B45309; }
.cvp-qty { display: inline-flex; align-items: center; gap: 2px; } .cvp-qty button { width: 30px; height: 30px; border: 1px solid var(--line); background: var(--surface); border-radius: 6px; font: inherit; font-size: 16px; cursor: pointer; }
.cvp-qty b { min-width: 24px; text-align: center; } .cvp-qty .cvp-x { color: #B91C1C; margin-left: 4px; }
.cvp-sel { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; overflow: auto; background: #FAFAF9; }
.cvp-sel__title { font-weight: 700; margin-bottom: 6px; } .cvp-sel__row { display: flex; justify-content: space-between; gap: 8px; align-items: center; padding: 6px 0; border-bottom: 1px dashed var(--line); }
.cvp-sel__sum { text-align: right; padding-top: 6px; } .cvp-count { display: flex; flex-direction: column; gap: 2px; font-size: 12px; } .cvp-count .input { width: 72px; height: 34px; }
.cvp-pay { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; margin-top: 12px; }
.cvp-point { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: flex-end; margin-bottom: 8px; } .cvp-point label { display: flex; flex-direction: column; gap: 2px; font-size: 12px; } .cvp-point .input { width: 140px; height: 36px; }
.cvp-methods { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 6px 10px; margin-top: 6px; } .cvp-methods label { display: flex; flex-direction: column; gap: 2px; font-size: 12px; }
.cvp-methods .input, .cvp-methods .select { height: 34px; }
.cvp-foot { gap: 8px; margin-top: 8px; position: sticky; bottom: 0; background: var(--surface); padding: 8px 0 2px; }
@media (max-width: 1024px) { .cvp { grid-template-columns: 150px minmax(0, 1fr); grid-template-rows: auto; } .cvp-cards { max-height: 40vh; } .cvp-sel { grid-column: 1 / -1; max-height: 40vh; } }
@media (max-width: 760px) {
  .cvp-top { grid-template-columns: 1fr; }
  .cvp { grid-template-columns: 1fr; grid-template-rows: auto; } .cvp-cards { max-height: 38vh; }
  .cvp-cats { flex-direction: row; flex-wrap: wrap; } .cvp-cat { min-height: 32px; padding: 4px 10px; }
  .cvp-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } .cvp-q { width: 100% !important; }
  .cvp-point .input { width: 110px; } .cvp-methods { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 420px) { .cvp-cards { grid-template-columns: 1fr; } }

.btn[hidden]{display:none}


.ev-opt { display: inline-block; margin-left: 3px; padding: 0 4px; border-radius: 6px; background: #EEF2FF; color: #3730A3; font-size: 10px; font-style: normal; font-weight: 700; vertical-align: 1px; }
.res-opt-tag { font-style: normal; color: #3730A3; }
.re-pick__sum { padding: 8px 10px; background: #FFF7F3; border: 1px solid var(--line); border-radius: 8px; line-height: 1.6; }
.re-pick__tabs { margin-top: 8px; }
.re-pick__grid { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 8px; }
.re-pick__cats { display: flex; flex-direction: column; gap: 4px; max-height: 34vh; overflow: auto; }
.re-pick__cards { max-height: 34vh; overflow: auto; }
.re-pick__chosen { margin: 4px 0 8px; }
.re-pick__none .cvp-card__memo { color: var(--muted); }
@media (max-width: 720px) { .re-pick__grid { grid-template-columns: 1fr; } .re-pick__cats { flex-direction: row; flex-wrap: wrap; max-height: none; } }



.nav__home { display: block; padding: 0; margin: 0; border: 0; background: none; cursor: pointer; border-radius: 6px; text-align: left; }
.nav__home:focus-visible { outline: 2px solid var(--brand); outline-offset: 4px; }
.nav__home:hover .nav__wordmark { opacity: .85; }
.nav__wordmark { display: block; width: 150px; height: auto; max-width: 100%; }

.nav__up { margin-left: auto; border: 0; background: none; color: #A79E98; font-size: 10px; cursor: pointer; padding: 2px 4px; line-height: 1; }
.nav__up:hover, .nav__up:focus-visible { color: #fff; }
.nav__up + .nav__star { margin-left: 0; }
.nav__fav-import { margin: 4px 12px 8px; padding: 8px; border: 1px dashed rgba(255,255,255,.25); border-radius: 8px; color: #E7E0DA; line-height: 1.5; }
.nav__fav-import-row { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }

.mhead .sat, .mcell.sat .mcell__d { color: #2563EB; }
.mc__wk span.is-sat, .mc__d.is-sat { color: #2563EB; }

.resv-low__tbl { font-size: 14px; width: 100%; min-width: 0 !important; table-layout: fixed; }   
.resv-low__tbl td, .resv-low__tbl th { padding: 5px 4px; vertical-align: top; overflow-wrap: anywhere; }
.resv-low__tbl td:last-child { white-space: nowrap; }
.resv-low__anom { margin-top: 8px; }
.resv-low__anom summary { cursor: pointer; color: #B45309; }

.modal--cv2 { width: min(1440px, 100%); }
.cv2-res { padding: 8px 12px; border: 1px solid var(--line); border-radius: 10px; background: #FAFAF9; margin: 6px 0 10px; display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; font-size: 15px; }
.cv2-res.is-bad { border-color: #FCA5A5; background: #FEF2F2; }
.cv2-bar { display: flex; gap: 8px 12px; align-items: center; flex-wrap: wrap; margin: 8px 0; }
.cv2-q { width: 260px !important; height: 38px; font-size: 15px; }
.cv2-cats { display: flex; flex-wrap: wrap; gap: 6px; }
.cv2-cat { min-height: 32px; padding: 4px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); font: inherit; font-size: 14px; cursor: pointer; }
.cv2-cat.is-on { background: #FFF7F3; border-color: var(--brand); font-weight: 700; }
/* cv2(대표 11/08): 넓은 화면 관리 차감 창 2열 — 왼쪽 프로그램 · 오른쪽 옵션(창 폭 1200px 이상 · JS 가 정함) */
.cv2-cols { display: grid; grid-template-columns: minmax(0, 3fr) minmax(320px, 2fr); gap: 16px; align-items: start; margin-bottom: 12px; }
.cv2-col { min-width: 0; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--card, #fff); }
.cv2-col__t { margin: 0 0 8px; font-size: 14px; font-weight: 700; }
.cv2-col--opt .note { margin: 0 0 8px !important; }
.cv2-col--opt .cv2-list { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
/* sx3 덧: 오른쪽 옵션 기록 카드 — 이름은 카드 폭 전체를 쓰는 맨 윗줄(아주 길면 그 폭에서 줄바꿈) · 아래 줄에 수량·버튼 */
.cv2-col--opt .cv2-optrow .cv2-optname { flex: 1 1 100% !important; min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.cv2-col--opt .cv2-optrow { row-gap: 4px; }
.cv2-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; margin-bottom: 12px; }
.cv2-prog { display: flex; align-items: center; gap: 6px; text-align: left; min-height: 36px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); font: inherit; font-size: 14.5px; line-height: 1.3; cursor: pointer; overflow-wrap: anywhere; }
.cv2-prog:hover { border-color: #D6CFC9; }
.cv2-prog:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.cv2-prog.is-on { border-color: var(--brand); background: #FFF7F3; box-shadow: inset 0 0 0 1px var(--brand); font-weight: 700; }
.cv2-prog__tag { margin-left: auto; flex: none; font-style: normal; font-size: 11px; color: #B45309; border: 1px solid #FCD34D; border-radius: 6px; padding: 0 4px; }
.cv2-memo > label { font-weight: 700; font-size: 15px; }
#cv-memo.cv2-memo__ta { min-height: 180px; font-size: 16px; font-weight: 500; line-height: 1.5; resize: vertical; width: 100%; box-sizing: border-box; }
.cv2-kept { border: 1px dashed var(--line); border-radius: 8px; padding: 8px 10px; margin-top: 8px; font-size: 13px; line-height: 1.6; }
.cv2-sum { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: #FAFAF9; margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: flex-end; }
.cv2-sum__prog { font-size: 15px; align-self: center; } .cv2-sum__prog b { font-size: 16.5px; }
.cv2-prev { flex-basis: 100%; font-size: 13.5px; line-height: 1.6; }
.modal--cv2 .cvp-foot { bottom: -16px; margin: 12px -16px -16px; padding: 10px 16px 14px; border-top: 1px solid var(--line); z-index: 2; }   
@media (max-width: 640px) { .cv2-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .cv2-q { width: 100% !important; } #cv-memo.cv2-memo__ta { min-height: 150px; } }
@media (max-width: 380px) { .cv2-list { grid-template-columns: 1fr; } }

/* Existing reservation roster: wide main column, keyboard-scrollable with sticky headings. */
.res-roster { margin-top:14px; min-width:0; }
.res-roster-scroll { max-height:480px; max-height:min(480px,65vh); overflow:auto; padding-bottom:12px; }
/* rs1(11/05 대표): 시간대별 가로 명단 — 고객 칸은 auto-fill 로 모든 시간대에서 같은 폭·같은 높이 */
.res-roster-slots { display:flex; flex-direction:column; }
.res-roster-slot { display:grid; grid-template-columns:76px minmax(0,1fr); gap:12px; padding:8px 0; border-top:1px solid #e5e7eb; }
.res-roster-slot:first-child { border-top:0; padding-top:0; }
.res-roster-time { display:flex; flex-direction:column; gap:2px; font-variant-numeric:tabular-nums; }
.res-roster-time b { font-size:15px; }
.res-roster-date { font-size:11px; color:#6b7280; }
.res-roster-count { font-size:13px; color:#6b7280; }
.res-roster-people { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(210px,100%),1fr)); grid-auto-rows:1fr; gap:6px; margin:0; padding:0; list-style:none; }
.res-roster-person { display:flex; flex-direction:column; justify-content:center; gap:1px; box-sizing:border-box; min-width:0; min-height:56px; padding:5px 10px; border:1px solid #e5e7eb; border-radius:6px; background:#fff; }
.res-roster-who { display:flex; align-items:center; gap:5px; min-width:0; }
.res-roster-mark { flex:none; }
.res-roster-bal { font-size:13px; overflow-wrap:anywhere; }
.res-roster-prog { font-size:12px; color:#6b7280; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.res-roster-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:0; background:none; padding:2px 0; color:inherit; font:inherit; font-size:15px; font-weight:600; text-align:left; cursor:pointer; }
.res-roster-name:hover { text-decoration:underline; }
.res-roster-name:focus-visible,.res-roster-scroll:focus-visible { outline:2px solid #2563eb; outline-offset:2px; }
.res-roster-low { color:#b91c1c; font-weight:700; }
.res-roster-summary { margin:0; }
.res-roster-summary > div { display:flex; justify-content:space-between; gap:12px; padding:8px 0; }
.res-roster-summary dd { margin:0; font-weight:700; white-space:nowrap; }
@media(max-width:640px) { .res-roster-slot { grid-template-columns:minmax(0,1fr); gap:6px; } .res-roster-time { flex-direction:row; align-items:baseline; gap:8px; } }
/* sw1(11/05 대표): DB 관리 PC 목록 출처 칸 — 모든 행 같은 폭·2줄 높이 · 넘치면 말줄임(전체는 title). 카드 화면(모바일)은 안쪽 줄이 없는 것처럼 그대로 */
.lsrc-txt { display: contents; }
@media (min-width: 901px) {
  .tbl--cards .c-lsrc { width: 165px; min-width: 165px; max-width: 165px; }
  .tbl--cards .lsrc-cell { display: flex; align-items: center; box-sizing: border-box; width: 100%; height: calc(2.5em + 4px); min-height: 0; padding: 1px 7px; overflow: hidden; }
  .tbl--cards .lsrc-txt { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; min-width: 0; overflow-wrap: anywhere; }
  .tbl--cards .lsrc-txt .lead-source-link { display: inline !important; max-width: none !important; }
}
@media (min-width: 1500px) { .tbl--cards .c-lsrc { width: 200px; min-width: 200px; max-width: 200px; } }
/* sx3(메디스킨 4e2a7fb·cf18bff): 짧은 이름표일 때 출처 칸 폭 — 이름표(최대 6자 + …) 한 줄 · 수원 목록은 감싸개가 없어 .tbl--cards 기준 */
.tbl--cards .c-lsrc.lsrc-s { width: 92px; min-width: 92px; max-width: 92px; }
.tbl--cards .c-lsrc.lsrc-s .lsrc-cell { height: auto; }
.tbl--cards .c-lsrc.lsrc-s .lsrc-txt { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: unset; }
/* ux1(11/06 대표): 예약 등록 창 — 등록 고객 안내 */
.rm-dup { margin-top:6px; padding:10px 12px; border:1px solid #F3C2BD; border-radius:8px; background:#FEF2F2; font-size:13px; }
.rm-dup .rm-rows { margin-top:8px; }
.rm-foot { flex-wrap:wrap; align-items:center; }
.rm-foot .nx-login__err { flex:1 1 180px; min-width:0; min-height:0; font-size:13px; font-weight:600; }
.rm-need { outline:2px solid #DC2626; outline-offset:3px; border-radius:8px; }
