/* ══════════════════════════════════════════════════════
   HILLMARU GOLF CLUB  ·  ADMIN PAGE  ·  admin.css
   ══════════════════════════════════════════════════════ */

:root {
  --green-deep   : #060020;
  --green-mid    : #0d0a4a;
  --green-light  : #d0d0ee;
  --gold         : #c9a96a;
  --gold-light   : #fdf8f0;
  --beige        : #f8f5ef;
  --beige-dark   : #ede8df;
  --white        : #ffffff;
  --bg           : #f4f6f8;
  --text-dark    : #1a1a1a;
  --text-mid     : #4a4a4a;
  --text-muted   : #8a8a8a;
  --border       : #e4e8ec;

  --status-wait    : #e67e22;
  --status-wait-bg : #fef5ec;
  --status-review  : #8e44ad;
  --status-review-bg: #f5eefb;
  --status-confirm : #1a7a4a;
  --status-confirm-bg: #e8f6ee;
  --status-cancel  : #c0392b;
  --status-cancel-bg : #fdf0ef;

  --sans   : 'Inter', 'Noto Sans KR', sans-serif;
  --kr     : 'Noto Sans KR', sans-serif;
  --serif  : 'Cormorant Garamond', Georgia, serif;

  --sidebar-w : 240px;
  --topbar-h  : 60px;
  --ease      : cubic-bezier(.25,.8,.25,1);
  --t         : .28s;
  --radius    : 8px;
  --shadow    : 0 2px 16px rgba(0,0,0,.07);
  --shadow-lg : 0 8px 40px rgba(0,0,0,.13);
}

/* ─── RESET ─────────────────────────────────────────── */
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }
html { font-size:15px; -webkit-font-smoothing:antialiased; }
body { font-family:var(--sans); background:var(--bg); color:var(--text-dark); min-height:100vh; overflow-x:hidden; }
a    { text-decoration:none; color:inherit; }
button { font-family:var(--sans); cursor:pointer; }
input, select, textarea { font-family:var(--sans); }

/* ══════════════════════════════════════════════════════
   ADMIN DARK MODE
══════════════════════════════════════════════════════ */
[data-theme="dark"] {
  --bg         : #13161e;
  --white      : #1e222c;
  --beige      : #252a36;
  --beige-dark : #2c3040;
  --border     : #2e3448;
  --text-dark  : #e2e6f0;
  --text-mid   : #9aa3b8;
  --text-muted : #5e6880;
  --shadow     : 0 2px 16px rgba(0,0,0,.3);
  --shadow-lg  : 0 8px 40px rgba(0,0,0,.5);
  --gold-light : #2a1f0a;
  --status-wait-bg    : rgba(230,126,34,.15);
  --status-review-bg  : rgba(142,68,173,.15);
  --status-confirm-bg : rgba(26,122,74,.15);
  --status-cancel-bg  : rgba(192,57,43,.15);
}
[data-theme="dark"] body { background: #13161e; }
[data-theme="dark"] .topbar { background: #1e222c; border-bottom-color: #2e3448; }
[data-theme="dark"] .table-wrap { background: #1e222c; }
[data-theme="dark"] .data-table th { background: #252a36; color: #5e6880; border-bottom-color: #2e3448; }
[data-theme="dark"] .data-table td { border-bottom-color: #2e3448; color: #c8d0e0; }
[data-theme="dark"] .data-table tbody tr:hover td { background: #252a36; }
[data-theme="dark"] .filter-bar { background: #1e222c; border-color: #2e3448; }
[data-theme="dark"] .filter-btn { background: #252a36; border-color: #2e3448; color: #9aa3b8; }
[data-theme="dark"] .filter-btn.active { background: var(--gold); border-color: var(--gold); color: #13161e; }
[data-theme="dark"] .search-box { background: #252a36; border-color: #2e3448; }
[data-theme="dark"] .search-box:focus-within { background: #2c3140; }
[data-theme="dark"] .sort-sel { background: #252a36; border-color: #2e3448; color: #c8d0e0; }
[data-theme="dark"] .modal-box { background: #1e222c; border-color: #2e3448; }
[data-theme="dark"] .modal-header { border-bottom-color: #2e3448; }
[data-theme="dark"] .modal-footer { border-top-color: #2e3448; }
[data-theme="dark"] .ss-input { background: #252a36; border-color: #2e3448; color: #e2e6f0; }
[data-theme="dark"] .ss-input:focus { border-color: var(--gold); }
[data-theme="dark"] .ss-textarea { background: #252a36; border-color: #2e3448; color: #e2e6f0; }
[data-theme="dark"] .ss-section { border-color: #2e3448; }
[data-theme="dark"] .ss-tab-nav { background: #252a36; border-color: #2e3448; }
[data-theme="dark"] .ss-tab-btn { color: #9aa3b8; }
[data-theme="dark"] .ss-tab-btn.active { background: #1e222c; color: var(--gold); }
[data-theme="dark"] .stats-card { background: #1e222c; border-color: #2e3448; }
[data-theme="dark"] .stats-card-title { color: #c8d0e0; }
[data-theme="dark"] .trend-kpi { background: #252a36; }
[data-theme="dark"] .period-card { background: #1e222c; }
[data-theme="dark"] .pkg-active-card { background: #1e222c; border-color: #2e3448; }

/* 다크모드 토글 버튼 (어드민 topbar에 포함) */
.dm-toggle-admin {
  width: 34px; height: 34px; border-radius: 8px;
  border: 1.5px solid var(--border);
  background: var(--beige); color: var(--text-muted);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: .85rem;
  transition: all var(--t);
}
.dm-toggle-admin:hover { background: var(--gold); color: #13161e; border-color: var(--gold); }

/* ══════════════════════════════════════════════════════
   LIVE PREVIEW PANEL (실시간 미리보기)
══════════════════════════════════════════════════════ */
.lp-overlay {
  position: fixed; inset: 0; z-index: 1800;
  background: rgba(0,0,0,.55); backdrop-filter: blur(4px);
  opacity: 0; pointer-events: none;
  transition: opacity .35s;
}
.lp-overlay.lp-open { opacity: 1; pointer-events: all; }

.lp-panel {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: min(900px, 92vw);
  background: var(--white);
  border-left: 1px solid var(--border);
  box-shadow: -8px 0 40px rgba(0,0,0,.18);
  z-index: 1900;
  display: flex; flex-direction: column;
  transform: translateX(100%);
  transition: transform .38s cubic-bezier(.22,.68,0,1.2);
}
.lp-panel.lp-open { transform: translateX(0); }

.lp-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  background: var(--white);
  flex-shrink: 0;
  gap: 12px;
}
/* lp-header 내부 레이아웃 */
.lp-header-left { display: flex; align-items: center; gap: 8px; }
.lp-header-right { display: flex; align-items: center; gap: 6px; }
.lp-header-title {
  font-size: .88rem; font-weight: 700; color: var(--text-dark);
}
.lp-header-badge {
  font-size: .6rem; font-weight: 800; letter-spacing: .12em;
  background: #e8f6ee; color: #1a7a4a;
  padding: 2px 8px; border-radius: 50px;
}
/* lp-toolbar hint & sync badge */
.lp-toolbar-hint {
  font-size: .76rem; color: var(--text-muted); display: flex; align-items: center; gap: 5px;
}
.lp-sync-badge {
  font-size: .72rem; font-weight: 600; color: #1a7a4a;
  opacity: 0; transition: opacity .3s;
  margin-left: auto;
}
.lp-sync-badge.lp-sync-active { opacity: 1; }
/* reload btn */
.lp-reload-btn {
  width: 30px; height: 30px; border-radius: 7px;
  border: 1.5px solid var(--border); background: var(--white);
  color: var(--text-muted); font-size: .82rem;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all var(--t);
}
.lp-reload-btn:hover { border-color: #1a5c42; color: #1a5c42; }
/* device btns 그룹 */
.lp-device-btns { display: flex; gap: 4px; }
.lp-title {
  font-size: .88rem; font-weight: 700; color: var(--text-dark);
  display: flex; align-items: center; gap: 8px;
}
.lp-title i { color: var(--gold); }
.lp-badge {
  font-size: .65rem; font-weight: 700; letter-spacing: .1em;
  background: #e8f6ee; color: #1a7a4a;
  padding: 2px 8px; border-radius: 50px;
}
.lp-badge--saving { background: #fff8ec; color: #b86000; }
.lp-actions { display: flex; gap: 8px; }
.lp-close-btn {
  width: 32px; height: 32px; border-radius: 8px;
  border: 1.5px solid var(--border); background: none;
  color: var(--text-muted); font-size: .9rem;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all var(--t);
}
.lp-close-btn:hover { background: #fee2e2; color: #c0392b; border-color: #f8c8c8; }

.lp-toolbar {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 16px;
  background: var(--beige);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  flex-wrap: wrap;
}
.lp-device-btn {
  display: flex; align-items: center; gap: 5px;
  padding: 5px 12px; border-radius: 6px;
  border: 1.5px solid var(--border); background: var(--white);
  color: var(--text-muted); font-size: .75rem; font-weight: 600;
  cursor: pointer; transition: all var(--t);
}
.lp-device-btn.active, .lp-device-btn:hover {
  border-color: var(--gold); color: var(--gold); background: rgba(201,169,106,.08);
}
.lp-sep { width: 1px; height: 20px; background: var(--border); margin: 0 4px; }
.lp-refresh-btn {
  display: flex; align-items: center; gap: 5px;
  padding: 5px 12px; border-radius: 6px;
  border: 1.5px solid var(--border); background: var(--white);
  color: var(--text-mid); font-size: .75rem; font-weight: 600;
  cursor: pointer; transition: all var(--t); margin-left: auto;
}
.lp-refresh-btn:hover { border-color: #1a5c42; color: #1a5c42; }
.lp-refresh-btn.spinning i { animation: spin .6s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.lp-iframe-wrap {
  flex: 1; overflow: hidden;
  display: flex; align-items: flex-start; justify-content: center;
  background: #e8ebf0;
  padding: 0;
  position: relative;
}
.lp-iframe-wrap--mobile {
  padding: 16px;
  background: #2c3140;
}
.lp-iframe-wrap--tablet {
  padding: 16px 32px;
  background: #3a4050;
}
#lpIframe {
  width: 100%; height: 100%; border: none;
  background: #fff;
  transition: width .3s var(--ease), border-radius .3s;
}
.lp-iframe-wrap--mobile  #lpIframe { width: 390px; border-radius: 12px; box-shadow: 0 8px 32px rgba(0,0,0,.4); }
.lp-iframe-wrap--tablet  #lpIframe { width: 768px; border-radius: 8px;  box-shadow: 0 4px 20px rgba(0,0,0,.3); }

.lp-loading-bar {
  position: absolute; top: 0; left: 0; right: 0;
  height: 3px; background: transparent;
  overflow: hidden;
}
.lp-loading-bar::after {
  content: '';
  position: absolute; top: 0; left: -40%;
  width: 40%; height: 100%;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  animation: lpLoading 1.2s ease-in-out infinite;
}
.lp-loading-bar.active,
.lp-loading-bar.lp-loading-active { background: rgba(201,169,106,.2); }
.lp-loading-bar:not(.active):not(.lp-loading-active)::after { display: none; }
@keyframes lpLoading { to { left: 100%; } }

/* 미리보기 트리거 버튼 */
.lp-trigger-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 8px;
  border: 1.5px solid var(--gold);
  background: rgba(201,169,106,.08); color: var(--gold);
  font-size: .78rem; font-weight: 700;
  cursor: pointer; transition: all var(--t);
  white-space: nowrap;
}
.lp-trigger-btn:hover { background: var(--gold); color: #13161e; }
.lp-trigger-btn i { font-size: .82rem; }

/* ── 마이크로 인터랙션 ── */

/* 버튼 호버 리프트 */
.action-btn {
  transition: transform var(--t), box-shadow var(--t), background var(--t), color var(--t), border-color var(--t);
}
.action-btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.12); }
.action-btn:active { transform: translateY(0) scale(.97); }

/* 필터 버튼 */
.filter-btn { transition: all var(--t); }
.filter-btn:hover { transform: translateY(-1px); }
.filter-btn:active { transform: scale(.96); }

/* 통계 카드 숫자 카운트업 애니메이션 */
@keyframes countUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.stat-num.counting { animation: countUp .4s ease forwards; }

/* nav-item 호버 */
.nav-item { position: relative; overflow: hidden; }
.nav-item::after {
  content: ''; position: absolute;
  left: 0; top: 50%; transform: translateY(-50%);
  width: 3px; height: 0; border-radius: 0 3px 3px 0;
  background: var(--gold); transition: height .25s var(--ease);
}
.nav-item.active::after { height: 70%; }

/* ss-tab-btn 전환 인디케이터 */
.ss-tab-btn {
  position: relative;
  transition: color var(--t), background var(--t);
}
.ss-tab-btn::after {
  content: ''; position: absolute;
  bottom: 0; left: 50%; transform: translateX(-50%);
  width: 0; height: 2px;
  background: var(--gold);
  transition: width .25s var(--ease);
  border-radius: 2px 2px 0 0;
}
.ss-tab-btn.active::after { width: 80%; }

/* 테이블 행 선택 하이라이트 */
.data-table tbody tr.row-selected td { background: rgba(201,169,106,.07) !important; }
.data-table tbody tr { transition: background .15s; }

/* ─── SIDEBAR ───────────────────────────────────────── */
.sidebar {
  position: fixed;
  top: 0; left: 0; bottom: 0;
  width: var(--sidebar-w);
  background: var(--green-deep);
  display: flex;
  flex-direction: column;
  z-index: 800;
  transition: transform var(--t) var(--ease);
  overflow-y: auto;
}
.sidebar-logo {
  padding: 28px 24px 20px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  display: flex; flex-direction: column; gap: 3px;
}
.logo-main { font-size:1.05rem; font-weight:700; letter-spacing:.22em; color:var(--white); }
.logo-sub  { font-size:.52rem; font-weight:400; letter-spacing:.28em; color:var(--gold); }

.sidebar-nav { flex:1; padding: 20px 12px; display:flex; flex-direction:column; gap:4px; }
.nav-group-label {
  font-size:.58rem; font-weight:700; letter-spacing:.22em;
  color:rgba(255,255,255,.28); padding:10px 12px 6px;
}
.nav-item {
  display:flex; align-items:center; gap:11px;
  padding:11px 14px; border-radius:var(--radius);
  font-size:.85rem; font-weight:400; color:rgba(255,255,255,.65);
  letter-spacing:.02em; transition:all var(--t);
}
.nav-item i { font-size:.9rem; width:18px; text-align:center; }
.nav-item:hover { background:rgba(255,255,255,.08); color:var(--white); }
.nav-item.active { background:rgba(201,169,106,.18); color:var(--gold); font-weight:600; }
.nav-item.active i { color:var(--gold); }

.sidebar-footer {
  padding: 16px 12px 24px;
  border-top: 1px solid rgba(255,255,255,.08);
  display:flex; flex-direction:column; gap:2px;
}
.sidebar-link {
  display:flex; align-items:center; gap:10px;
  padding:10px 14px; border-radius:var(--radius);
  font-size:.8rem; color:rgba(255,255,255,.45);
  transition:all var(--t);
}
.sidebar-link:hover { color:rgba(255,255,255,.75); background:rgba(255,255,255,.06); }
.sidebar-link i { font-size:.8rem; width:16px; text-align:center; }
.sidebar-logout {
  width:100%; background:none; border:none; cursor:pointer; text-align:left;
  color:rgba(255,120,120,.55);
  margin-top:4px;
}
.sidebar-logout:hover { color:rgba(255,100,100,.9); background:rgba(255,80,80,.08); }

/* ── 여행사 관리 메뉴 강조 ── */
.nav-item--agency {
  margin-top: 2px;
  background: rgba(201,168,76,.08);
  border: 1px solid rgba(201,168,76,.2);
}
.nav-item--agency i { color: var(--gold) !important; }
.nav-item--agency:hover {
  background: rgba(201,168,76,.15) !important;
  border-color: rgba(201,168,76,.35);
}
.nav-item--agency.active {
  background: rgba(201,168,76,.2) !important;
  border-color: rgba(201,168,76,.4);
  color: var(--gold) !important;
}
.nav-agency-badge {
  margin-left: auto;
  font-size: .58rem; font-weight: 700; letter-spacing: .04em;
  background: var(--gold); color: var(--green-deep);
  padding: 2px 7px; border-radius: 10px;
  white-space: nowrap;
}

/* ══════════════════════════════════════════════════════
   LOGIN SCREEN
══════════════════════════════════════════════════════ */
.admin-wrap-hidden { display:none; }
.admin-wrap-visible { display:block; }

.login-screen {
  position:fixed; inset:0; z-index:9999;
  background:linear-gradient(135deg, #0b2e20 0%, #1a5c42 60%, #0f3d2e 100%);
  display:flex; align-items:center; justify-content:center;
  padding:20px;
}
.login-box {
  background:#fff; border-radius:16px;
  padding:48px 44px 44px;
  width:100%; max-width:420px;
  box-shadow:0 24px 64px rgba(0,0,0,.3);
  animation:loginFadeIn .4s ease;
}
@keyframes loginFadeIn {
  from { opacity:0; transform:translateY(24px); }
  to   { opacity:1; transform:translateY(0); }
}
.login-logo { text-align:center; margin-bottom:20px; }
.login-logo-main {
  display:block; font-family:'Cormorant Garamond', serif;
  font-size:1.9rem; font-weight:600; letter-spacing:.2em;
  color:#0f3d2e;
}
.login-logo-sub {
  display:block; font-size:.65rem; letter-spacing:.18em;
  color:#888; margin-top:4px; text-transform:uppercase;
}
.login-divider {
  width:40px; height:2px; background:#c9a96a;
  margin:0 auto 24px; border-radius:2px;
}
.login-title {
  font-size:1.1rem; font-weight:700; color:#1a1a1a;
  text-align:center; margin-bottom:6px;
}
.login-desc {
  font-size:.8rem; color:#999; text-align:center; margin-bottom:28px;
}
.login-form { display:flex; flex-direction:column; gap:16px; }
.login-group { display:flex; flex-direction:column; gap:6px; }
.login-label {
  font-size:.75rem; font-weight:600; color:#555;
  letter-spacing:.04em;
}
.login-label i { margin-right:5px; color:#1a5c42; }
.login-pw-wrap { position:relative; }
.login-input {
  width:100%; padding:12px 16px;
  border:1.5px solid #e0e0e0; border-radius:8px;
  font-size:.9rem; color:#1a1a1a;
  transition:border-color .2s, box-shadow .2s;
  box-sizing:border-box;
}
.login-input:focus {
  outline:none; border-color:#1a5c42;
  box-shadow:0 0 0 3px rgba(26,92,66,.1);
}
.login-input.is-invalid { border-color:#e74c3c; }
.login-pw-wrap .login-input { padding-right:46px; }
.login-eye {
  position:absolute; right:12px; top:50%; transform:translateY(-50%);
  background:none; border:none; cursor:pointer;
  color:#aaa; font-size:.9rem; padding:4px;
}
.login-eye:hover { color:#555; }
.login-err {
  min-height:18px; font-size:.77rem;
  color:#e74c3c; font-weight:500; text-align:center;
}
.login-btn {
  width:100%; padding:14px;
  background:#1a5c42; color:#fff;
  border:none; border-radius:8px;
  font-size:.95rem; font-weight:700;
  letter-spacing:.05em; cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:8px;
  transition:background .2s, transform .1s;
  margin-top:4px;
}
.login-btn:hover  { background:#0f3d2e; }
.login-btn:active { transform:scale(.98); }
.login-btn:disabled { opacity:.6; cursor:not-allowed; }
.login-btn.loading i { animation:spin .7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }

/* ─── TOPBAR 로그인 사용자 표시 ─────────────────── */
.topbar-user {
  display:flex; align-items:center; gap:8px;
  font-size:.78rem; color:var(--text-muted);
  padding:4px 10px; border-radius:20px;
  background:var(--beige); border:1px solid var(--border);
}
.topbar-user i { color:var(--green-mid); font-size:.8rem; }

/* ─── 반응형 ─────────────────── */
@media (max-width: 480px) {
  .login-box { padding:36px 24px 32px; }
}

/* ─── TOPBAR ────────────────────────────────────────── */
.topbar {
  position: fixed;
  top: 0; left: var(--sidebar-w); right: 0;
  height: var(--topbar-h);
  background: var(--white);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center;
  padding: 0 24px; gap: 16px;
  z-index: 1200 !important;
  box-shadow: 0 1px 8px rgba(0,0,0,.05);
  transition: left var(--t) var(--ease);
}
.sidebar-toggle {
  display:none; background:none; border:none;
  font-size:1.1rem; color:var(--text-mid);
  padding:6px; border-radius:6px;
  transition:background var(--t);
}
.sidebar-toggle:hover { background:var(--bg); }
.topbar-title {
  font-size:1rem; font-weight:600; color:var(--text-dark);
  letter-spacing:.01em;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar-right {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
  min-width: 0;
  overflow: visible;
}
.topbar-date  { font-size:.78rem; color:var(--text-muted); }
.refresh-btn  {
  width:34px; height:34px; border-radius:var(--radius);
  background:var(--green-light); border:none; color:var(--green-deep);
  font-size:.88rem; display:flex; align-items:center; justify-content:center;
  transition:all var(--t);
}
.refresh-btn:hover { background:var(--green-deep); color:var(--white); }
.refresh-btn.spinning i { animation:spin .6s linear infinite; }
@keyframes spin { to{transform:rotate(360deg)} }

/* ─── AUTO REFRESH ──────────────────────────────────── */
.ar-toggle-btn {
  display:flex; align-items:center; gap:5px;
  padding:0 10px; height:34px; border-radius:var(--radius);
  background:var(--green-light); border:none; color:var(--green-deep);
  font-size:.75rem; font-weight:600; cursor:pointer;
  transition:all var(--t); white-space:nowrap;
}
.ar-toggle-btn i { font-size:.82rem; animation:ar-spin 2.5s linear infinite; }
.ar-toggle-btn:hover { background:var(--green-deep); color:var(--white); }
.ar-toggle-btn.ar-off {
  background:#f0f0f0; color:var(--text-muted);
}
.ar-toggle-btn.ar-off i { animation:none; opacity:.5; }
.ar-toggle-btn.ar-off:hover { background:#ddd; color:var(--text-mid); }
.ar-countdown {
  display:inline-block; font-size:.68rem; font-weight:400;
  background:rgba(0,0,0,.08); border-radius:20px;
  padding:1px 7px; margin-left:2px; color:inherit; min-width:30px; text-align:center;
}
@keyframes ar-spin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }

.ar-badge {
  position: fixed;
  top: 68px;
  right: 24px;
  padding:4px 12px; border-radius:20px;
  background:var(--gold); color:#fff; font-size:.73rem; font-weight:600;
  opacity:0; transform:translateY(-4px);
  transition:opacity .3s, transform .3s;
  pointer-events:none; white-space:nowrap;
  z-index: 800;
}
.ar-badge.ar-badge--show { opacity:1; transform:translateY(0); }

/* ─── MAIN ──────────────────────────────────────────── */
.admin-main {
  display: block;
  margin-left: 240px;
  margin-top: 60px;
  padding: 24px;
  min-height: calc(100vh - 60px);
  box-sizing: border-box;
  transition: margin-left var(--t) var(--ease);
}
.view { }
.view.hidden { display:none; }

/* ─── btn-primary / btn-secondary (공통 액션 버튼) ────────── */
.btn-primary {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 16px; border-radius: var(--radius);
  font-size: .78rem; font-weight: 600;
  background: #1a5c42; color: var(--white);
  border: 1.5px solid #1a5c42;
  cursor: pointer;
  transition: background var(--t), box-shadow var(--t), transform var(--t);
  white-space: nowrap;
}
.btn-primary:hover  { background: #145033; border-color: #145033; box-shadow: 0 3px 10px rgba(26,92,66,.25); }
.btn-primary:active { transform: scale(.97); }

/* ─── 공통 뷰 헤더 (.view-header / .view-title / .view-sub) ─ */
.view-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.view-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-dark);
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 4px;
  line-height: 1.3;
}
.view-title i {
  font-size: .95rem;
  color: var(--green-mid);
  opacity: .8;
}
.view-sub {
  font-size: .75rem;
  color: var(--text-muted);
  margin: 0;
  line-height: 1.5;
}

/* ─── STAT CARDS ────────────────────────────────────── */
.stat-cards {
  display: grid;
  grid-template-columns: repeat(5,1fr);
  gap: 16px;
  margin-bottom: 24px;
}
.stat-card {
  background: var(--white);
  border-radius: 12px;
  padding: 20px 22px 18px;
  display: flex; flex-direction: column; gap: 14px;
  box-shadow: var(--shadow);
  border: 1px solid var(--border);
  position: relative; overflow: hidden;
  transition: transform var(--t), box-shadow var(--t);
  cursor: default;
}
.stat-card::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0;
  height: 3px;
  border-radius: 12px 12px 0 0;
  opacity: 0;
  transition: opacity .3s;
}
.stat-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.stat-card:hover::before { opacity: 1; }
.stat-card--total::before   { background: #2980b9; }
.stat-card--wait::before    { background: var(--status-wait); }
.stat-card--review::before  { background: var(--status-review); }
.stat-card--confirm::before { background: var(--status-confirm); }
.stat-card--cancel::before  { background: var(--status-cancel); }

.stat-card-top { display: flex; align-items: center; justify-content: space-between; }
.stat-icon {
  width: 40px; height: 40px; border-radius: 10px;
  display:flex; align-items:center; justify-content:center;
  font-size:1.05rem; flex-shrink:0;
  transition: transform .3s cubic-bezier(.22,.68,0,1.3);
}
.stat-card:hover .stat-icon { transform: scale(1.15) rotate(-5deg); }
.stat-icon--total   { background:#eaf1fb; color:#2980b9; }
.stat-icon--wait    { background:var(--status-wait-bg); color:var(--status-wait); }
.stat-icon--review  { background:var(--status-review-bg); color:var(--status-review); }
.stat-icon--confirm { background:var(--status-confirm-bg); color:var(--status-confirm); }
.stat-icon--cancel  { background:var(--status-cancel-bg); color:var(--status-cancel); }

.stat-body { display: flex; flex-direction: column; gap: 4px; }
.stat-label { font-size:.72rem; color:var(--text-muted); font-weight:500; letter-spacing:.02em; }
.stat-num-row { display: flex; align-items: flex-end; gap: 8px; }
.stat-num   {
  font-size:2rem; font-weight:700; color:var(--text-dark); line-height:1;
  font-variant-numeric: tabular-nums;
  transition: transform .3s;
}
.stat-card:hover .stat-num { transform: scale(1.05); }
.stat-trend {
  font-size:.68rem; font-weight:600; padding:2px 7px;
  border-radius:50px; margin-bottom:3px; white-space:nowrap;
}
.stat-trend--up   { background:#e8f6ee; color:#1a7a4a; }
.stat-trend--down { background:#fdf0ef; color:#c0392b; }
.stat-trend--neu  { background:#f0f0f0; color:#888; }

/* 퍼센트 프로그레스 바 */
.stat-progress {
  height: 3px;
  background: var(--border);
  border-radius: 50px;
  overflow: hidden;
}
.stat-progress-fill {
  height: 100%;
  border-radius: 50px;
  transition: width 1s var(--ease);
}

/* ─── FILTER BAR ────────────────────────────────────── */
.filter-bar {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 18px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; flex-wrap: wrap;
  margin-bottom: 18px;
  box-shadow: var(--shadow);
}
.filter-left  { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.filter-right { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

.filter-btn {
  padding: 7px 18px;
  border-radius: 50px;
  border: 1.5px solid var(--border);
  background: var(--white);
  font-size: .8rem; font-weight: 500; color: var(--text-mid);
  transition: all var(--t);
}
.filter-btn:hover { border-color:var(--green-mid); color:var(--green-mid); }
.filter-btn.active { background:var(--green-deep); border-color:var(--green-deep); color:var(--white); }

.search-box {
  display:flex; align-items:center; gap:8px;
  background:var(--bg); border:1.5px solid var(--border);
  border-radius:var(--radius); padding:8px 14px;
  transition:border-color var(--t);
}
.search-box:focus-within { border-color:var(--green-mid); background:var(--white); }
.search-box i { color:var(--text-muted); font-size:.82rem; flex-shrink:0; }
.search-box input {
  border:none; background:transparent; outline:none;
  font-size:.84rem; color:var(--text-dark); width:220px;
}
.search-box input::placeholder { color:var(--text-muted); }
.search-clear { background:none; border:none; color:var(--text-muted); font-size:.78rem; padding:0 2px; transition:color var(--t); }
.search-clear:hover { color:var(--text-dark); }

.sort-sel {
  padding:8px 14px; border:1.5px solid var(--border);
  border-radius:var(--radius); background:var(--white);
  font-size:.82rem; color:var(--text-dark); outline:none;
  cursor:pointer; transition:border-color var(--t);
}
.sort-sel:focus { border-color:var(--green-mid); }

/* ─── TABLE WRAP ────────────────────────────────────── */
.table-wrap {
  background: var(--white);
  border-radius: var(--radius);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.table-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 20px;
  border-bottom:1px solid var(--border);
}
.table-count { font-size:.82rem; font-weight:600; color:var(--text-mid); }
.table-actions { display:flex; gap:8px; }

.action-btn {
  display:flex; align-items:center; gap:6px;
  padding:7px 16px; border-radius:var(--radius);
  font-size:.78rem; font-weight:600; border:none;
  transition:all var(--t);
}
.action-btn--danger { background:var(--status-cancel-bg); color:var(--status-cancel); }
.action-btn--danger:hover { background:var(--status-cancel); color:var(--white); }
.action-btn--excel {
  background:#e8f5ee; color:#1a5c42;
  border:1.5px solid #1a5c42;
}
.action-btn--excel:hover {
  background:#1a5c42; color:var(--white);
}
.action-btn--excel i { font-size:.9rem; }
.action-btn--add {
  background:#1a5c42; color:var(--white);
  border:1.5px solid #1a5c42;
}
.action-btn--add:hover { background:#145033; }
.action-btn--date {
  background:#1a4a7a; color:var(--white);
  border:1.5px solid #1a4a7a;
}
.action-btn--date:hover { background:#133a62; }

/* 툴바 버튼 그룹 */
.ts-toolbar-btns { display:flex; gap:10px; flex-shrink:0; flex-wrap:wrap; }

/* 타임 모달 날짜 select */
.ts-modal-select {
  appearance:none; -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center;
  padding-right:32px; cursor:pointer;
}
/* 시간 피커 (시 + 분 나란히) */
.ts-time-picker {
  display:flex; align-items:center; gap:8px;
}
.ts-time-sel {
  flex:1; min-width:0;
  text-align:center; font-size:1rem; font-weight:600;
  padding:9px 32px 9px 12px;
}
.ts-time-colon {
  font-size:1.3rem; font-weight:700;
  color:var(--text-dark); line-height:1; flex-shrink:0;
}


/* ══════════════════════════════════════════
   TIMESLOTS VIEW
══════════════════════════════════════════ */
.ts-toolbar {
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:16px; margin-bottom:20px; flex-wrap:wrap;
}
.ts-title {
  font-size:1.15rem; font-weight:700; color:var(--text-dark);
  margin:0 0 4px; display:flex; align-items:center; gap:8px;
}
.ts-desc { font-size:.82rem; color:var(--text-muted); margin:0; }

/* 날짜 탭 */
.ts-date-tabs {
  display:flex; gap:8px; flex-wrap:wrap;
  margin-bottom:20px;
  padding-bottom:14px;
  border-bottom:1.5px solid var(--beige-dark);
}
.ts-date-loading { font-size:.85rem; color:var(--text-muted); padding:8px 0; }
.ts-no-dates { font-size:.85rem; color:var(--text-muted); padding:8px 0; }

/* 날짜 탭 래퍼 (탭 + X 버튼 묶음) */
.ts-tab-wrap {
  display:flex; align-items:stretch;
  border:1.5px solid var(--beige-dark);
  border-radius:10px; overflow:hidden;
  background:var(--white);
  transition:border-color var(--t);
}
.ts-tab-wrap:hover { border-color:#1a5c42; }
.ts-tab-wrap.ts-tab--active { border-color:#1a5c42; background:#1a5c42; }

.ts-tab {
  display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:8px 12px;
  border:none; background:transparent;
  cursor:pointer; transition:all var(--t); min-width:52px;
  color:inherit;
}
.ts-tab-wrap.ts-tab--active .ts-tab { color:var(--white); }

.ts-tab-del {
  display:flex; align-items:center; justify-content:center;
  width:24px; border:none; border-left:1px solid var(--beige-dark);
  background:transparent; cursor:pointer;
  color:var(--text-muted); font-size:.65rem;
  transition:all var(--t); flex-shrink:0;
}
.ts-tab-del:hover { background:#fee2e2; color:#c0392b; }
.ts-tab-wrap.ts-tab--active .ts-tab-del {
  border-left-color:rgba(255,255,255,.3); color:rgba(255,255,255,.7);
}
.ts-tab-wrap.ts-tab--active .ts-tab-del:hover {
  background:rgba(0,0,0,.2); color:var(--white);
}
.ts-tab-date { font-size:.88rem; font-weight:700; }
.ts-tab-day  { font-size:.72rem; opacity:.8; }
.ts-tab-cnt  {
  font-size:.68rem; background:rgba(255,255,255,.25);
  border-radius:20px; padding:1px 6px; margin-top:2px;
}
.ts-tab--active .ts-tab-cnt { background:rgba(255,255,255,.3); }

/* 그리드 */
.ts-grid-wrap { min-height:200px; }
.ts-empty {
  display:flex; flex-direction:column; align-items:center;
  padding:60px 20px; gap:12px; color:var(--text-muted);
}
.ts-empty i { font-size:2.5rem; opacity:.4; }
.ts-empty p { font-size:.95rem; font-weight:600; margin:0; }
.ts-empty span { font-size:.8rem; }
.ts-grid { display:flex; flex-direction:column; gap:24px; }
.ts-section {}
.ts-section-title {
  display:flex; align-items:center; gap:8px;
  font-size:.85rem; font-weight:700; color:var(--text-mid);
  margin-bottom:12px; padding-bottom:8px;
  border-bottom:1px solid var(--beige-dark);
}
.ts-session-badge {
  display:inline-flex; align-items:center; justify-content:center;
  padding:2px 10px; border-radius:20px; font-size:.75rem; font-weight:700;
}
.ts-session-badge--1 { background:#e3f0f8; color:#1a5578; }
.ts-session-badge--2 { background:#fdf3e3; color:#8a5c00; }
.ts-cards {
  display:flex; flex-wrap:wrap; gap:10px;
}
.ts-no-slot { font-size:.8rem; color:var(--text-muted); padding:8px 0; }

/* 카드 */
.ts-card {
  display:flex; flex-direction:column;
  gap:8px; padding:12px 14px;
  border:1.5px solid var(--beige-dark); border-radius:12px;
  background:var(--white); min-width:130px; max-width:200px;
  transition:all var(--t);
}
.ts-card:hover { border-color:#1a5c42; box-shadow:0 2px 8px rgba(26,92,66,.1); }
.ts-card--off     { opacity:.5; background:#f5f5f5; }
.ts-card--partial { border-color:#f0a500; background:#fffdf5; }

/* 카드 상단: 세션뱃지 + 시간 + 액션버튼 */
.ts-card-top {
  display:flex; align-items:center; gap:8px;
}
.ts-card-badge {
  font-size:.68rem; font-weight:700; padding:2px 8px;
  border-radius:20px; background:#e8f5ee; color:#1a5c42;
  white-space:nowrap;
}
.ts-card--off .ts-card-badge { background:#eee; color:#999; }
.ts-card-time {
  font-size:1.05rem; font-weight:700; color:var(--text-dark);
  font-family:'Inter',sans-serif; flex:1;
}
.ts-card-actions { display:flex; gap:6px; margin-left:auto; }

/* 전체 토글 버튼 (아이콘만) */
.ts-card-toggle-all {
  display:flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:6px; border:none;
  cursor:pointer; font-size:.95rem; transition:all var(--t);
}
.ts-card-toggle-all.ts-card-toggle--on  { background:#e8f5ee; color:#1a5c42; }
.ts-card-toggle-all.ts-card-toggle--off { background:#fff3e0; color:#b76000; }
.ts-card-toggle-all:hover { filter:brightness(.9); }

.ts-card-del {
  display:flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:6px; border:none;
  background:var(--status-cancel-bg); color:var(--status-cancel);
  cursor:pointer; font-size:.75rem; transition:all var(--t);
}
.ts-card-del:hover { background:var(--status-cancel); color:var(--white); }

/* 코스 배지 행 */
.ts-course-row {
  display:flex; flex-wrap:wrap; gap:4px;
}
.ts-course-badge {
  font-size:.62rem; font-weight:600; padding:2px 7px;
  border-radius:20px; cursor:pointer; transition:all var(--t);
  background:#e8f5ee; color:#1a5c42;
  border:1px solid transparent; user-select:none;
  white-space:nowrap;
}
.ts-course-badge:hover { filter:brightness(.9); transform:scale(1.05); }
.ts-course-badge--off {
  background:#fbe9e7; color:#c62828;
  text-decoration:line-through; opacity:.75;
}
.ts-course-badge--off:hover { opacity:1; }

/* 기존 호환용 (구버전 toggle 클래스) */
.ts-card-toggle {
  display:flex; align-items:center; gap:4px;
  font-size:.7rem; padding:3px 8px; border-radius:6px; border:none;
  cursor:pointer; font-weight:600; transition:all var(--t);
}
.ts-card-toggle--on  { background:#e8f5ee; color:#1a5c42; }
.ts-card-toggle--off { background:#fff3e0; color:#b76000; }
.ts-card-toggle:hover { filter:brightness(.92); }

/* 타임슬롯 추가 모달 */
.ts-modal-box {
  max-width:440px !important; width:90% !important;
  padding:0 !important; overflow:hidden;
}
/* 다중 날짜 선택 모달은 더 넓게 */
.ts-modal-box--wide {
  max-width:520px !important;
}
.ts-modal-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 24px 16px; border-bottom:1px solid var(--beige-dark);
}
.ts-modal-header .modal-title {
  font-size:1rem; margin:0; display:flex; align-items:center; gap:8px;
}
.ts-modal-body { padding:20px 24px; display:flex; flex-direction:column; gap:16px; }
.ts-modal-footer {
  padding:16px 24px 20px; border-top:1px solid var(--beige-dark);
  display:flex; justify-content:flex-end; gap:10px;
}
.ts-modal-row { display:flex; flex-direction:column; gap:6px; }
.ts-modal-label { font-size:.82rem; font-weight:600; color:var(--text-mid); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ts-date-hint-small { font-size:.72rem; color:var(--text-muted); font-weight:400; }
.ts-modal-input {
  width:100%; padding:9px 12px; border:1.5px solid var(--beige-dark);
  border-radius:8px; font-size:.92rem; color:var(--text-dark);
  font-family:inherit; transition:border-color var(--t);
  box-sizing:border-box;
}
.ts-modal-input:focus { outline:none; border-color:#1a5c42; }
.ts-modal-hint { font-size:.75rem; color:var(--text-muted); margin:2px 0 0; }
.ts-modal-err { font-size:.8rem; color:#c0392b; font-weight:600; min-height:18px; margin:0; }
.ts-modal-radio-group { display:flex; gap:16px; }
.ts-radio-label {
  display:flex; align-items:center; gap:6px;
  font-size:.88rem; cursor:pointer; color:var(--text-mid);
}
.ts-radio-label input { accent-color:#1a5c42; width:16px; height:16px; cursor:pointer; }

/* ─── 다중 날짜 선택 배지 ─────────────────── */
.ts-sel-count {
  display:inline-block; background:var(--green-deep); color:#fff;
  font-size:.7rem; font-weight:700; border-radius:20px;
  padding:2px 8px; margin-left:4px;
}
.ts-selected-dates {
  display:flex; flex-wrap:wrap; gap:6px; min-height:32px;
  padding:8px; background:var(--beige); border-radius:8px;
  border:1.5px solid var(--beige-dark);
}
.ts-date-badge {
  display:inline-flex; align-items:center; gap:4px;
  background:var(--green-deep); color:#fff;
  font-size:.75rem; font-weight:600; border-radius:20px;
  padding:4px 10px; white-space:nowrap;
}
.ts-date-badge--dup {
  background:#e67e22;  /* 이미 등록된 날짜는 주황색 */
}
.ts-date-badge-del {
  background:none; border:none; color:rgba(255,255,255,.7);
  cursor:pointer; font-size:.95rem; line-height:1; padding:0 2px;
  transition:color .15s;
}
.ts-date-badge-del:hover { color:#fff; }
.ts-clear-btn {
  align-self:flex-start; font-size:.73rem; color:var(--text-muted);
  background:none; border:none; cursor:pointer; padding:0; text-decoration:underline;
  margin-top:2px;
}
.ts-clear-btn:hover { color:var(--green-deep); }

/* ─── 진행률 표시 ─────────────────────────── */
.ts-progress-wrap { display:flex; flex-direction:column; gap:6px; }
.ts-progress-label { font-size:.78rem; color:var(--text-mid); font-weight:500; }
.ts-progress-bar {
  height:8px; background:var(--beige-dark); border-radius:8px; overflow:hidden;
}
.ts-progress-fill {
  height:100%; background:var(--green-deep);
  border-radius:8px; transition:width .2s ease;
}

/* ─── Flatpickr 인라인 달력 커스텀 ─────────── */
#tsDatePickerInline .flatpickr-calendar {
  box-shadow:none !important; border:1.5px solid var(--beige-dark) !important;
  border-radius:10px !important; width:100% !important;
}
#tsDatePickerInline .flatpickr-day.selected,
#tsDatePickerInline .flatpickr-day.selected:hover {
  background:var(--green-deep) !important; border-color:var(--green-deep) !important;
}
#tsDatePickerInline .flatpickr-day:hover {
  background:var(--green-light) !important;
}
#tsDatePickerInline .flatpickr-months { padding:4px 0; }


/* Loading / Empty */
.loading-state, .empty-state {
  display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:12px; padding:72px 24px;
  color:var(--text-muted);
}
.loading-state i { font-size:2rem; color:var(--green-mid); }
.loading-state p, .empty-state p { font-size:.92rem; font-weight:500; }
.empty-state i  { font-size:2.8rem; color:var(--beige-dark); }
.empty-state span{ font-size:.8rem; }
.hidden { display:none !important; }

/* TABLE */
.table-container { overflow-x:auto; }
.data-table {
  width:100%; border-collapse:collapse;
  font-size:.82rem;
}
.data-table th {
  padding:12px 14px; text-align:left;
  font-size:.68rem; font-weight:700; letter-spacing:.1em;
  text-transform:uppercase; color:var(--text-muted);
  background:var(--bg); border-bottom:1px solid var(--border);
  white-space:nowrap;
}
.data-table td {
  padding:13px 14px; border-bottom:1px solid var(--border);
  vertical-align:middle; color:var(--text-dark);
  transition:background var(--t);
}
.data-table tbody tr:hover td { background:var(--beige); }
.data-table tbody tr:last-child td { border-bottom:none; }
.th-check, .td-check { width:40px; text-align:center; }
.th-num { width:44px; text-align:center; }
.td-num {
  text-align:center;
  font-size:.75rem;
  font-weight:600;
  color:var(--text-muted);
  font-variant-numeric: tabular-nums;
}
.th-actions { width:100px; text-align:center; }

/* 체크박스 */
input[type="checkbox"] {
  width:16px; height:16px; cursor:pointer;
  accent-color:var(--green-deep);
}

/* 이름 셀 */
.td-name { font-weight:600; }
.td-name small { display:block; font-size:.72rem; font-weight:300; color:var(--text-muted); margin-top:2px; }

/* 코스 뱃지 */
.course-badge {
  display:inline-block; padding:3px 9px; border-radius:4px;
  font-size:.76rem; font-weight:600; white-space:nowrap;
  background:rgba(26,92,66,.1); color:var(--green-dark);
  border:1px solid rgba(26,92,66,.2);
}

/* 카카오 친구추가 뱃지 */
.kakao-badge {
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 9px; border-radius:4px;
  font-size:.76rem; font-weight:600; white-space:nowrap;
}
.kakao-badge--yes {
  background:#fff9e6; color:#5a3e00;
  border:1px solid #f9d54a;
}
.kakao-badge--no {
  background:#f5f5f5; color:#aaa;
  border:1px solid #ddd;
}

/* 상태 뱃지 */
.badge {
  display:inline-block; padding:4px 12px; border-radius:50px;
  font-size:.72rem; font-weight:600; white-space:nowrap;
}
.badge--wait    { background:var(--status-wait-bg);    color:var(--status-wait); }
.badge--confirm { background:var(--status-confirm-bg); color:var(--status-confirm); }
.badge--cancel  { background:var(--status-cancel-bg);  color:var(--status-cancel); }

/* 상태 select */
.status-sel {
  padding:4px 10px; border:1.5px solid var(--border); border-radius:50px;
  font-size:.75rem; font-weight:600; background:var(--white);
  cursor:pointer; outline:none; transition:border-color var(--t);
}
.status-sel:focus { border-color:var(--green-mid); }
.status-sel.sel--wait    { color:var(--status-wait);    border-color:var(--status-wait);    background:var(--status-wait-bg); }
.status-sel.sel--review  { color:var(--status-review);  border-color:var(--status-review);  background:var(--status-review-bg); }
.status-sel.sel--confirm { color:var(--status-confirm); border-color:var(--status-confirm); background:var(--status-confirm-bg); }
.status-sel.sel--cancel  { color:var(--status-cancel);  border-color:var(--status-cancel);  background:var(--status-cancel-bg); }

/* 액션 버튼들 */
.row-actions { display:flex; align-items:center; justify-content:center; gap:6px; }
.icon-btn {
  width:30px; height:30px; border-radius:6px;
  background:none; border:1.5px solid var(--border);
  color:var(--text-muted); font-size:.78rem;
  display:flex; align-items:center; justify-content:center;
  transition:all var(--t);
}
.icon-btn--view:hover   { border-color:var(--green-mid); color:var(--green-mid); background:var(--green-light); }
.icon-btn--delete:hover { border-color:var(--status-cancel); color:var(--status-cancel); background:var(--status-cancel-bg); }
.icon-btn--sms:hover    { border-color:#1565c0; color:#1565c0; background:#e3f0fc; }
.th-sms  { width:80px; text-align:center; }
.td-sms  { text-align:center; white-space:nowrap; }
.td-sms-inner {
  display:inline-flex;
  align-items:center;
  gap:4px;
  flex-wrap:nowrap;
}

/* ── 문자 발송완료 아이콘 ────────────────────────── */
.icon-btn--sms.sms-sent {
  border-color:#1b8a3e;
  color:#1b8a3e;
  background:#e8f7ee;
  position:relative;
}
.icon-btn--sms.sms-sent::after {
  content:'✓';
  position:absolute;
  top:-5px; right:-5px;
  width:14px; height:14px;
  background:#1b8a3e;
  color:#fff;
  border-radius:50%;
  font-size:8px;
  font-weight:700;
  display:flex; align-items:center; justify-content:center;
  line-height:14px;
  text-align:center;
}
.icon-btn--sms.sms-sent:hover {
  border-color:#156e31;
  color:#156e31;
  background:#d1f0dc;
}

/* ── 발송내역 확인 아이콘 ────────────────────────── */
.icon-btn--sms-hist {
  width:28px; height:28px;
  border-radius:var(--radius);
  border:1.5px solid #e67e22;
  background:#fff8f0;
  color:#e67e22;
  font-size:.72rem;
  cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  margin-left:3px;
  transition:all var(--t);
  vertical-align:middle;
}
.icon-btn--sms-hist:hover {
  border-color:#c0392b;
  color:#c0392b;
  background:#fdecea;
}

/* ── 발송내역 팝오버 ────────────────────────────── */
.sms-hist-popover {
  position:fixed;
  z-index:9999;
  width:320px;
  background:#fff;
  border:1.5px solid #e0e0e0;
  border-radius:10px;
  box-shadow:0 8px 32px rgba(0,0,0,.18);
  overflow:hidden;
  animation:popoverIn .18s ease;
}
@keyframes popoverIn {
  from { opacity:0; transform:translateY(-6px); }
  to   { opacity:1; transform:translateY(0); }
}
.sms-hist-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 14px;
  background:#f5f7fa;
  border-bottom:1px solid #e8e8e8;
  font-size:.82rem; font-weight:600; color:#2c3e50;
}
.sms-hist-header i { margin-right:5px; color:#e67e22; }
.sms-hist-close {
  background:none; border:none; cursor:pointer;
  color:#999; font-size:.9rem; padding:2px 4px;
  border-radius:4px; transition:color .2s, background .2s;
}
.sms-hist-close:hover { color:#c0392b; background:#fdecea; }

.sms-hist-body {
  max-height:280px;
  overflow-y:auto;
  padding:6px 0;
}
.sms-hist-item {
  padding:9px 14px;
  border-bottom:1px solid #f0f0f0;
  transition:background .15s;
}
.sms-hist-item:last-child { border-bottom:none; }
.sms-hist-item:hover { background:#fafafa; }
.sms-hist-meta {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:4px;
}
.sms-hist-type {
  font-size:.76rem; font-weight:600;
  background:#eef6ff; color:#1565c0;
  padding:2px 8px; border-radius:10px;
}
.sms-hist-time {
  font-size:.72rem; color:#999; font-family:monospace;
}
.sms-hist-toggle {
  margin-left:auto;
  padding-left:6px;
  font-size:.7rem;
  color:#aaa;
  cursor:pointer;
  flex-shrink:0;
}

/* 항목 클릭 커서 */
.sms-hist-item { cursor:pointer; }
.sms-hist-item--open { background:#f0f7ff !important; }
.sms-hist-item--open .sms-hist-toggle i { color:#1565c0; }

/* 미리보기 (접힌 상태) */
.sms-hist-preview {
  font-size:.78rem; color:#777; line-height:1.5;
  word-break:break-all;
}
.sms-hist-ellipsis { color:#aaa; }

/* 전체 내용 (펼친 상태) */
.sms-hist-full {
  font-size:.8rem; color:#2c3e50; line-height:1.8;
  word-break:break-all;
  background:#f8fbff;
  border:1px solid #d0e8ff;
  border-radius:6px;
  padding:10px 12px;
  margin-top:6px;
  white-space:pre-wrap;
}
.sms-hist-full.hidden { display:none; }
.sms-hist-preview.hidden { display:none; }

/* 팝오버 너비 확장 (내용 잘 보이도록) */
.sms-hist-popover { width:360px; }
.sms-hist-body { max-height:400px; }

/* 페이지네이션 */
.pagination {
  display:flex; justify-content:center; align-items:center;
  gap:6px; padding:16px 20px;
  border-top:1px solid var(--border);
}
.page-btn {
  min-width:34px; height:34px; border-radius:var(--radius);
  border:1.5px solid var(--border); background:var(--white);
  font-size:.8rem; font-weight:500; color:var(--text-mid);
  display:flex; align-items:center; justify-content:center;
  transition:all var(--t); cursor:pointer; padding:0 8px;
}
.page-btn:hover   { border-color:var(--green-mid); color:var(--green-mid); }
.page-btn.active  { background:var(--green-deep); border-color:var(--green-deep); color:var(--white); }
.page-btn:disabled{ opacity:.4; cursor:not-allowed; }
.page-btn--edge   { background:var(--beige); color:var(--text-muted); font-size:.72rem; }
.page-btn--edge:hover:not(:disabled) { background:var(--green-deep); border-color:var(--green-deep); color:var(--white); }

/* ─── DRAWER ────────────────────────────────────────── */
.drawer-bg {
  position:fixed; inset:0; z-index:1100;
  background:rgba(0,0,0,.35); backdrop-filter:blur(4px);
}
.drawer {
  position:fixed; top:0; right:0; bottom:0; z-index:1200;
  width:480px; max-width:100vw;
  background:var(--white);
  box-shadow:-8px 0 40px rgba(0,0,0,.15);
  display:flex; flex-direction:column;
  transform:translateX(100%);
  transition:transform .38s var(--ease);
  overflow:hidden;
}
.drawer.open { transform:translateX(0); }
.drawer-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 24px;
  background:var(--green-deep);
  flex-shrink:0;
}
.drawer-title {
  font-family:var(--kr); font-size:1rem; font-weight:600;
  color:var(--white); letter-spacing:.03em;
}
.drawer-close {
  width:32px; height:32px; border-radius:6px;
  background:rgba(255,255,255,.1); border:none;
  color:rgba(255,255,255,.8); font-size:.95rem;
  display:flex; align-items:center; justify-content:center;
  transition:all var(--t);
}
.drawer-close:hover { background:rgba(255,255,255,.2); color:var(--white); }
.drawer-body { flex:1; overflow-y:auto; padding:28px 24px; }

/* ══════════════════════════════════════════════════════
   SITE SETTINGS  ·  테마 카드 (Android-style)
   ══════════════════════════════════════════════════════ */

/* 그리드 컨테이너 */
.ss-theme-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
  gap: 12px;
}

/* 개별 카드 */
.ss-theme-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 2px solid var(--beige-dark);
  border-radius: 16px;
  background: var(--white);
  overflow: hidden;
  cursor: pointer;
  transition: border-color .22s, box-shadow .22s, transform .18s;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.ss-theme-card:hover {
  border-color: #bbb;
  box-shadow: 0 4px 18px rgba(0,0,0,.10);
  transform: translateY(-2px);
}
.ss-theme-card.active {
  border-color: var(--tc-color, #c9a96a);
  box-shadow: 0 0 0 3px rgba(var(--tc-rgb, 201,169,106), .18),
              0 4px 20px rgba(0,0,0,.10);
  transform: translateY(-2px);
}

/* 팔레트 스와치 영역 */
.ss-theme-palette {
  display: flex;
  height: 44px;
  overflow: hidden;
  border-radius: 12px 12px 0 0;
}
.ss-theme-swatch {
  flex: 1;
  height: 100%;
}

/* 미리보기 영역 (버튼 + 바) */
.ss-theme-preview {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 10px 12px 8px;
  background: var(--beige);
  border-bottom: 1px solid var(--beige-dark);
}
.ss-theme-btn {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 20px;
  font-size: .7rem;
  font-weight: 700;
  color: #fff;
  background: var(--tc-color, #c9a96a);
  letter-spacing: .04em;
  pointer-events: none;
  white-space: nowrap;
}
.ss-theme-bar {
  width: 100%;
  height: 4px;
  border-radius: 4px;
  background: var(--tc-color, #c9a96a);
  opacity: .35;
}

/* 텍스트 정보 영역 */
.ss-theme-info {
  padding: 10px 12px 10px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ss-theme-name {
  font-size: .82rem;
  font-weight: 700;
  color: var(--text-dark);
  line-height: 1.3;
}
.ss-theme-desc {
  font-size: .7rem;
  color: var(--text-muted);
  line-height: 1.4;
}

/* 체크 아이콘 (active 시 표시) */
.ss-theme-check {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--tc-color, #c9a96a);
  color: #fff;
  font-size: .72rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: scale(.6);
  transition: opacity .18s, transform .18s;
  pointer-events: none;
  box-shadow: 0 2px 6px rgba(0,0,0,.18);
}
.ss-theme-card.active .ss-theme-check {
  opacity: 1;
  transform: scale(1);
}

/* 선택된 카드 이름 강조 */
.ss-theme-card.active .ss-theme-name {
  color: var(--tc-color, #c9a96a);
}

/* 리플 효과 */
.ss-theme-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: currentColor;
  opacity: 0;
  transition: opacity .12s;
  border-radius: inherit;
}
.ss-theme-card:active::after {
  opacity: .06;
}

/* 섹션 레이블 */
.ss-theme-section-label {
  font-size: .75rem;
  font-weight: 700;
  color: var(--text-muted);
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.ss-theme-section-label::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--beige-dark);
}

/* 커스텀 색상 영역 구분선 */
.ss-custom-divider {
  border: none;
  border-top: 1.5px dashed var(--beige-dark);
  margin: 6px 0 2px;
}

/* 반응형: 좁은 화면에서 2열 */
@media (max-width: 520px) {
  .ss-theme-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* 상세 정보 */
.detail-section { margin-bottom:28px; }
.detail-section-title {
  font-size:.65rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--gold); margin-bottom:14px; display:flex; align-items:center; gap:10px;
}
.detail-section-title::after { content:''; flex:1; height:1px; background:var(--beige-dark); }
.detail-rows { display:flex; flex-direction:column; gap:12px; }
.detail-row {
  display:flex; justify-content:space-between; align-items:flex-start; gap:12px;
}
.detail-label {
  font-size:.74rem; font-weight:600; letter-spacing:.05em; color:var(--text-muted);
  text-transform:uppercase; flex-shrink:0; margin-top:1px;
}
.detail-val { font-size:.88rem; color:var(--text-dark); text-align:right; }

.detail-status-wrap { margin-top:20px; }
.detail-status-label {
  font-size:.74rem; font-weight:600; letter-spacing:.06em; color:var(--text-muted);
  text-transform:uppercase; margin-bottom:10px;
}
.detail-status-btns { display:flex; gap:8px; flex-wrap:wrap; }
.status-change-btn {
  padding:9px 20px; border-radius:50px;
  font-size:.8rem; font-weight:600; border:2px solid transparent;
  transition:all var(--t);
}
.status-change-btn--wait {
  background:var(--status-wait-bg); color:var(--status-wait);
  border-color:var(--status-wait);
}
.status-change-btn--review {
  background:var(--status-review-bg); color:var(--status-review);
  border-color:var(--status-review);
}
.status-change-btn--confirm {
  background:var(--status-confirm-bg); color:var(--status-confirm);
  border-color:var(--status-confirm);
}
.status-change-btn--cancel {
  background:var(--status-cancel-bg); color:var(--status-cancel);
  border-color:var(--status-cancel);
}
.status-change-btn:hover { opacity:.75; }
.status-change-btn.current { opacity:1; }
.status-change-btn:not(.current) { opacity:.45; }

.detail-note {
  background:var(--beige); border-radius:8px; padding:14px 16px;
  font-size:.85rem; font-weight:300; color:var(--text-mid); line-height:1.7;
  margin-top:8px;
}

/* ─── STATS PAGE ────────────────────────────────────── */
.stats-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:20px;
}
.stats-card {
  background:var(--white); border-radius:var(--radius);
  border:1px solid var(--border); box-shadow:var(--shadow);
  padding:24px 26px;
}
.stats-card--wide { grid-column:1/3; }
.stats-card-title {
  font-size:.82rem; font-weight:700; color:var(--text-dark);
  margin-bottom:20px; display:flex; align-items:center; gap:8px;
}
.stats-card-title i { color:var(--gold); }

/* Donut */
.stats-donut-wrap { display:flex; align-items:center; gap:28px; flex-wrap:wrap; }
.donut-legend { display:flex; flex-direction:column; gap:10px; }
.legend-item { display:flex; align-items:center; gap:8px; font-size:.8rem; }
.legend-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }

/* Bar Chart (custom) */
.bar-chart-wrap { display:flex; flex-direction:column; gap:10px; }
.bar-row { display:flex; align-items:center; gap:12px; }
.bar-row-label { font-size:.74rem; color:var(--text-mid); min-width:130px; }
.bar-track { flex:1; height:10px; background:var(--beige-dark); border-radius:50px; overflow:hidden; }
.bar-fill  { height:100%; border-radius:50px; background:var(--green-mid); transition:width .8s var(--ease); }
.bar-count { font-size:.74rem; font-weight:600; color:var(--text-mid); min-width:28px; text-align:right; }

/* Option stats */
.option-stats { display:flex; flex-direction:column; gap:16px; }
.option-row {
  display:flex; align-items:center; justify-content:space-between;
  gap:16px;
}
.option-label { font-size:.8rem; font-weight:600; color:var(--text-mid); min-width:90px; }
.option-pills { display:flex; gap:8px; flex-wrap:wrap; }
.option-pill {
  padding:5px 14px; border-radius:50px; font-size:.76rem; font-weight:600;
  background:var(--green-light); color:var(--green-deep);
}
.option-pill span { margin-left:4px; opacity:.7; font-weight:400; }

/* ─── STATS COMMON ──────────────────────────────────── */
.stats-sub-label {
  margin-left:8px; font-size:.7rem; font-weight:400;
  color:var(--text-muted); background:var(--beige-dark);
  padding:2px 8px; border-radius:50px;
}
.stats-empty-msg {
  color:var(--text-muted); font-size:.82rem; padding:16px 0;
}

/* ─── ① 날짜별 예약 현황 ────────────────────────────── */
.date-stat-wrap { overflow-x:auto; padding-bottom:8px; }
.date-stat-grid {
  display:flex; gap:10px; align-items:flex-end;
  min-width:max-content; padding:8px 4px 0;
}
.date-stat-col {
  display:flex; flex-direction:column; align-items:center; gap:4px;
  min-width:52px;
}
.date-bar-wrap { height:110px; display:flex; align-items:flex-end; }
.date-bar-track {
  width:36px; height:100%; display:flex; align-items:flex-end;
  background:var(--beige-dark); border-radius:6px 6px 0 0; overflow:hidden;
}
.date-bar-fill {
  width:100%; background:linear-gradient(to top, #1a5c42, #2e8b57);
  border-radius:6px 6px 0 0; display:flex; align-items:flex-start;
  justify-content:center; transition:height .7s var(--ease); min-height:4px;
  position:relative;
}
.date-bar-val {
  font-size:.68rem; font-weight:700; color:#fff;
  margin-top:4px; text-shadow:0 1px 2px rgba(0,0,0,.3);
}
.date-bar-label { font-size:.72rem; font-weight:600; color:var(--text-mid); }
.date-bar-day   { font-size:.65rem; color:var(--text-muted); }
.date-bar-status { display:flex; gap:2px; flex-wrap:wrap; justify-content:center; margin-top:2px; }
.dsb {
  font-size:.58rem; font-weight:700; padding:1px 5px;
  border-radius:4px; line-height:1.6;
}
.dsb--confirm { background:var(--status-confirm-bg); color:var(--status-confirm); }
.dsb--review  { background:var(--status-review-bg);  color:var(--status-review); }
.dsb--wait    { background:var(--status-wait-bg);    color:var(--status-wait); }
.dsb--cancel  { background:var(--status-cancel-bg);  color:var(--status-cancel); }
.date-stat-legend {
  display:flex; gap:8px; flex-wrap:wrap;
  margin-top:14px; padding-top:12px;
  border-top:1px solid var(--beige-dark);
}

/* ─── ② 티타임별 예약 현황 ──────────────────────────── */
.tee-stat-wrap { display:flex; flex-direction:column; gap:20px; }
.tee-section   { display:flex; flex-direction:column; gap:8px; }
.tee-section-head {
  display:flex; align-items:center; gap:10px; margin-bottom:4px;
}
.tee-session-badge {
  font-size:.72rem; font-weight:700; padding:3px 12px;
  border-radius:50px;
}
.tee-section-total { font-size:.75rem; color:var(--text-muted); }
.tee-row   { display:flex; align-items:center; gap:10px; }
.tee-label { font-size:.75rem; font-weight:600; color:var(--text-mid); min-width:46px; font-family:monospace; }
.tee-track { flex:1; height:10px; background:var(--beige-dark); border-radius:50px; overflow:hidden; }
.tee-fill  { height:100%; border-radius:50px; transition:width .8s var(--ease); }
.tee-count { font-size:.74rem; font-weight:700; color:var(--text-mid); min-width:24px; text-align:right; }
.tee-pct   { font-size:.68rem; color:var(--text-muted); min-width:30px; text-align:right; }

/* ─── ③ 일별 접수 추이 ──────────────────────────────── */
.trend-summary {
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px;
  margin-bottom:20px;
}
.trend-kpi {
  background:var(--beige); border-radius:8px; padding:10px 12px;
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.trend-kpi-val   { font-size:1.3rem; font-weight:700; color:var(--green-mid); }
.trend-kpi-label { font-size:.68rem; color:var(--text-muted); }

.trend-bars {
  display:flex; gap:6px; align-items:flex-end;
  overflow-x:auto; padding:8px 2px 0; min-width:max-content;
}
.trend-col {
  display:flex; flex-direction:column; align-items:center; gap:3px;
  min-width:44px;
}
.trend-col--peak .trend-bar-inner { background:var(--gold) !important; }
.trend-col--peak .trend-col-val   { color:var(--gold); font-weight:800; }
.trend-col-val  { font-size:.68rem; font-weight:600; color:var(--text-mid); min-height:16px; }
.trend-bar-outer {
  width:32px; height:100px; background:var(--beige-dark);
  border-radius:6px 6px 0 0; display:flex; align-items:flex-end; overflow:hidden;
}
.trend-bar-inner {
  width:100%; background:linear-gradient(to top,#1a5c42,#2e8b57);
  border-radius:6px 6px 0 0; transition:height .8s var(--ease); min-height:3px;
}
.trend-col-date { font-size:.65rem; font-weight:600; color:var(--text-mid); }
.trend-col-day  { font-size:.6rem; color:var(--text-muted); }

/* ─── ⑤ 코스 × 날짜 교차 분석 ──────────────────────── */
.cross-wrap { overflow-x:auto; }
.cross-table-wrap { min-width:max-content; }
.cross-table {
  width:100%; border-collapse:collapse; font-size:.78rem;
}
.cross-table thead tr { border-bottom:2px solid var(--beige-dark); }
.cross-th {
  padding:8px 12px; text-align:center; font-weight:600;
  color:var(--text-mid); background:var(--beige);
  border:1px solid var(--beige-dark);
}
.cross-th--corner { text-align:left; min-width:90px; font-size:.7rem; color:var(--text-muted); }
.cross-th--total  { background:var(--green-light); color:var(--green-deep); }
.cross-course-label { font-size:.74rem; font-weight:700; color:var(--text-dark); }
.cross-course-total { font-size:.66rem; color:var(--text-muted); margin-top:2px; }

.cross-table tbody tr { border-bottom:1px solid var(--beige-dark); }
.cross-table tbody tr:hover { background:var(--beige); }
.cross-date-cell {
  padding:8px 12px; display:flex; align-items:center; gap:8px;
  border:1px solid var(--beige-dark); background:var(--beige);
}
.cross-date { font-size:.76rem; font-weight:600; color:var(--text-dark); }
.cross-day  { font-size:.66rem; font-weight:700; padding:1px 5px; border-radius:4px; }
.cross-day--mon,.cross-day--tue,.cross-day--wed,.cross-day--thu,.cross-day--fri {
  background:var(--green-light); color:var(--green-deep);
}
.cross-day--sat { background:#e8f0fb; color:#2980b9; }
.cross-day--sun { background:var(--status-cancel-bg); color:var(--status-cancel); }

.cross-cell {
  padding:8px 12px; text-align:center;
  border:1px solid var(--beige-dark); transition:background .2s;
}
.cross-val  { font-size:.8rem; font-weight:700; }
.cross-zero { color:var(--text-muted); font-size:.8rem; }
.cross-total-cell {
  padding:8px 12px; text-align:center; font-weight:700;
  font-size:.78rem; background:var(--green-light); color:var(--green-deep);
  border:1px solid var(--beige-dark);
}

/* ─── ⑥ 시간대별 접수 패턴 ──────────────────────────── */
.hourly-summary {
  display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-bottom:16px;
}
.hourly-period {
  display:flex; align-items:center; gap:6px;
  background:var(--beige); border-radius:8px; padding:8px 12px;
  font-size:.74rem;
}
.hourly-period-icon  { font-size:.95rem; }
.hourly-period-label { flex:1; color:var(--text-mid); font-weight:500; }
.hourly-period-val   { font-weight:700; color:var(--text-dark); }
.hourly-period-pct   { color:var(--text-muted); font-size:.68rem; }

.hourly-bars {
  display:flex; gap:3px; align-items:flex-end;
  overflow-x:auto; padding:4px 2px 0;
}
.hourly-col {
  display:flex; flex-direction:column; align-items:center; gap:2px;
  min-width:28px;
}
.hourly-col--peak .hourly-bar-inner { box-shadow:0 0 8px rgba(201,169,106,.6); }
.hourly-col-val   { font-size:.6rem; font-weight:600; color:var(--text-mid); min-height:14px; }
.hourly-bar-outer {
  width:20px; height:80px; background:var(--beige-dark);
  border-radius:4px 4px 0 0; display:flex; align-items:flex-end; overflow:hidden;
}
.hourly-bar-inner {
  width:100%; border-radius:4px 4px 0 0;
  transition:height .8s var(--ease);
}
.hourly-col-label { font-size:.58rem; color:var(--text-muted); }

/* ─── REGION STATS ──────────────────────────────────── */
.region-badge {
  margin-left:auto; font-size:.72rem; font-weight:600;
  color:var(--text-muted); background:var(--beige-dark);
  padding:2px 10px; border-radius:50px;
}
.region-refresh-btn {
  background:none; border:1px solid var(--border); border-radius:6px;
  padding:4px 8px; color:var(--text-muted); font-size:.75rem;
  transition:all .2s; margin-left:6px;
}
.region-refresh-btn:hover { background:var(--green-light); color:var(--green-mid); border-color:var(--green-mid); }
.region-refresh-btn.spinning i { animation:spin .7s linear infinite; }

.region-loading {
  display:flex; align-items:center; gap:10px;
  color:var(--text-muted); font-size:.82rem; padding:20px 0;
}
.region-loading i { color:var(--green-mid); }

.region-empty {
  display:flex; align-items:center; gap:10px;
  color:var(--text-muted); font-size:.82rem; padding:20px 0;
}
.region-empty i { color:var(--gold); }

.region-summary {
  display:flex; gap:12px; flex-wrap:wrap; margin-bottom:20px;
}
.region-summary-pill {
  display:flex; align-items:center; gap:6px;
  background:var(--green-light); border-radius:50px;
  padding:5px 14px; font-size:.76rem;
}
.region-summary-pill .rs-label { color:var(--green-deep); font-weight:600; }
.region-summary-pill .rs-count { color:var(--text-muted); font-weight:400; }

.region-bar-wrap { display:flex; flex-direction:column; gap:10px; }
.region-row { display:flex; align-items:center; gap:12px; }
.region-row-flag { font-size:1.1rem; min-width:24px; text-align:center; }
.region-row-label {
  font-size:.78rem; color:var(--text-mid); min-width:140px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.region-row-label small { display:block; font-size:.68rem; color:var(--text-muted); margin-top:1px; }
.region-track { flex:1; height:12px; background:var(--beige-dark); border-radius:50px; overflow:hidden; }
.region-fill  { height:100%; border-radius:50px; transition:width .9s cubic-bezier(.25,.8,.25,1); }
.region-count { font-size:.76rem; font-weight:700; color:var(--text-mid); min-width:36px; text-align:right; }
.region-pct   { font-size:.7rem; color:var(--text-muted); min-width:36px; text-align:right; }

.region-error {
  display:flex; align-items:center; gap:8px;
  color:var(--status-cancel); font-size:.8rem; padding:12px 0;
}

/* ─── MODAL ─────────────────────────────────────────── */
.modal-bg {
  position:fixed; inset:0; z-index:2000;
  background:rgba(0,0,0,.5); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.modal-box {
  background:var(--white); border-radius:16px; padding:44px 40px;
  max-width:400px; width:100%; text-align:center;
  box-shadow:0 30px 80px rgba(0,0,0,.25);
  animation:popIn .3s var(--ease);
}
@keyframes popIn { from{transform:scale(.88);opacity:0} to{transform:scale(1);opacity:1} }
.modal-icon { font-size:2.6rem; margin-bottom:16px; }
.modal-icon--danger { color:var(--status-cancel); }
.modal-title { font-family:var(--kr); font-size:1.1rem; font-weight:600; color:var(--text-dark); margin-bottom:8px; }
.modal-msg   { font-size:.85rem; color:var(--text-muted); margin-bottom:28px; line-height:1.6; }
.modal-actions { display:flex; gap:10px; justify-content:center; }
.modal-cancel {
  padding:11px 28px; border-radius:var(--radius); border:1.5px solid var(--border);
  background:var(--white); color:var(--text-mid); font-size:.88rem; font-weight:500;
  transition:all var(--t);
}
.modal-cancel:hover { border-color:var(--green-mid); color:var(--green-mid); }
.modal-confirm {
  padding:11px 28px; border-radius:var(--radius); border:none;
  background:var(--status-cancel); color:var(--white); font-size:.88rem; font-weight:600;
  transition:background var(--t);
}
.modal-confirm:hover { background:#a93226; }

/* ─── TOAST ─────────────────────────────────────────── */
.toast {
  position:fixed; bottom:28px; left:50%; transform:translateX(-50%) translateY(20px);
  z-index:3000; display:flex; align-items:center; gap:10px;
  background:var(--text-dark); color:var(--white);
  padding:13px 24px; border-radius:50px;
  font-size:.84rem; font-weight:500;
  box-shadow:0 8px 30px rgba(0,0,0,.25);
  opacity:0; pointer-events:none;
  transition:all .35s var(--ease);
}
.toast.show {
  opacity:1; pointer-events:all; transform:translateX(-50%) translateY(0);
}
.toast.toast--success .toast-icon { color:#4caf50; }
.toast.toast--error   .toast-icon { color:var(--status-cancel); }
.toast.toast--info    .toast-icon { color:var(--gold); }

/* ─── SCROLLBAR ─────────────────────────────────────── */
::-webkit-scrollbar { width:5px; height:5px; }
::-webkit-scrollbar-track { background:var(--bg); }
::-webkit-scrollbar-thumb { background:#ccc; border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:#aaa; }

/* ═══════════════════════════════════════════════════════
   RESPONSIVE  ≤ 1100px
   ═══════════════════════════════════════════════════════ */
@media (max-width:1100px) {
  .stat-cards { grid-template-columns:repeat(2,1fr); }
  .stats-grid { grid-template-columns:1fr; }
  .stats-card--wide { grid-column:1; }
}

/* ═══════════════════════════════════════════════════════
   RESPONSIVE  ≤ 860px  (tablet / mobile)
   ═══════════════════════════════════════════════════════ */
@media (max-width:860px) {
  :root { --sidebar-w:0px; }

  .sidebar {
    transform:translateX(-240px);
    width:240px;
  }
  .sidebar.open {
    transform:translateX(0);
    box-shadow:4px 0 24px rgba(0,0,0,.2);
  }
  .topbar { left:0; }
  .sidebar-toggle { display:flex; }

  .admin-main { margin-left:0; margin-top:60px; padding:16px; }

  .stat-cards { grid-template-columns:repeat(2,1fr); gap:12px; }
  .stat-card  { padding:16px 18px; }
  .stat-num   { font-size:1.5rem; }

  .filter-bar { flex-direction:column; align-items:stretch; }
  .filter-right { flex-direction:column; align-items:stretch; }
  .search-box input { width:100%; }

  .drawer { width:100vw; }

  /* 지역 통계 모바일 */
  .region-row-label { min-width:90px; font-size:.72rem; }
  .region-summary   { gap:8px; }

  /* 신규 통계 모바일 */
  .trend-summary    { grid-template-columns:repeat(2,1fr); }
  .hourly-summary   { grid-template-columns:1fr; }
  .cross-th, .cross-date-cell, .cross-cell, .cross-total-cell { padding:6px 8px; }
  .date-stat-col    { min-width:44px; }
  .date-bar-track   { width:30px; }

  /* topbar 모바일 */
  .topbar { padding:0 12px; gap:8px; }
  .topbar-right { gap:6px; }
  .topbar-user { display:none; }
  .topbar-date  { display:none; }

  /* 자동 새로고침 모바일 — 아이콘+카운트다운만 표시 */
  .ar-toggle-btn span:not(.ar-countdown) { display:none; }
  .ar-toggle-btn { padding:0 8px; min-width:34px; gap:3px; }
  .ar-countdown  { margin-left:0; min-width:24px; font-size:.65rem; }
  .ar-badge { display:none; }
}

@media (max-width:480px) {
  .stat-cards { grid-template-columns:1fr 1fr; gap:10px; }
  .stat-icon  { width:38px; height:38px; font-size:1rem; }
  .stat-num   { font-size:1.3rem; }

  /* topbar 초소형 */
  .topbar-title { font-size:.88rem; }
  .ar-countdown { display:none; }
}

/* ══════════════════════════════════════════
   날짜별 코스 설정 패널
   ── ts 섹션 디자인 언어와 통일
══════════════════════════════════════════ */

/* 패널 전체 래퍼 — ts-section-title 구분선과 동일 간격 */
.course-panel {
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--beige-dark);
}

/* 섹션 타이틀 — ts-section-title 과 동일 패턴 */
.course-panel-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}

.course-panel-title {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .85rem;
  font-weight: 700;
  color: var(--text-mid);
}

/* 세션 배지와 동일한 스타일 */
.course-panel-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 2px 10px;
  border-radius: 20px;
  font-size: .75rem;
  font-weight: 700;
  background: #e8f5ee;
  color: var(--green-mid);
}

.course-panel-sub {
  font-size: .78rem;
  color: var(--text-muted);
  margin-left: auto;
}

/* 코스 카드 목록 — ts-cards 와 동일 flex 구조 */
.course-checklist {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

/* 코스 토글 카드 — ts-card 와 동일한 디자인 */
.course-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  min-width: 90px;
  border: 1.5px solid var(--beige-dark);
  border-radius: 12px;
  background: var(--white);
  transition: all var(--t);
}

/* ══════════════════════════════════════════════════════
   SITE SETTINGS  ·  포함내역 카드 편집 + 일정 편집
   ══════════════════════════════════════════════════════ */

/* ─── 포함내역용 필드 그룹 (아이콘·제목·설명 세로 배치) ── */
.ss-field-group--3col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ss-field-group--3col .ss-field {
  width: 100%;
}
.ss-field-group--3col .ss-textarea--sm {
  resize: vertical;
  width: 100%;
}
.ss-field-group--nogap { margin-top: 0; }

/* ─── 포함내역 카드 블록 ─────────────────────── */
.ss-inc-cards {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.ss-inc-card-block {
  padding: 14px 0 14px;
  border-bottom: 1px solid var(--beige-dark);
}
.ss-inc-card-block:last-child { border-bottom: none; }
.ss-inc-card-block--excl {
  background: #fffdf5;
  border-radius: 8px;
  padding: 14px 12px;
  margin-top: 4px;
}

.ss-inc-card-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .78rem;
  font-weight: 700;
  color: var(--text-mid);
  margin-bottom: 10px;
}
.ss-inc-card-label i { color: var(--gold); font-size: .9rem; }

/* ─── 배지 (공통/A타입/B타입/별도) ──────────── */
.ss-badge-common {
  font-size: .62rem; font-weight: 700; letter-spacing: .08em;
  background: var(--beige-dark); color: var(--text-muted);
  padding: 2px 8px; border-radius: 50px;
}
.ss-badge-a {
  font-size: .62rem; font-weight: 700; letter-spacing: .08em;
  background: #e8f5ee; color: #1a5c42;
  padding: 2px 8px; border-radius: 50px;
}
.ss-badge-b {
  font-size: .62rem; font-weight: 700; letter-spacing: .08em;
  background: #fdf3e3; color: #8a5c00;
  padding: 2px 8px; border-radius: 50px;
}
.ss-badge-excl {
  font-size: .62rem; font-weight: 700; letter-spacing: .08em;
  background: #fff8e1; color: #b8860b;
  padding: 2px 8px; border-radius: 50px;
}

/* ══════════════════════════════════════════════════════
   ROOM ASSIGNMENT — 객실 배정
   ══════════════════════════════════════════════════════ */

/* ─── 테이블 컬럼 ────────────────────────────────────── */
.th-room {
  width: 110px;
  text-align: center;
  white-space: nowrap;
}
.td-room {
  text-align: center;
  padding: 6px 8px;
}
.room-assign-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 50px;
  font-size: .73rem;
  font-weight: 600;
  cursor: pointer;
  border: 1.5px solid;
  transition: all .18s;
  white-space: nowrap;
  line-height: 1.4;
}
.room-assign-btn--empty {
  background: #f4f6f8;
  color: var(--text-muted);
  border-color: var(--border);
}
.room-assign-btn--empty:hover {
  background: #e8f5ee;
  color: var(--green-deep);
  border-color: #7ac9a0;
}
.room-assign-btn--set {
  background: #e8f5ee;
  color: #1a5c42;
  border-color: #7ac9a0;
  max-width: 130px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.room-assign-btn--set:hover {
  background: #d0eedf;
  border-color: #3a9e72;
}

/* ─── 모달 배경 ──────────────────────────────────────── */
#roomModal.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeInBg .2s ease;
}
#roomModal.modal-backdrop.hidden { display: none !important; }
@keyframes fadeInBg {
  from { opacity:0; } to { opacity:1; }
}

/* ─── 모달 박스 ──────────────────────────────────────── */
.room-modal {
  background: var(--white);
  border-radius: 16px;
  width: 100%;
  max-width: 640px;
  max-height: 88vh;
  overflow-y: auto;
  box-shadow: 0 24px 64px rgba(0,0,0,.28);
  animation: slideUpModal .22s cubic-bezier(.34,1.3,.64,1);
  display: flex;
  flex-direction: column;
}
@keyframes slideUpModal {
  from { opacity:0; transform:translateY(28px) scale(.97); }
  to   { opacity:1; transform:none; }
}

/* ─── 모달 헤더 ──────────────────────────────────────── */
.room-modal-head {
  padding: 20px 22px 16px;
  border-bottom: 1px solid var(--border);
  position: relative;
  flex-shrink: 0;
}
.room-modal-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.room-modal-title-row i {
  font-size: 1.15rem;
  color: var(--gold);
}
.room-modal-title-row h3 {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text-dark);
  margin: 0;
}
.room-modal-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: .78rem;
  color: var(--text-muted);
}
.rm-meta-name, .rm-meta-date, .rm-meta-pkg {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: var(--beige);
  padding: 3px 10px;
  border-radius: 50px;
  font-weight: 500;
}
.rm-meta-name i { color: var(--green-deep); }
.rm-meta-date i { color: #2563eb; }
.rm-meta-pkg    { background: #e8f5ee; color: #1a5c42; }
.room-modal-close {
  position: absolute;
  top: 18px; right: 18px;
  width: 32px; height: 32px;
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: none;
  color: var(--text-muted);
  font-size: .88rem;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.room-modal-close:hover {
  background: var(--status-cancel-bg);
  color: var(--status-cancel);
  border-color: var(--status-cancel);
}

/* ─── 잔여 현황 바 ───────────────────────────────────── */
.room-avail-bar {
  padding: 12px 22px;
  background: var(--beige);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.room-avail-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .8rem;
  color: var(--text-mid);
  font-weight: 600;
}
.room-avail-label {
  flex: 1;
  color: var(--text-muted);
  font-weight: 500;
  font-size: .76rem;
}
.room-avail-used  { color: var(--green-deep); font-size: 1rem; font-weight: 800; }
.room-avail-sep   { color: var(--text-muted); }
.room-avail-total { color: var(--text-muted); }
.room-avail-unit  { color: var(--text-muted); font-size: .74rem; }
.room-avail-track {
  width: 90px;
  height: 6px;
  background: var(--border);
  border-radius: 50px;
  overflow: hidden;
  margin-left: 4px;
}
.room-avail-fill {
  height: 100%;
  background: var(--green-deep);
  border-radius: 50px;
  transition: width .35s ease;
}
.room-avail-fill--warn { background: #e67e22; }
.room-avail-fill--full { background: var(--status-cancel); }

/* ─── 객실 그리드 ────────────────────────────────────── */
.room-grid-wrap {
  padding: 18px 22px 4px;
  flex: 1;
  overflow-y: auto;
}
.room-type-group {
  margin-bottom: 18px;
}
.room-type-head {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 8px;
}
.room-type-icon {
  width: 26px; height: 26px;
  background: var(--beige-dark);
  border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
  font-size: .78rem;
  color: var(--text-mid);
}
.room-type-name {
  font-size: .84rem;
  font-weight: 700;
  color: var(--text-dark);
}
.room-type-cap {
  font-size: .74rem;
  color: var(--text-muted);
  margin-left: 2px;
}
.room-cell-row {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.room-cell {
  width: 48px; height: 40px;
  border-radius: 8px;
  border: 1.5px solid var(--border);
  background: var(--white);
  color: var(--text-dark);
  font-size: .78rem;
  font-weight: 600;
  cursor: pointer;
  transition: all .15s;
  display: flex; align-items: center; justify-content: center;
}
.room-cell:hover:not(:disabled) {
  border-color: var(--green-deep);
  background: #e8f5ee;
  color: var(--green-deep);
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(6,0,32,.1);
}
/* 선택된 (내 객실) */
.room-cell--mine {
  background: var(--green-deep);
  color: #fff;
  border-color: var(--green-deep);
  box-shadow: 0 3px 10px rgba(6,0,32,.25);
}
.room-cell--mine:hover:not(:disabled) {
  background: #1a1060;
  border-color: #1a1060;
  transform: none;
}
/* 타인 배정 (마감) */
.room-cell--taken {
  background: #f4f6f8;
  color: #c0c4cc;
  border-color: #dde2e8;
  cursor: not-allowed;
  position: relative;
}
.room-cell--taken::after {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 3px,
    rgba(0,0,0,.04) 3px,
    rgba(0,0,0,.04) 6px
  );
  border-radius: 7px;
}

/* ─── 현재 배정 표시줄 ───────────────────────────────── */
.room-current-wrap {
  margin: 4px 22px 14px;
  padding: 10px 16px;
  background: var(--beige);
  border-radius: 10px;
  border: 1.5px solid var(--border);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.room-current-label {
  font-size: .76rem;
  color: var(--text-muted);
  font-weight: 500;
  flex-shrink: 0;
}
.room-current-label i { color: var(--green-deep); margin-right: 3px; }
.room-current-val {
  font-size: .86rem;
  font-weight: 600;
  color: var(--text-muted);
}
.room-current-val--set {
  color: var(--green-deep);
  background: #e8f5ee;
  padding: 3px 12px;
  border-radius: 50px;
  border: 1px solid #7ac9a0;
}

/* ─── 모달 푸터 ──────────────────────────────────────── */
.room-modal-foot {
  padding: 14px 22px 18px;
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.room-btn {
  padding: 8px 18px;
  border-radius: 8px;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  border: 1.5px solid transparent;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all .15s;
}
.room-btn--clear {
  background: var(--beige-dark);
  color: var(--text-muted);
  border-color: var(--border);
  margin-right: auto;
}
.room-btn--clear:hover {
  background: var(--status-cancel-bg);
  color: var(--status-cancel);
  border-color: var(--status-cancel);
}
.room-btn--cancel {
  background: none;
  color: var(--text-muted);
  border-color: var(--border);
}
.room-btn--cancel:hover {
  background: var(--beige);
  color: var(--text-dark);
}
.room-btn--save {
  background: var(--green-deep);
  color: #fff;
  border-color: var(--green-deep);
  padding: 8px 24px;
}
.room-btn--save:hover {
  background: #1a1060;
  border-color: #1a1060;
  box-shadow: 0 4px 12px rgba(6,0,32,.2);
}
.room-btn--save:disabled {
  opacity: .6;
  cursor: not-allowed;
}

/* ─── drawer 객실 배정 배지 ─────────────────────────── */
.room-drawer-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #e8f5ee;
  color: #1a5c42;
  border: 1px solid #7ac9a0;
  padding: 3px 12px;
  border-radius: 50px;
  font-size: .78rem;
  font-weight: 700;
}

/* ─── 반응형 ─────────────────────────────────────────── */
@media (max-width: 600px) {
  .room-modal {
    max-width: 100%;
    max-height: 92vh;
    border-radius: 14px 14px 0 0;
    margin-top: auto;
  }
  #roomModal.modal-backdrop {
    align-items: flex-end;
    padding: 0;
  }
  .room-cell {
    width: 42px; height: 36px;
    font-size: .74rem;
  }
  .th-room { width: 90px; }
}

/* 힌트 인라인 */
.ss-hint-inline {
  font-size: .68rem; color: var(--text-muted);
  font-weight: 400; margin-left: 4px;
}

/* ─── 일정 편집 블록 ─────────────────────────── */
.ss-sched-day-block {
  border: 1.5px solid var(--beige-dark);
  border-radius: 10px;
  padding: 16px;
  margin-top: 14px;
  background: var(--bg);
}
.ss-sched-day-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .8rem;
  font-weight: 700;
  color: var(--green-deep);
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--beige-dark);
}
.ss-sched-day-label i { color: var(--gold); }

.ss-sched-timeline {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 10px;
}
.ss-sched-item {
  display: flex;
  flex-direction: column;   /* 세로 배치 — 번호 헤더 + 필드들 */
  gap: 8px;
  padding: 10px 14px 14px;
  border-radius: 8px;
  background: var(--white);
  border: 1px solid var(--beige-dark);
  transition: border-color .2s;
}
.ss-sched-item:focus-within { border-color: var(--gold); }
.ss-sched-item--a { border-left: 3px solid #1a5c42; }
.ss-sched-item--b { border-left: 3px solid #c07830; }

/* 번호: 상단 한 줄 헤더로 배치 */
.ss-sched-num {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .75rem;
  font-weight: 700;
  color: var(--text-muted);
  padding: 0;
  line-height: 1;
}

/* 번호 아래 필드 그룹은 전체 너비 사용 */
.ss-sched-item .ss-field-group--3col {
  width: 100%;
}

/* 숨김 상태 */
.course-card--off {
  opacity: .5;
  background: #f5f5f5;
}

.course-card-name {
  font-size: .82rem;
  font-weight: 700;
  color: var(--text-dark);
  text-align: center;
}

/* 토글 버튼 — ts-card-toggle 과 동일 */
.course-card-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: .72rem;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 20px;
  border: none;
  cursor: pointer;
  transition: all var(--t);
  white-space: nowrap;
}
.course-card-toggle i { font-size: .85rem; }

/* 노출 상태 */
.course-card-toggle--on {
  background: #e8f5ee;
  color: var(--green-mid);
}
.course-card-toggle--on:hover {
  background: var(--green-mid);
  color: var(--white);
}

/* 숨김 상태 */
.course-card-toggle--off {
  background: #f0f0f0;
  color: var(--text-muted);
}
.course-card-toggle--off:hover {
  background: var(--green-deep);
  color: var(--white);
}

/* 안내 텍스트 */
.course-panel-hint {
  font-size: .78rem;
  color: var(--text-muted);
  margin: 10px 0 0;
}

/* 날짜 미선택 시 비활성 */
.course-panel-body.disabled {
  opacity: .4;
  pointer-events: none;
}

/* ══════════════════════════════════════════
   SMS 템플릿 관리
══════════════════════════════════════════ */

/* 툴바 */
.sms-toolbar {
  display:flex; align-items:flex-start; justify-content:space-between;
  gap:16px; margin-bottom:20px; flex-wrap:wrap;
}
.sms-toolbar-left { flex:1; min-width:0; }
.sms-title {
  font-size:1.1rem; font-weight:700; color:var(--text-dark);
  display:flex; align-items:center; gap:8px; margin:0 0 4px;
}
.sms-title i { color:var(--green-mid); }
.sms-desc {
  font-size:.78rem; color:var(--text-muted); margin:0;
}
.sms-desc code {
  background:var(--beige); border:1px solid var(--border);
  border-radius:4px; padding:1px 5px; font-size:.74rem; color:var(--green-deep);
}

/* 카테고리 탭 */
.sms-category-tabs {
  display:flex; gap:6px; flex-wrap:wrap; margin-bottom:18px;
}
.sms-cat-btn {
  padding:5px 14px; border-radius:20px; border:1.5px solid var(--border);
  font-size:.78rem; font-weight:600; cursor:pointer;
  background:var(--white); color:var(--text-mid);
  transition:all var(--t);
}
.sms-cat-btn:hover  { border-color:var(--green-mid); color:var(--green-deep); }
.sms-cat-btn.active { background:var(--green-deep); border-color:var(--green-deep); color:var(--white); }

/* 그리드 */
.sms-grid {
  display:grid; grid-template-columns:repeat(auto-fill, minmax(280px,1fr)); gap:14px;
}
.sms-loading, .sms-empty {
  grid-column:1/-1; display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:10px; padding:48px 20px;
  color:var(--text-muted); font-size:.85rem;
}
.sms-empty i { font-size:2rem; color:var(--border); }

/* 카드 */
.sms-card {
  border:1.5px solid var(--beige-dark); border-radius:12px;
  background:var(--white); padding:14px 16px;
  display:flex; flex-direction:column; gap:8px;
  transition:all var(--t);
}
.sms-card:hover { border-color:var(--green-mid); box-shadow:0 2px 10px rgba(26,92,66,.08); }
.sms-card-top {
  display:flex; align-items:center; gap:8px;
}
.sms-card-cat {
  font-size:.65rem; font-weight:700; padding:2px 8px;
  border-radius:20px; white-space:nowrap;
}
.sms-cat--confirm { background:#e8f5ee; color:#1a5c42; }
.sms-cat--cancel  { background:#fbe9e7; color:#c62828; }
.sms-cat--info    { background:#e3f2fd; color:#1565c0; }
.sms-cat--etc     { background:#f5f5f5; color:#666; }

.sms-card-name {
  flex:1; font-size:.85rem; font-weight:600; color:var(--text-dark);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.sms-card-actions { display:flex; gap:4px; margin-left:auto; flex-shrink:0; }
.sms-card-btn {
  width:28px; height:28px; border-radius:6px; border:none;
  cursor:pointer; font-size:.75rem;
  display:flex; align-items:center; justify-content:center;
  transition:all var(--t);
}
.sms-card-btn--edit { background:var(--beige); color:var(--text-mid); }
.sms-card-btn--edit:hover { background:var(--green-deep); color:var(--white); }
.sms-card-btn--del  { background:var(--status-cancel-bg); color:var(--status-cancel); }
.sms-card-btn--del:hover  { background:var(--status-cancel); color:var(--white); }

.sms-card-preview {
  font-size:.75rem; color:var(--text-muted); line-height:1.5;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* 드로어 문자발송 버튼 */
.sms-drawer-btn {
  display:flex; align-items:center; gap:6px;
  padding:7px 16px; border-radius:var(--radius); border:none;
  background:#e3f2fd; color:#1565c0;
  font-size:.82rem; font-weight:600; cursor:pointer;
  transition:all var(--t);
}
.sms-drawer-btn:hover { background:#1565c0; color:var(--white); }
.sms-drawer-btn i { font-size:.85rem; }

/* ── 패키지 설정 모달 전용 — modal-box 전역 padding 재정의 ── */
#pkgSettingModal .modal-box {
  padding: 0 !important;
  text-align: left !important;
  border-radius: 16px !important;
  overflow: hidden;
}
/* sms-modal-body flex → block으로 변경 (그리드 레이아웃 올바르게 적용) */
#pkgSettingModal .sms-modal-body {
  display: block !important;
  padding: 18px 20px !important;
  max-height: 72vh !important;
  overflow-y: auto !important;
  box-sizing: border-box;
}
#pkgSettingModal .sms-modal-body > * + * {
  margin-top: 14px;
}

/* ── 발송 모달 ──────────────────────────── */
.sms-modal-box {
  max-width:600px !important; width:96% !important;
  padding:0 !important; overflow:hidden;
  border-radius:16px !important;
}
.sms-tpl-modal-box {
  max-width:620px !important; width:96% !important;
  padding:0 !important; overflow:hidden;
  border-radius:16px !important;
}
.sms-modal-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 22px 16px; border-bottom:1px solid var(--beige-dark);
  background:var(--beige);
}
.sms-modal-title {
  display:flex; align-items:center; gap:8px;
  font-size:1rem; font-weight:700; color:var(--text-dark);
}
.sms-modal-title i { color:var(--green-mid); }

/* SMS 모달 전용 닫기 버튼 (밝은 배경용) */
.sms-modal-header .drawer-close {
  background:transparent;
  color:var(--text-muted);
  border:1.5px solid var(--border);
}
.sms-modal-header .drawer-close:hover {
  background:var(--status-cancel-bg);
  color:var(--status-cancel);
  border-color:var(--status-cancel);
}

.sms-modal-body {
  padding:20px 22px; display:flex; flex-direction:column; gap:14px;
  max-height:65vh; overflow-y:auto;
}

/* 수신자 바 */
.sms-recv-bar {
  display:flex; align-items:center; gap:8px;
  background:var(--beige); border:1px solid var(--border);
  border-radius:8px; padding:8px 14px;
  font-size:.82rem; color:var(--text-dark); font-weight:600;
}
.sms-recv-bar i { color:var(--green-mid); }
.sms-recv-phone {
  margin-left:auto; font-family:'Inter',sans-serif;
  font-size:.82rem; color:var(--text-mid); font-weight:400;
}

/* 필드 공통 */
.sms-field { display:flex; flex-direction:column; gap:5px; }
.sms-label {
  font-size:.78rem; font-weight:600; color:var(--text-mid);
  display:flex; align-items:center; justify-content:space-between;
}
.sms-char-count { font-size:.72rem; color:var(--text-muted); font-weight:400; }
.sms-select, .sms-input {
  width:100%; padding:8px 12px; border-radius:8px;
  border:1.5px solid var(--border); font-size:.85rem;
  background:var(--white); color:var(--text-dark);
  transition:border var(--t);
}
.sms-select:focus, .sms-input:focus {
  outline:none; border-color:var(--green-mid);
}
.sms-textarea {
  width:100%; padding:10px 12px; border-radius:8px;
  border:1.5px solid var(--border); font-size:.83rem;
  background:var(--white); color:var(--text-dark);
  line-height:1.65; resize:vertical; min-height:160px;
  font-family:'Noto Sans KR',sans-serif;
  transition:border var(--t);
}
.sms-textarea:focus { outline:none; border-color:var(--green-mid); }
.sms-hint {
  font-size:.74rem; color:var(--text-muted); margin:0;
  display:flex; align-items:flex-start; gap:5px; line-height:1.5;
}
.sms-hint i { color:var(--gold); margin-top:1px; flex-shrink:0; }

/* 변수 칩 */
.sms-var-chips { display:flex; flex-wrap:wrap; gap:6px; }
.sms-var-chip {
  padding:3px 10px; border-radius:20px;
  border:1.5px solid var(--green-mid); background:var(--green-light);
  color:var(--green-deep); font-size:.74rem; font-weight:600;
  cursor:pointer; transition:all var(--t);
}
.sms-var-chip:hover { background:var(--green-deep); color:var(--white); border-color:var(--green-deep); }

/* 모달 푸터 */
.sms-modal-footer {
  display:flex; gap:10px; justify-content:flex-end;
  padding:14px 22px 18px; border-top:1px solid var(--beige-dark);
  background:var(--beige);
}
.sms-btn {
  display:flex; align-items:center; gap:6px;
  padding:9px 18px; border-radius:var(--radius); border:none;
  font-size:.84rem; font-weight:600; cursor:pointer;
  transition:all var(--t);
}
.sms-btn--copy   { background:var(--beige); color:var(--text-mid); border:1.5px solid var(--border); }
.sms-btn--copy:hover  { background:var(--text-dark); color:var(--white); border-color:var(--text-dark); }
.sms-btn--sms    { background:#1565c0; color:var(--white); }
.sms-btn--sms:hover   { background:#0d47a1; }
.sms-btn--solapi { background:#1a5c42; color:var(--white); }
.sms-btn--solapi:hover { background:#0f3d28; }
.sms-btn--solapi:disabled { opacity:.6; cursor:not-allowed; }
.sms-btn--save   { background:var(--green-deep); color:var(--white); }
.sms-btn--save:hover  { background:#0f3d28; }
.sms-btn--cancel { background:var(--beige); color:var(--text-mid); border:1.5px solid var(--border); }
.sms-btn--cancel:hover { background:#eee; }

/* 발송 결과 */
.sms-result {
  margin:0 22px; padding:10px 14px;
  border-radius:8px; font-size:.8rem; line-height:1.6;
  display:flex; align-items:flex-start; gap:8px;
}
.sms-result.hidden { display:none; }
.sms-result--ok  { background:#e8f5ee; color:#1a5c42; border:1px solid #b2dfcc; }
.sms-result--ok  i { color:#1a5c42; margin-top:2px; flex-shrink:0; }
.sms-result--err { background:#fbe9e7; color:#c62828; border:1px solid #f5c0b8; }
.sms-result--err i { color:#c62828; margin-top:2px; flex-shrink:0; }

/* 모바일 */
@media (max-width:860px) {
  .sms-grid { grid-template-columns:1fr; }
  .sms-modal-body { max-height:55vh; }
  .sms-modal-footer { flex-direction:column; }
  .sms-btn { width:100%; justify-content:center; }
  .sms-result { margin:0 16px; }
}

@media (max-width: 600px) {
  .course-check-label { min-width: 72px; padding: 10px 10px; }
  .course-check-name  { font-size: .76rem; }
}

/* ═══════════════════════════════════════════
   일괄 SMS 발송 버튼
═══════════════════════════════════════════ */
.action-btn--sms-bulk {
  background:#1565c0; color:var(--white);
  border:1.5px solid #1565c0;
}
.action-btn--sms-bulk:hover { background:#0d47a1; }

/* ═══════════════════════════════════════════
   일괄 SMS 발송 모달
═══════════════════════════════════════════ */
/* ═══════════════════════════════════════════
   일괄 SMS 발송 모달 (2컬럼 레이아웃)
═══════════════════════════════════════════ */
.bulk-sms-modal-box {
  width: min(1000px, 96vw) !important;
  max-width: min(1000px, 96vw) !important;
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0 !important;
  text-align: left !important;
}

/* 수신자 수 배지 */
.bulk-sms-count-badge {
  display: inline-flex;
  align-items: center;
  background: #1565c0;
  color: #fff;
  font-size: .72rem;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 20px;
  margin-left: 8px;
}

/* ── 2컬럼 본문 레이아웃 ── */
.bulk-sms-layout {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 0;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* 왼쪽: 수신자 목록 */
.bulk-sms-left {
  display: flex;
  flex-direction: column;
  border-right: 1.5px solid var(--border);
  overflow: hidden;
  background: var(--beige);
}
.bulk-col-title {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 18px 12px;
  font-size: .82rem;
  font-weight: 700;
  color: var(--text-mid);
  border-bottom: 1.5px solid var(--border);
  background: var(--beige-dark);
  flex-shrink: 0;
}
.bulk-col-title i { color: var(--green-mid); }

.bulk-recv-list-full {
  flex: 1;
  overflow-y: auto;
  padding: 6px 0;
}

.bulk-recv-item {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 10px;
  padding: 10px 18px;
  font-size: .82rem;
  border-bottom: 1px solid var(--border);
  align-items: center;
}
.bulk-recv-item:last-child { border-bottom: none; }
.bulk-recv-item:hover { background: rgba(26,92,66,.04); }

.bulk-recv-name {
  font-weight: 700;
  color: var(--text-dark);
  grid-column: 1 / -1;
  font-size: .85rem;
}
.bulk-recv-phone {
  color: var(--text-mid);
  font-family: monospace;
  font-size: .8rem;
}
.bulk-recv-date  { color: var(--text-muted); font-size: .78rem; text-align: right; }
.bulk-recv-course {
  font-size: .72rem;
  background: #e8f5ee;
  color: #1a5c42;
  border-radius: 4px;
  padding: 2px 8px;
  white-space: nowrap;
  font-weight: 600;
  display: inline-block;
  grid-column: 1 / -1;
}

/* 오른쪽: 템플릿 + 내용 */
.bulk-sms-right {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 20px 24px;
  overflow-y: auto;
  background: var(--white);
}

/* textarea 높이를 우측 컬럼에 꽉 채움 */
.bulk-sms-textarea {
  flex: 1;
  min-height: 200px;
  resize: vertical;
}

/* 발송 진행 상태 */
.bulk-sms-progress {
  padding: 14px;
  background: #f7f8fa;
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
}
.bulk-sms-progress.hidden { display: none; }

.bulk-progress-bar-wrap {
  width: 100%;
  height: 8px;
  background: var(--border);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 8px;
}
.bulk-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, #1565c0, #1a5c42);
  border-radius: 4px;
  transition: width .3s ease;
}
.bulk-progress-info {
  font-size: .8rem;
  font-weight: 600;
  color: var(--text-mid);
  margin-bottom: 8px;
}
.bulk-progress-log {
  max-height: 130px;
  overflow-y: auto;
  font-size: .75rem;
  line-height: 1.6;
}
.bulk-log-item {
  padding: 2px 6px;
  border-radius: 4px;
  margin-bottom: 2px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.bulk-log--ok   { color: #1a5c42; background: #e8f5ee; }
.bulk-log--fail { color: #c62828; background: #fbe9e7; }

/* 발송 결과 요약 */
.bulk-sms-result {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 10px 16px;
  background: var(--beige);
  border-radius: var(--radius);
  border: 1.5px solid var(--border);
  font-size: .85rem;
  font-weight: 600;
}
.bulk-sms-result.hidden { display: none; }
.bulk-result-ok   { color: #1a5c42; display:flex; align-items:center; gap:6px; }
.bulk-result-fail { color: #c62828; display:flex; align-items:center; gap:6px; }
.bulk-result-ok   strong,
.bulk-result-fail strong { font-size:1.05rem; }

/* 모바일: 1컬럼으로 전환 */
@media (max-width: 700px) {
  .bulk-sms-layout {
    grid-template-columns: 1fr;
    grid-template-rows: 220px 1fr;
  }
  .bulk-sms-left  { border-right: none; border-bottom: 1.5px solid var(--border); }
  .bulk-sms-right { padding: 16px; }
  .bulk-sms-result { flex-direction: column; gap: 8px; align-items: flex-start; }
}


/* ══════════════════════════════════════════════════════
   AGENCY MANAGEMENT — 여행사 파트너 관리
   ══════════════════════════════════════════════════════ */

/* 래퍼 */
.ag-wrap { max-width: 1300px; overflow-x: visible; }

/* 툴바 */
.ag-toolbar {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; margin-bottom: 24px; flex-wrap: wrap;
}
.ag-toolbar-left { flex: 1; min-width: 0; }
.ag-title {
  font-size: 1.25rem; font-weight: 700; color: var(--text-dark);
  display: flex; align-items: center; gap: 9px; margin-bottom: 5px;
}
.ag-title i { color: var(--gold); }
.ag-desc { font-size: .82rem; color: var(--text-muted); line-height: 1.5; }
.ag-desc b { color: var(--text-dark); }
.ag-toolbar-btns { display: flex; gap: 8px; flex-shrink: 0; flex-wrap: wrap; }

/* 요약 카드 */
.ag-stat-row {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 14px; margin-bottom: 22px;
}
.ag-stat-card {
  background: var(--white); border: 1.5px solid var(--border);
  border-radius: 12px; padding: 16px 18px;
  display: flex; align-items: center; gap: 14px;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
  transition: box-shadow .18s;
}
.ag-stat-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.ag-stat-icon {
  width: 44px; height: 44px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem; flex-shrink: 0;
}
.ag-stat-icon--total   { background: #eff6ff; color: #2563eb; }
.ag-stat-icon--active  { background: #ecfdf5; color: #059669; }
.ag-stat-icon--resv    { background: #fef9ec; color: #d97706; }
.ag-stat-icon--pending { background: #fdf4ff; color: #7c3aed; }
.ag-stat-num  { font-size: 1.55rem; font-weight: 700; color: var(--text-dark); line-height: 1; }
.ag-stat-label{ font-size: .75rem; color: var(--text-muted); margin-top: 3px; }

/* 검색 + 필터 바 */
.ag-filter-bar {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px; flex-wrap: wrap;
}
.ag-search-wrap {
  display: flex; align-items: center; gap: 8px;
  background: var(--white); border: 1.5px solid var(--border);
  border-radius: 8px; padding: 7px 12px; flex: 1; min-width: 200px;
}
.ag-search-wrap i { color: var(--text-muted); font-size: .85rem; }
.ag-search-input {
  border: none; outline: none; background: transparent;
  font-size: .88rem; color: var(--text-dark); width: 100%;
}
.ag-status-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.ag-tab {
  padding: 6px 14px; border-radius: 20px; border: 1.5px solid var(--border);
  background: var(--white); font-size: .78rem; font-weight: 600;
  color: var(--text-muted); cursor: pointer; transition: all .15s;
}
.ag-tab:hover { background: var(--bg); }
.ag-tab.active { background: var(--green-deep); color: var(--white); border-color: var(--green-deep); }

/* 테이블 */
.ag-table-wrap {
  background: var(--white); border: 1.5px solid var(--border);
  border-radius: 12px; overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.ag-table { width: 100%; border-collapse: collapse; }
.ag-table thead tr {
  background: var(--bg); border-bottom: 1.5px solid var(--border);
}
.ag-table th {
  padding: 10px 14px; font-size: .75rem; font-weight: 700;
  color: var(--text-muted); text-align: left; white-space: nowrap;
  letter-spacing: .03em;
}
.ag-th-name    { width: 18%; }
.ag-th-code    { width: 10%; }
.ag-th-id      { width: 12%; }
.ag-th-contact { width: 14%; }
.ag-th-status  { width: 8%; text-align: center; }
.ag-th-resv    { width: 8%; text-align: center; }
.ag-th-link    { width: 20%; }
.ag-th-actions { width: 10%; text-align: center; }

.ag-table tbody tr {
  border-bottom: 1px solid var(--border);
  transition: background .14s;
}
.ag-table tbody tr:last-child { border-bottom: none; }
.ag-table tbody tr:hover { background: #f9fbff; }
.ag-table td { padding: 11px 14px; font-size: .84rem; color: var(--text-dark); vertical-align: middle; }

/* 여행사명 셀 */
.ag-cell-name { font-weight: 600; }
.ag-cell-sub  { font-size: .73rem; color: var(--text-muted); margin-top: 2px; }

/* 상태 배지 */
.ag-status-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 20px; font-size: .72rem; font-weight: 700;
}
.ag-status-badge--active    { background: #ecfdf5; color: #059669; }
.ag-status-badge--pending   { background: #fdf4ff; color: #7c3aed; }
.ag-status-badge--suspended { background: #fef2f2; color: #dc2626; }

/* 예약수 */
.ag-resv-num {
  font-size: 1.05rem; font-weight: 700; color: var(--text-dark);
  text-align: center; display: block;
}
.ag-resv-num--zero { color: var(--text-muted); font-weight: 400; }

/* 전용 링크 셀 */
.ag-link-cell {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.ag-link-url {
  font-size: .72rem; color: #2563eb; font-family: monospace;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 160px; display: inline-block;
}
.ag-copy-tiny {
  padding: 3px 8px; border-radius: 5px; border: 1px solid var(--border);
  background: var(--white); font-size: .68rem; color: var(--text-muted);
  cursor: pointer; transition: all .14s; white-space: nowrap;
}
.ag-copy-tiny:hover { background: var(--bg); color: var(--text-dark); }

/* 액션 버튼 */
.ag-action-btns { display: flex; gap: 5px; justify-content: center; }
.ag-action-btn {
  width: 30px; height: 30px; border-radius: 7px; border: 1.5px solid var(--border);
  background: var(--white); font-size: .78rem; color: var(--text-muted);
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: all .14s;
}
.ag-action-btn:hover { background: var(--bg); color: var(--text-dark); }
.ag-action-btn--edit:hover  { border-color: #2563eb; color: #2563eb; background: #eff6ff; }
.ag-action-btn--del:hover   { border-color: #dc2626; color: #dc2626; background: #fef2f2; }
.ag-action-btn--resv:hover  { border-color: var(--gold); color: var(--gold); background: #fefce8; }

/* 빈 상태 */
.ag-empty { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 48px; color: var(--text-muted); font-size: .9rem; }
.ag-empty i { font-size: 1.4rem; }

/* ── 여행사 추가/수정 모달 ── */
.ag-modal-box {
  width: 640px; max-width: 96vw; max-height: 90vh;
  display: flex; flex-direction: column; overflow: hidden;
  border-radius: 16px;
}
.ag-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 22px 16px; border-bottom: 1.5px solid var(--border);
  flex-shrink: 0;
}
.ag-modal-title {
  font-size: 1rem; font-weight: 700; color: var(--text-dark);
  display: flex; align-items: center; gap: 8px;
}
.ag-modal-title i { color: var(--gold); }
.ag-modal-body {
  padding: 20px 22px; overflow-y: auto; flex: 1;
}
.ag-form-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 14px 18px;
}
.ag-fg--full { grid-column: 1 / -1; }
.ag-form-group { display: flex; flex-direction: column; gap: 5px; }
.ag-form-label {
  font-size: .78rem; font-weight: 600; color: var(--text-mid);
  display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
}
.ag-form-label .req { color: #dc2626; }
.ag-form-hint { font-size: .7rem; color: var(--text-muted); font-weight: 400; }
.ag-form-input, .ag-form-select, .ag-form-textarea {
  padding: 8px 11px; border: 1.5px solid var(--border); border-radius: 7px;
  font-size: .85rem; color: var(--text-dark); outline: none;
  transition: border-color .15s;
  font-family: var(--sans);
}
.ag-form-input:focus, .ag-form-select:focus, .ag-form-textarea:focus {
  border-color: var(--gold);
}
.ag-form-input.is-invalid, .ag-form-select.is-invalid { border-color: #dc2626; }
.ag-form-textarea { resize: vertical; min-height: 56px; }
.ag-pw-wrap { position: relative; display: flex; align-items: center; }
.ag-pw-wrap .ag-form-input { flex: 1; padding-right: 36px; }
.ag-eye-btn {
  position: absolute; right: 8px; background: none; border: none;
  color: var(--text-muted); cursor: pointer; font-size: .85rem;
  padding: 4px; display: flex; align-items: center; justify-content: center;
}
/* 링크 미리보기 */
.ag-link-preview {
  margin-top: 16px; background: var(--bg); border-radius: 9px;
  padding: 13px 15px; border: 1.5px solid var(--border);
}
.ag-link-preview-label {
  font-size: .73rem; font-weight: 700; color: var(--text-muted);
  margin-bottom: 6px; display: flex; align-items: center; gap: 5px;
}
.ag-link-preview-row { display: flex; align-items: center; gap: 8px; }
.ag-link-preview-url {
  font-size: .78rem; color: #2563eb; font-family: monospace;
  word-break: break-all; flex: 1; line-height: 1.4;
}
.ag-copy-btn {
  padding: 5px 12px; border-radius: 6px; border: 1.5px solid var(--border);
  background: var(--white); font-size: .75rem; color: var(--text-mid);
  cursor: pointer; white-space: nowrap; transition: all .14s;
  display: flex; align-items: center; gap: 4px;
}
.ag-copy-btn:hover { background: var(--green-deep); color: var(--white); border-color: var(--green-deep); }
.ag-modal-foot {
  padding: 14px 22px; border-top: 1.5px solid var(--border);
  display: flex; justify-content: flex-end; gap: 8px;
  flex-shrink: 0;
}
.ag-foot-btn {
  padding: 9px 22px; border-radius: 8px; font-size: .86rem; font-weight: 600;
  cursor: pointer; transition: all .15s; border: none;
}
.ag-foot-btn--cancel { background: var(--bg); color: var(--text-mid); border: 1.5px solid var(--border); }
.ag-foot-btn--cancel:hover { background: var(--border); }
.ag-foot-btn--save { background: var(--green-deep); color: var(--white); display: flex; align-items: center; gap: 7px; }
.ag-foot-btn--save:hover { background: #0d0a4a; }
.ag-foot-btn--save:disabled { opacity: .6; cursor: not-allowed; }

/* 반응형 */
@media (max-width: 900px) {
  .ag-stat-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .ag-stat-row { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .ag-wrap { padding: 14px; }
  .ag-toolbar { flex-direction: column; }
  .ag-form-grid { grid-template-columns: 1fr; }
  .ag-fg--full { grid-column: 1; }
  .ag-table { font-size: .78rem; }
  .ag-th-link, .ag-link-cell { display: none; }
}


/* ══════════════════════════════════════════════════════
   PACKAGE SETTINGS VIEW
   ══════════════════════════════════════════════════════ */

/* ─── 활성 패키지 요약 카드 ───────────────────────────── */
.pkg-active-card {
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow: hidden;
  border-left: 5px solid #1a7a4a;
  margin-bottom: 24px;
}
.pkg-active-badge {
  background: #e8f6ee;
  padding: 12px 20px;
  font-family: var(--kr); font-size: .76rem; font-weight: 600;
  color: #1a5c42; letter-spacing: .08em;
  border-bottom: 1px solid rgba(26,122,74,.12);
  display: flex; align-items: center; gap: 8px;
}
.pkg-active-body { padding: 20px 24px; }
.pkg-active-loading {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--kr); font-size: .84rem; color: var(--text-muted);
}
.pkg-active-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 18px;
}
.pkg-active-item {
  display: flex; flex-direction: column; gap: 4px;
}
.pkg-active-item--full { grid-column: 1 / -1; }
.pkg-active-label {
  font-family: var(--kr); font-size: .7rem; font-weight: 600;
  color: var(--text-muted); letter-spacing: .1em; text-transform: uppercase;
}
.pkg-active-val {
  font-family: var(--kr); font-size: .9rem; font-weight: 500;
  color: var(--text-dark);
}
.pkg-price {
  color: #1a7a4a !important; font-weight: 700 !important;
  font-size: 1rem !important;
}

/* ─── 패키지 설정 모달 ───────────────────────────────── */
#pkgSettingModal .sms-modal-header {
  background: linear-gradient(135deg, #0d2b1a 0%, #1a4d2e 100%);
  padding: 18px 24px;
}
#pkgSettingModal .sms-modal-title {
  color: #fff;
  font-size: .95rem; font-weight: 600; letter-spacing: .06em;
  display: flex; align-items: center; gap: 10px;
}
#pkgSettingModal .sms-modal-title i { color: #c9a84c; }
#pkgSettingModal .drawer-close { color: rgba(255,255,255,.7); }
#pkgSettingModal .drawer-close:hover { color: #fff; }

#pkgSettingModal .sms-modal-body { padding: 24px; }
#pkgSettingModal .sms-field { margin-bottom: 18px; }
#pkgSettingModal .sms-label {
  display: block; font-size: .78rem; font-weight: 600;
  color: var(--text-mid); letter-spacing: .06em; margin-bottom: 7px;
}
#pkgSettingModal .sms-label .req { color: #c0392b; margin-left: 3px; }
#pkgSettingModal .sms-input {
  width: 100%; padding: 10px 13px;
  border: 1.5px solid var(--border); border-radius: 6px;
  font-size: .88rem; color: var(--text-dark);
  transition: border-color .25s;
  background: var(--white);
}
#pkgSettingModal .sms-input:focus {
  outline: none; border-color: #1a4d2e;
  box-shadow: 0 0 0 3px rgba(26,77,46,.1);
}
#pkgSettingModal .sms-textarea {
  width: 100%; padding: 10px 13px;
  border: 1.5px solid var(--border); border-radius: 6px;
  font-size: .88rem; color: var(--text-dark); resize: vertical;
  transition: border-color .25s; background: var(--white);
}
#pkgSettingModal .sms-textarea:focus {
  outline: none; border-color: #1a4d2e;
  box-shadow: 0 0 0 3px rgba(26,77,46,.1);
}

#pkgSettingModal .sms-modal-footer {
  display: flex; justify-content: flex-end; gap: 12px;
  padding: 16px 24px;
  border-top: 1px solid var(--border);
  background: var(--bg);
}
#pkgSettingModal .sms-btn {
  padding: 10px 24px; border-radius: 6px;
  font-family: var(--kr); font-size: .86rem; font-weight: 500;
  letter-spacing: .06em; border: none; cursor: pointer;
  transition: all .25s;
}
#pkgSettingModal .sms-btn--cancel {
  background: var(--white); color: var(--text-mid);
  border: 1.5px solid var(--border);
}
#pkgSettingModal .sms-btn--cancel:hover { background: var(--bg); }
#pkgSettingModal .sms-btn--save {
  background: #1a4d2e; color: #fff;
  display: flex; align-items: center; gap: 8px;
  box-shadow: 0 4px 16px rgba(26,77,46,.22);
}
#pkgSettingModal .sms-btn--save:hover {
  background: #0d2b1a;
  box-shadow: 0 6px 22px rgba(26,77,46,.32);
}
#pkgSettingModal .sms-btn--save:disabled {
  opacity: .6; cursor: not-allowed;
}

.pkg-activate-btn {
  background: none; border: 1.5px solid #1a7a4a;
  border-radius: 5px; padding: 5px 8px;
  color: #1a7a4a; cursor: pointer; font-size: .82rem;
  transition: all .22s;
}
.pkg-activate-btn:hover {
  background: #e8f6ee; color: #0d4a28;
}


/* ══════════════════════════════════════════════════════
   BLOCKED CALENDAR  ·  체크인 일자별 마감 관리
══════════════════════════════════════════════════════ */

/* 전체 래퍼 */
.blk-cal-wrap {
  background: var(--white);
  border: 1.5px solid #e0e8e0;
  border-radius: 14px;
  margin-top: 18px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(26,77,46,.07);
}
.blk-cal-wrap.hidden { display: none; }

/* 헤더 */
.blk-cal-header {
  background: linear-gradient(135deg, #1a4d2e 0%, #2d7a4f 100%);
  padding: 18px 24px 14px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.blk-cal-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.blk-cal-icon {
  width: 38px; height: 38px;
  background: rgba(255,255,255,.15);
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  color: #fff;
  flex-shrink: 0;
}
.blk-cal-title {
  font-size: .97rem; font-weight: 700;
  color: #fff; margin: 0 0 3px;
  letter-spacing: -.01em;
}
.blk-cal-desc {
  font-size: .76rem; color: rgba(255,255,255,.75);
  margin: 0;
}

/* 범례 */
.blk-cal-legend {
  display: flex; align-items: center; gap: 14px;
  flex-wrap: wrap;
}
.blk-legend-item {
  display: flex; align-items: center; gap: 5px;
  font-size: .72rem; color: rgba(255,255,255,.85);
  font-weight: 500; white-space: nowrap;
}
.blk-legend-dot {
  width: 12px; height: 12px;
  border-radius: 3px;
  display: inline-block;
}
.blk-legend--open    { background: #d4edda; border: 1.5px solid #52b788; }
.blk-legend--blocked { background: #f8d7da; border: 1.5px solid #e05c6a; }
.blk-legend--reserved{ background: #fff3cd; border: 1.5px solid #f0a000; }
.blk-legend--past    { background: #e9ecef; border: 1.5px solid #ced4da; }

/* 바디 (달력 그리드 감싸는 영역) */
.blk-cal-body {
  padding: 20px 24px;
}
.blk-cal-loading {
  text-align: center;
  color: var(--text-muted);
  font-size: .86rem;
  padding: 20px 0;
}

/* 월 이동 네비게이션 */
.blk-cal-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.blk-cal-nav-title {
  font-size: .95rem;
  font-weight: 700;
  color: var(--text-dark);
  letter-spacing: -.01em;
}
.blk-nav-btn {
  width: 32px; height: 32px;
  border: 1.5px solid var(--border);
  border-radius: 8px;
  background: var(--white);
  color: var(--text-mid);
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: .85rem;
  transition: all .2s;
}
.blk-nav-btn:hover {
  background: #f0f4f0;
  border-color: #1a4d2e;
  color: #1a4d2e;
}
.blk-nav-btn:disabled {
  opacity: .4; cursor: not-allowed;
}

/* 달력 그리드 */
.blk-cal-grid {
  width: 100%;
}
.blk-cal-dow-row {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin-bottom: 4px;
}
.blk-cal-dow {
  text-align: center;
  font-size: .71rem;
  font-weight: 700;
  color: var(--text-muted);
  padding: 4px 0;
  letter-spacing: .04em;
}
.blk-cal-dow.dow-sun { color: #e05c6a; }
.blk-cal-dow.dow-sat { color: #4a7fbf; }

.blk-cal-days-row {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}

/* 날짜 셀 */
.blk-day-cell {
  aspect-ratio: 1;
  border-radius: 9px;
  border: 1.5px solid transparent;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .18s;
  position: relative;
  user-select: none;
  min-height: 44px;
}
.blk-day-num {
  font-size: .82rem;
  font-weight: 600;
  line-height: 1;
}
.blk-day-badge {
  font-size: .6rem;
  font-weight: 700;
  margin-top: 2px;
  line-height: 1;
}
.blk-day-res-count {
  position: absolute;
  top: 4px; right: 5px;
  background: #f0a000;
  color: #fff;
  font-size: .58rem;
  font-weight: 700;
  border-radius: 50%;
  width: 14px; height: 14px;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
}

/* 빈 셀 (달력 앞 빈공간) */
.blk-day-cell--empty {
  cursor: default;
  background: transparent;
  border-color: transparent;
}

/* 과거 날짜 */
.blk-day-cell--past {
  background: #f3f4f6;
  border-color: #e5e7eb;
  cursor: not-allowed;
}
.blk-day-cell--past .blk-day-num { color: #b0b8c4; }

/* 예약 가능 */
.blk-day-cell--open {
  background: #f0faf4;
  border-color: #a8d8b8;
}
.blk-day-cell--open .blk-day-num { color: #1a4d2e; }
.blk-day-cell--open .blk-day-badge { color: #52b788; }
.blk-day-cell--open:hover {
  background: #d4edda;
  border-color: #52b788;
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(26,77,46,.15);
}

/* 마감 처리 */
.blk-day-cell--blocked {
  background: #fef2f3;
  border-color: #f5a0a7;
}
.blk-day-cell--blocked .blk-day-num {
  color: #c0392b;
  text-decoration: line-through;
}
.blk-day-cell--blocked .blk-day-badge { color: #e05c6a; }
.blk-day-cell--blocked:hover {
  background: #fde0e2;
  border-color: #e05c6a;
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(224,92,106,.15);
}

/* 예약 있음 */
.blk-day-cell--reserved {
  background: #fffbf0;
  border-color: #fcd57a;
}
.blk-day-cell--reserved .blk-day-num { color: #856404; }
.blk-day-cell--reserved .blk-day-badge { color: #d4900a; }
.blk-day-cell--reserved:hover {
  background: #fff3cd;
  border-color: #f0a000;
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(240,160,0,.15);
}

/* 예약있음 + 마감 동시 */
.blk-day-cell--blocked-reserved {
  background: #fef2f3;
  border-color: #e05c6a;
}
.blk-day-cell--blocked-reserved .blk-day-num {
  color: #c0392b;
  text-decoration: line-through;
}
.blk-day-cell--blocked-reserved:hover {
  background: #fde0e2;
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(224,92,106,.15);
}

/* 저장 중 스피너 오버레이 */
.blk-day-cell--saving::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 8px;
  background: rgba(255,255,255,.7);
}
.blk-day-cell--saving::before {
  content: '';
  position: absolute;
  width: 14px; height: 14px;
  border: 2px solid #1a4d2e;
  border-top-color: transparent;
  border-radius: 50%;
  animation: blkSpin .6s linear infinite;
  z-index: 1;
}
@keyframes blkSpin {
  to { transform: rotate(360deg); }
}

/* 푸터 */
.blk-cal-footer {
  padding: 14px 24px 18px;
  border-top: 1px solid #eef2ee;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.blk-tags-wrap {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  flex: 1;
  flex-wrap: wrap;
}
.blk-tags-label {
  font-size: .74rem;
  font-weight: 700;
  color: var(--text-muted);
  white-space: nowrap;
  padding-top: 3px;
  letter-spacing: .04em;
}
.blk-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.blk-tags-empty {
  font-size: .78rem;
  color: var(--text-muted);
  padding-top: 2px;
}
.blk-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #fef2f3;
  border: 1px solid #f5a0a7;
  border-radius: 20px;
  padding: 3px 10px 3px 10px;
  font-size: .74rem;
  font-weight: 600;
  color: #c0392b;
  cursor: default;
}
.blk-tag-remove {
  background: none; border: none;
  cursor: pointer;
  color: #c0392b;
  font-size: .7rem;
  padding: 0;
  display: flex; align-items: center;
  opacity: .7;
  transition: opacity .15s;
}
.blk-tag-remove:hover { opacity: 1; }

/* 액션 버튼 */
.blk-cal-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.blk-action-btn {
  padding: 7px 14px;
  border-radius: 8px;
  font-size: .76rem;
  font-weight: 600;
  font-family: var(--kr);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: all .2s;
  display: flex; align-items: center; gap: 5px;
  white-space: nowrap;
}
.blk-action-btn--all {
  background: #fef2f3;
  border-color: #f5a0a7;
  color: #c0392b;
}
.blk-action-btn--all:hover {
  background: #fde0e2;
  border-color: #e05c6a;
}
.blk-action-btn--clear {
  background: var(--white);
  border-color: var(--border);
  color: var(--text-mid);
}
.blk-action-btn--clear:hover {
  background: var(--bg);
  border-color: #aaa;
}

/* 경고 확인 팝업 */
.blk-confirm-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fadeIn .18s ease;
}
.blk-confirm-box {
  background: var(--white);
  border-radius: 14px;
  padding: 28px 28px 22px;
  width: min(380px, 92vw);
  box-shadow: 0 20px 60px rgba(0,0,0,.22);
}
.blk-confirm-icon {
  font-size: 2rem;
  margin-bottom: 10px;
}
.blk-confirm-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-dark);
  margin: 0 0 6px;
}
.blk-confirm-msg {
  font-size: .84rem;
  color: var(--text-mid);
  margin: 0 0 20px;
  line-height: 1.6;
}
.blk-confirm-msg strong { color: #c0392b; }
.blk-confirm-btns {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}
.blk-confirm-btn {
  padding: 9px 18px;
  border-radius: 8px;
  font-size: .82rem;
  font-weight: 600;
  font-family: var(--kr);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: all .2s;
}
.blk-confirm-btn--cancel {
  background: var(--white);
  border-color: var(--border);
  color: var(--text-mid);
}
.blk-confirm-btn--cancel:hover { background: var(--bg); }
.blk-confirm-btn--block {
  background: #c0392b;
  color: #fff;
  border-color: #c0392b;
}
.blk-confirm-btn--block:hover { background: #a52d21; }

/* 반응형 */
@media (max-width: 600px) {
  .blk-cal-header {
    flex-direction: column;
    gap: 12px;
  }
  .blk-cal-legend {
    gap: 10px;
  }
  .blk-cal-body {
    padding: 14px 12px;
  }
  .blk-cal-footer {
    flex-direction: column;
    padding: 14px 16px;
  }
  .blk-day-cell {
    min-height: 36px;
    border-radius: 7px;
  }
  .blk-day-num { font-size: .74rem; }
  .blk-day-badge { font-size: .54rem; }
}


/* ══════════════════════════════════════════════════════
   SITE SETTINGS  ·  메인화면 설정
══════════════════════════════════════════════════════ */

/* action-btn 추가 variants */
.action-btn--outline {
  background: var(--white);
  color: #1a4d2e;
  border: 1.5px solid #1a4d2e;
  cursor: pointer;
}
.action-btn--outline:hover { background: #1a4d2e; color: var(--white); }
.action-btn--outline:disabled { opacity:.6; cursor:not-allowed; }

.action-btn--view-site {
  background: var(--white);
  color: #1a4a7a;
  border: 1.5px solid #1a4a7a;
  text-decoration: none;
  cursor: pointer;
}
.action-btn--view-site:hover { background: #1a4a7a; color: var(--white); }

/* 뷰 래퍼 */
.ss-wrap {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* 툴바 */
.ss-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.ss-toolbar-left { flex: 1; min-width: 0; }
.ss-toolbar-btns { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

.ss-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text-dark);
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 6px;
}
.ss-title i { color: #c9a96a; }
.ss-desc {
  font-size: .82rem;
  color: var(--text-muted);
  margin: 0;
  line-height: 1.55;
}

/* 저장 결과 알림 */
.ss-save-result {
  padding: 10px 16px;
  border-radius: 8px;
  font-size: .84rem;
  font-weight: 600;
  margin-bottom: 16px;
  transition: opacity .35s;
}
.ss-save-result--ok {
  background: #e8f6ee;
  color: #1a5c42;
  border: 1px solid #b6dfcc;
}

/* ── 탭 네비게이션 ── */
.ss-tab-nav {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  border-bottom: 2px solid var(--border);
  margin-bottom: 24px;
}
.ss-tab-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 9px 16px;
  border: none;
  background: none;
  font-size: .8rem;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: all .22s;
  font-family: var(--kr);
  border-radius: 4px 4px 0 0;
  white-space: nowrap;
}
.ss-tab-btn:hover { color: var(--text-dark); background: var(--bg); }
.ss-tab-btn.active {
  color: #1a4d2e;
  border-bottom-color: #1a4d2e;
  background: #f0faf5;
}
.ss-tab-btn i { font-size: .75rem; }

/* ── 탭 패널 ── */
.ss-tab-panel { display: none; }
.ss-tab-panel.active { display: flex; flex-direction: column; gap: 20px; }

/* ── 섹션 ── */
.ss-section {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ss-section-head {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}
.ss-section-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  background: #f0faf5;
  color: #1a5c42;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .9rem;
  flex-shrink: 0;
  margin-top: 2px;
}
.ss-section-title {
  font-size: .92rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: 3px;
}
.ss-section-sub {
  font-size: .77rem;
  color: var(--text-muted);
  line-height: 1.4;
}

/* ── 필드 그룹 ── */
.ss-field-group {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ss-field { display: flex; flex-direction: column; gap: 5px; }
.ss-label {
  font-size: .79rem;
  font-weight: 600;
  color: var(--text-mid);
}
.ss-req { color: #e53e3e; margin-left: 2px; }
.ss-hint {
  font-size: .72rem;
  color: var(--text-muted);
  margin: 2px 0 0;
  line-height: 1.45;
}
.ss-hint code {
  background: #f4f6f8;
  padding: 1px 5px;
  border-radius: 4px;
  font-size: .7rem;
  color: #1a4d2e;
}

/* 공통 입력 */
.ss-input {
  width: 100%;
  padding: 9px 12px;
  border: 1.5px solid var(--border);
  border-radius: 7px;
  font-size: .86rem;
  color: var(--text-dark);
  background: var(--white);
  font-family: var(--sans);
  transition: border-color .22s, box-shadow .22s;
  box-sizing: border-box;
}
.ss-input:focus {
  outline: none;
  border-color: #1a4d2e;
  box-shadow: 0 0 0 3px rgba(26,77,46,.1);
}
.ss-textarea {
  width: 100%;
  padding: 9px 12px;
  border: 1.5px solid var(--border);
  border-radius: 7px;
  font-size: .86rem;
  color: var(--text-dark);
  background: var(--white);
  font-family: var(--sans);
  resize: vertical;
  transition: border-color .22s, box-shadow .22s;
  box-sizing: border-box;
}
.ss-textarea:focus {
  outline: none;
  border-color: #1a4d2e;
  box-shadow: 0 0 0 3px rgba(26,77,46,.1);
}

/* ── 이미지 미리보기 영역 ── */
.ss-img-row {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 16px;
  align-items: flex-start;
}
.ss-img-preview {
  width: 140px;
  height: 90px;
  border-radius: 8px;
  border: 1.5px solid var(--border);
  overflow: hidden;
  background: #f8f5ef;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ss-img-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: none;
}
.ss-img-no-preview {
  font-size: .68rem;
  color: var(--text-muted);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  line-height: 1.4;
}
.ss-img-no-preview i { font-size: 1.2rem; opacity: .4; }
.ss-img-preview--logo { width: 140px; height: 60px; }
.ss-img-preview--og   { width: 140px; height: 74px; }
.ss-img-inputs { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; }

/* ── 갤러리 그리드 ── */
.ss-gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 14px;
}
.ss-gallery-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ss-gallery-num {
  font-size: .72rem;
  font-weight: 700;
  color: var(--text-mid);
  display: flex;
  align-items: center;
  gap: 6px;
}
.ss-gallery-tag {
  background: #e8f0fa;
  color: #1a4a7a;
  font-size: .62rem;
  font-weight: 700;
  padding: 1px 7px;
  border-radius: 50px;
  letter-spacing: .04em;
}
.ss-img-preview--gallery {
  width: 100%;
  height: 100px;
  border-radius: 8px;
}

/* ── 투명도 슬라이더 ── */
.ss-range {
  -webkit-appearance: none;
  width: 100%;
  height: 6px;
  border-radius: 4px;
  background: var(--border);
  outline: none;
  cursor: pointer;
}
.ss-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #1a4d2e;
  cursor: pointer;
  border: 2px solid var(--white);
  box-shadow: 0 1px 4px rgba(0,0,0,.2);
}
.ss-opacity-val {
  font-size: .75rem;
  font-weight: 700;
  color: #1a4d2e;
  background: #e8f6ee;
  padding: 1px 7px;
  border-radius: 50px;
  margin-left: 6px;
}

/* ── 컬러피커 ── */
.ss-field--color .ss-color-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.ss-color-picker {
  width: 44px;
  height: 36px;
  border: 1.5px solid var(--border);
  border-radius: 7px;
  padding: 3px;
  cursor: pointer;
  background: var(--white);
  flex-shrink: 0;
}
.ss-input--color { flex: 1; }
.ss-color-presets {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.ss-color-preset-label {
  font-size: .72rem;
  color: var(--text-muted);
  font-weight: 600;
}
.ss-color-preset {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid var(--white);
  box-shadow: 0 0 0 1.5px var(--border);
  cursor: pointer;
  transition: transform .18s, box-shadow .18s;
}
.ss-color-preset:hover {
  transform: scale(1.18);
  box-shadow: 0 0 0 2px #1a4d2e;
}

/* 색상 미리보기 박스 */
.ss-color-preview-box {
  background: #1a1a2e;
  border-radius: 10px;
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ss-cp-btn {
  display: inline-flex;
  align-items: center;
  padding: 10px 22px;
  border-radius: 6px;
  font-size: .86rem;
  font-weight: 700;
  color: #fff;
  background: #c9a96a;
  width: fit-content;
  letter-spacing: .04em;
  transition: background .3s;
}
.ss-cp-text {
  font-size: .86rem;
  color: #c9a96a;
  font-weight: 600;
  transition: color .3s;
}
.ss-cp-bar {
  height: 3px;
  width: 80px;
  background: #c9a96a;
  border-radius: 2px;
  transition: background .3s;
}

/* ── 안내사항 편집기 ── */
.ss-notice-actions {
  display: flex;
  justify-content: flex-end;
  padding-bottom: 10px;
}
.ss-notice-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ss-notice-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 12px;
  transition: background .18s;
}
.ss-notice-item:hover { background: #f0faf5; }
.ss-notice-num {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #1a4d2e;
  color: #fff;
  font-size: .68rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 8px;
}
.ss-notice-input-wrap { flex: 1; min-width: 0; }
.ss-notice-input {
  width: 100%;
  box-sizing: border-box;
}
.ss-notice-btns {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex-shrink: 0;
}
.ss-notice-btn {
  width: 26px;
  height: 26px;
  border-radius: 5px;
  border: 1px solid var(--border);
  background: var(--white);
  color: var(--text-muted);
  cursor: pointer;
  font-size: .72rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .18s;
}
.ss-notice-btn:hover { background: #1a4d2e; color: #fff; border-color: #1a4d2e; }
.ss-notice-del:hover { background: #c0392b; border-color: #c0392b; }
.ss-notice-btn-placeholder { width: 26px; height: 26px; }

/* ── 반응형 ── */
@media (max-width: 768px) {
  .ss-toolbar { flex-direction: column; }
  .ss-toolbar-btns { width: 100%; justify-content: flex-end; }
  .ss-img-row { grid-template-columns: 100px 1fr; gap: 10px; }
  .ss-img-preview { width: 100px; height: 65px; }
  .ss-gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .ss-tab-btn { padding: 7px 10px; font-size: .74rem; }
  .ss-color-presets { gap: 8px; }
  .ss-tab-nav { gap: 2px; }
}

}

/* ══════════════════════════════════════════════════════
   PACKAGE A/B 편집 섹션 — 메인화면 설정 > 텍스트 탭
══════════════════════════════════════════════════════ */

/* A타입 섹션 — 초록 왼쪽 테두리 */
.ss-section--pkg-a {
  border-left: 4px solid #1a5c42;
  background: linear-gradient(135deg, rgba(26,92,66,.03) 0%, transparent 60%);
}
/* B타입 섹션 — 골드 왼쪽 테두리 */
.ss-section--pkg-b {
  border-left: 4px solid var(--gold);
  background: linear-gradient(135deg, rgba(201,169,106,.04) 0%, transparent 60%);
}

/* 아이콘 색상 변형 */
.ss-section-icon--a {
  background: #e8f5ee;
  color: #1a5c42;
}
.ss-section-icon--b {
  background: #fdf3e3;
  color: #8a5c00;
}

/* 포함 항목 라벨 (li① ② ...) */
.ss-pkg-items-label {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: .76rem;
  font-weight: 700;
  color: var(--text-mid);
  margin: 14px 0 8px;
  padding-bottom: 6px;
  border-bottom: 1px dashed var(--border);
}

/* ══════════════════════════════════════
   폰트사이즈 슬라이더
══════════════════════════════════════ */
.ss-label--with-val {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ss-range-val {
  font-size: .75rem;
  font-weight: 700;
  color: #1a4d2e;
  background: #e8f5ee;
  padding: 2px 8px;
  border-radius: 20px;
  min-width: 48px;
  text-align: center;
  letter-spacing: .02em;
}
.ss-range-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ss-range-min,
.ss-range-max {
  font-size: .68rem;
  color: var(--text-muted);
  white-space: nowrap;
  flex-shrink: 0;
}
.ss-range-row input[type="range"] {
  flex: 1;
  -webkit-appearance: none;
  appearance: none;
  height: 5px;
  border-radius: 4px;
  background: linear-gradient(to right, #1a4d2e 0%, #1a4d2e var(--range-pct, 50%), #dde3e0 var(--range-pct, 50%), #dde3e0 100%);
  outline: none;
  border: none;
  padding: 0;
  cursor: pointer;
}
.ss-range-row input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #1a4d2e;
  border: 2.5px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.25);
  cursor: pointer;
  transition: transform .15s;
}
.ss-range-row input[type="range"]::-webkit-slider-thumb:hover {
  transform: scale(1.2);
}
.ss-range-row input[type="range"]::-moz-range-thumb {
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #1a4d2e;
  border: 2.5px solid #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.25);
  cursor: pointer;
}
.ss-pkg-items-label i { color: var(--gold); }

/* 다크모드 패키지 섹션 */
[data-theme="dark"] .ss-section--pkg-a {
  background: linear-gradient(135deg, rgba(26,92,66,.08) 0%, transparent 60%);
}
[data-theme="dark"] .ss-section--pkg-b {
  background: linear-gradient(135deg, rgba(201,169,106,.06) 0%, transparent 60%);
}
[data-theme="dark"] .ss-section-icon--a {
  background: rgba(26,92,66,.22);
  color: #4cba80;
}
[data-theme="dark"] .ss-section-icon--b {
  background: rgba(201,169,106,.15);
  color: #e8c578;
}

/* ══════════════════════════════════════════════════════
   요일별 패키지 가격 UI (pkg modal)
══════════════════════════════════════════════════════ */
.pkg-day-price-wrap {
  margin-top: 20px;
  border: 1.5px solid #d0d8d0;
  border-radius: 10px;
  overflow: visible; /* clip 금지 */
  background: #fff;
}
.pkg-day-price-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  background: linear-gradient(90deg, #0d1e14 0%, #1a4d2e 100%);
  color: #fff;
  font-size: .8rem;
  font-weight: 600;
  padding: 9px 14px;
  letter-spacing: .02em;
  border-radius: 8px 8px 0 0;
}
.pkg-day-price-header i { color: #c9a96a; font-size: .82rem; flex-shrink: 0; }
.pkg-day-tip {
  margin-left: auto;
  font-size: .66rem;
  font-weight: 400;
  color: rgba(255,255,255,.65);
  letter-spacing: 0;
}
/* ── 티어 그리드: 2컬럼(A/B) 레이아웃으로 단순화 ── */
.pkg-day-tier-grid {
  padding: 12px 14px 8px;
  background: #fff;
}
/* 헤더행: 구분 | A요금 | B요금 */
.pkg-day-tier-head {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid #eee;
}
.tier-col-label {
  font-size: .65rem;
  font-weight: 700;
  color: #888;
  letter-spacing: .04em;
  text-transform: uppercase;
}
/* 데이터행: 구분 | A요금입력 | B요금입력 */
.pkg-day-tier-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}
/* 구분 셀: 배지 + 조합 텍스트 세로 배치 */
.pkg-day-tier-row .tier-cell-label {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.tier-day-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .7rem;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 50px;
  letter-spacing: .03em;
  white-space: nowrap;
  width: fit-content;
}
.tier-weekday {
  background: #e8f6ee;
  color: #1a4d2e;
  border: 1px solid #b8ddc8;
}
.tier-mixed {
  background: #fff8ec;
  color: #a06a00;
  border: 1px solid #f0d898;
}
.tier-weekend {
  background: #fdf0ef;
  color: #c0392b;
  border: 1px solid #f5c0bc;
}
.tier-day-combo {
  font-size: .65rem;
  color: #999;
  font-weight: 400;
  padding-left: 2px;
}
.tier-price-input {
  font-size: .78rem !important;
  padding: 6px 8px !important;
  height: 34px !important;
  min-width: 0 !important; /* grid 셀 overflow 방지 */
  width: 100% !important;
  box-sizing: border-box !important;
}
.pkg-day-fallback {
  border-top: 1.5px dashed #e0e0e0;
  padding: 12px 14px;
  background: #fafbfa;
  border-radius: 0 0 8px 8px;
}
.pkg-day-fallback-label {
  font-size: .73rem;
  font-weight: 600;
  color: #666;
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}
.pkg-day-fallback-label i { color: #c9a96a; }

/* ══════════════════════════════════════════════════════
   텍스트 탭 아코디언 UI
══════════════════════════════════════════════════════ */

/* 전체 펼치기/접기 툴바 */
.ss-acc-toolbar {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  justify-content: flex-end;
}
.ss-acc-ctrl-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--kr);
  font-size: .72rem;
  font-weight: 500;
  color: var(--text-mid);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 5px 12px;
  cursor: pointer;
  transition: background var(--t), color var(--t), border-color var(--t);
}
.ss-acc-ctrl-btn:hover {
  background: var(--green-deep);
  color: #fff;
  border-color: var(--green-deep);
}
.ss-acc-ctrl-btn i { font-size: .65rem; }

/* 아코디언 컨테이너 */
.ss-acc {
  background: var(--card);
  border: 1.5px solid var(--border);
  border-radius: 10px;
  margin-bottom: 10px;
  overflow: hidden;
  transition: border-color var(--t);
}
.ss-acc:has(.ss-acc-head[aria-expanded="true"]) {
  border-color: var(--green-mid);
}

/* 아코디언 헤더 버튼 */
.ss-acc-head {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  transition: background var(--t);
  outline: none;
}
.ss-acc-head:hover {
  background: var(--hover);
}
.ss-acc-head[aria-expanded="true"] {
  background: rgba(15,61,46,.04);
  border-bottom: 1.5px solid var(--border);
}

/* 아코디언 아이콘 */
.ss-acc-icon {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--green-deep);
  color: #fff;
  border-radius: 7px;
  font-size: .85rem;
}

/* 아코디언 레이블 */
.ss-acc-label {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-family: var(--kr);
  font-size: .88rem;
  font-weight: 600;
  color: var(--text-dark);
}
.ss-acc-sub {
  font-size: .72rem;
  font-weight: 400;
  color: var(--text-muted);
}

/* 아코디언 화살표 */
.ss-acc-arrow {
  flex-shrink: 0;
  font-size: .7rem;
  color: var(--text-muted);
  transition: transform .25s ease;
}
.ss-acc-head[aria-expanded="true"] .ss-acc-arrow {
  transform: rotate(180deg);
  color: var(--green-mid);
}

/* 아코디언 바디 */
.ss-acc-body {
  padding: 18px 20px 20px;
  display: none;
}
.ss-acc-body.open {
  display: block;
}

/* 서브 헤더 (아코디언 내부 구분선) */
.ss-acc-sub-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--kr);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--green-mid);
  text-transform: uppercase;
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.ss-acc-sub-head i { color: var(--gold); }

/* 패키지 A/B 블록 */
.ss-acc-pkg-block {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 14px;
  background: var(--bg);
}
.ss-acc-pkg-block--a {
  border-left: 3px solid var(--green-mid);
  background: linear-gradient(135deg, rgba(15,61,46,.03) 0%, transparent 60%);
}
.ss-acc-pkg-block--b {
  border-left: 3px solid var(--gold);
  background: linear-gradient(135deg, rgba(201,169,106,.04) 0%, transparent 60%);
}
.ss-acc-pkg-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--kr);
  font-size: .78rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: 12px;
  letter-spacing: .04em;
}

/* 포함항목 라벨 */
.ss-acc-items-label {
  font-family: var(--kr);
  font-size: .73rem;
  font-weight: 600;
  color: var(--text-mid);
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 14px 0 8px;
}
.ss-acc-items-label i { color: var(--gold); }

/* 포함내역 2열 그리드 */
.ss-inc-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.ss-inc-grid .ss-inc-card-block {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px 14px;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ss-inc-grid .ss-inc-card-block--a {
  border-left: 3px solid var(--green-mid);
}
.ss-inc-grid .ss-inc-card-block--b {
  border-left: 3px solid var(--gold);
}
.ss-inc-grid .ss-inc-card-block--excl {
  border-left: 3px solid #e74c3c;
}
.ss-inc-card-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--kr);
  font-size: .72rem;
  font-weight: 700;
  color: var(--text-mid);
  margin-bottom: 2px;
}
.ss-inc-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  background: var(--green-deep);
  color: #fff;
  border-radius: 50%;
  font-size: .65rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* 고급 옵션 (details/summary) */
.ss-advanced {
  margin-top: 14px;
  border: 1px dashed var(--border);
  border-radius: 8px;
  overflow: hidden;
}
.ss-advanced summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  font-family: var(--kr);
  font-size: .75rem;
  font-weight: 600;
  color: var(--text-muted);
  cursor: pointer;
  list-style: none;
  transition: background var(--t), color var(--t);
  user-select: none;
}
.ss-advanced summary::-webkit-details-marker { display: none; }
.ss-advanced summary::before {
  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 6px solid currentColor;
  transition: transform .2s ease;
  flex-shrink: 0;
}
.ss-advanced[open] summary::before {
  transform: rotate(90deg);
}
.ss-advanced summary:hover {
  background: var(--hover);
  color: var(--text-dark);
}
.ss-advanced summary i {
  color: var(--gold);
  font-size: .72rem;
}
.ss-advanced > div {
  padding: 0 14px 14px;
}

/* 2열 필드 그룹 */
.ss-field-group--2col {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

/* 다크모드 */
[data-theme="dark"] .ss-acc {
  background: var(--card);
  border-color: var(--border);
}
[data-theme="dark"] .ss-acc-head[aria-expanded="true"] {
  background: rgba(255,255,255,.04);
}
[data-theme="dark"] .ss-acc-pkg-block {
  background: rgba(255,255,255,.02);
}
[data-theme="dark"] .ss-acc-pkg-block--a {
  background: rgba(15,61,46,.08);
}
[data-theme="dark"] .ss-acc-pkg-block--b {
  background: rgba(201,169,106,.06);
}
[data-theme="dark"] .ss-inc-grid .ss-inc-card-block {
  background: rgba(255,255,255,.02);
}
[data-theme="dark"] .ss-advanced {
  border-color: var(--border);
}

@media (max-width: 700px) {
  .ss-inc-grid {
    grid-template-columns: 1fr;
  }
  .ss-field-group--2col {
    grid-template-columns: 1fr;
  }
}

/* ══════════════════════════════════════════════════════
   PRINT FORM BUTTON — 신청서 출력 버튼
   ══════════════════════════════════════════════════════ */
.th-print {
  width: 52px;
  text-align: center;
  white-space: nowrap;
}
.td-print {
  text-align: center;
  padding: 6px 4px;
}
.print-form-btn {
  width: 34px; height: 34px;
  border-radius: 7px;
  border: 1.5px solid var(--border);
  background: none;
  color: var(--text-muted);
  font-size: .85rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .15s;
}
.print-form-btn:hover {
  background: #fff8e1;
  border-color: #c9a96a;
  color: #8a6200;
  box-shadow: 0 2px 6px rgba(201,169,106,.25);
}

/* ══════════════════════════════════════════════════════
   공통 유틸 버튼 (신규 뷰용)
══════════════════════════════════════════════════════ */
.btn-outline-sm {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 14px; border-radius: var(--radius);
  border: 1.5px solid var(--border);
  background: var(--white); color: var(--text-mid);
  font-size: .78rem; font-weight: 600; cursor: pointer;
  transition: all var(--t);
  white-space: nowrap;
}
.btn-outline-sm:hover { border-color: #1a5c42; color: #1a5c42; background: #e8f5ee; }

.btn-text-sm {
  background: none; border: none; padding: 0;
  font-size: .73rem; font-weight: 600; color: var(--green-mid);
  cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
}
.btn-text-sm:hover { color: var(--gold); }

.empty-msg {
  padding: 24px; text-align: center;
  color: var(--text-muted); font-size: .82rem;
}

/* ══════════════════════════════════════════════════════
   대시보드 KPI
══════════════════════════════════════════════════════ */
.dash-header-btns { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

.dash-kpi-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 18px;
}
.dash-kpi-card {
  background: var(--white);
  border-radius: 14px;
  border: 1.5px solid var(--border);
  padding: 18px 20px;
  display: flex; align-items: center; gap: 14px;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
  transition: box-shadow .2s;
}
.dash-kpi-card:hover { box-shadow: 0 4px 18px rgba(0,0,0,.09); }
.dash-kpi-icon {
  width: 46px; height: 46px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.15rem; flex-shrink: 0;
}
.dash-kpi--checkin  .dash-kpi-icon { background: #e8f6ee; color: #1a7a4a; }
.dash-kpi--checkout .dash-kpi-icon { background: #fef5ec; color: #c56a0a; }
.dash-kpi--wait     .dash-kpi-icon { background: #f5eefb; color: #8e44ad; }
.dash-kpi--revenue  .dash-kpi-icon { background: #fff8e1; color: #b8860b; }
.dash-kpi-body { min-width: 0; }
.dash-kpi-num  { font-size: 1.65rem; font-weight: 700; line-height: 1; color: var(--text-dark); }
.dash-kpi-label{ font-size: .73rem; font-weight: 600; color: var(--text-mid); margin-top: 3px; }
.dash-kpi-sub  { font-size: .67rem; color: var(--text-muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 160px; }

.dash-bottom-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
}
.dash-card {
  background: var(--white); border-radius: 12px;
  border: 1.5px solid var(--border);
  box-shadow: 0 1px 6px rgba(0,0,0,.04);
  overflow: hidden;
}
.dash-card-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 13px 16px; border-bottom: 1px solid var(--border);
  font-size: .78rem; font-weight: 600; color: var(--text-mid);
}
.dash-card-body { padding: 10px 0; min-height: 180px; }

.dash-recent-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 16px; border-bottom: 1px solid #f2f4f6;
  font-size: .75rem; transition: background .12s;
}
.dash-recent-item:hover { background: #f7f9fb; }
.dash-recent-item:last-child { border-bottom: none; }
.dash-recent-name  { font-weight: 600; min-width: 60px; }
.dash-recent-date  { color: var(--text-muted); font-size: .7rem; min-width: 75px; }
.dash-recent-pkg   { color: var(--text-muted); font-size: .7rem; }
.dash-recent-status{ font-size: .65rem; font-weight: 700; padding: 2px 6px; border-radius: 4px; flex-shrink: 0; }
.dash-status--wait    { background: var(--status-wait-bg);    color: var(--status-wait);    }
.dash-status--review  { background: var(--status-review-bg);  color: var(--status-review);  }
.dash-status--confirm { background: var(--status-confirm-bg); color: var(--status-confirm); }
.dash-status--cancel  { background: var(--status-cancel-bg);  color: var(--status-cancel);  }

/* ══════════════════════════════════════════════════════
   예약 캘린더
══════════════════════════════════════════════════════ */
.cal-legend { display: flex; align-items: center; gap: 8px; font-size: .72rem; color: var(--text-muted); }
.cal-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
.cal-dot--wait    { background: var(--status-wait); }
.cal-dot--confirm { background: var(--status-confirm); }
.cal-dot--review  { background: var(--status-review); }

.cal-nav {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 14px;
}
.cal-nav-btn {
  width: 32px; height: 32px; border-radius: 8px;
  border: 1.5px solid var(--border); background: var(--white);
  color: var(--text-mid); font-size: .85rem; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.cal-nav-btn:hover { border-color: var(--green-mid); color: var(--green-mid); }
.cal-nav-title { font-size: 1rem; font-weight: 700; min-width: 100px; text-align: center; }
.cal-today-btn {
  margin-left: 6px; padding: 5px 14px; border-radius: 7px;
  border: 1.5px solid var(--border); background: var(--white);
  font-size: .73rem; font-weight: 600; cursor: pointer; color: var(--text-mid);
  transition: all .15s;
}
.cal-today-btn:hover { border-color: var(--green-mid); color: var(--green-mid); }

.cal-grid-wrap { background: var(--white); border-radius: 12px; border: 1.5px solid var(--border); overflow: hidden; }
.cal-weekdays {
  display: grid; grid-template-columns: repeat(7,1fr);
  background: #f0f4f8; padding: 8px 0;
}
.cal-weekdays span {
  text-align: center; font-size: .72rem; font-weight: 700;
  color: var(--text-muted); letter-spacing: .04em;
}
.cal-weekdays span:first-child { color: #e53e3e; }
.cal-weekdays span:last-child  { color: #3b82f6; }

.cal-grid {
  display: grid; grid-template-columns: repeat(7,1fr);
  border-top: 1px solid var(--border);
}
.cal-cell {
  min-height: 90px; padding: 8px; border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border); cursor: pointer;
  transition: background .12s; position: relative;
}
.cal-cell:nth-child(7n) { border-right: none; }
.cal-cell:hover:not(.cal-cell--empty) { background: #f5f8ff; }
.cal-cell--empty { cursor: default; background: #fafafa; }
.cal-cell--past  { opacity: .55; }
.cal-cell--today .cal-cell-day {
  background: var(--green-mid); color: #fff;
  border-radius: 50%; width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 700;
}
.cal-cell--has-resv { background: #fafffe; }
.cal-cell-day { font-size: .78rem; font-weight: 600; display: block; margin-bottom: 4px; }
.cal-cell-dots { display: flex; gap: 3px; flex-wrap: wrap; margin-bottom: 3px; }
.cal-cell-dots .cal-dot { width: 7px; height: 7px; }
.cal-cell-count { font-size: .64rem; color: var(--text-muted); font-weight: 600; }
.cal-loading { grid-column: 1/-1; text-align: center; padding: 40px; color: var(--text-muted); }

/* 캘린더 날짜 팝업 모달 */
.cal-day-modal-box {
  max-width: 540px; width: 95%; border-radius: 14px;
  background: var(--white); box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; max-height: 80vh;
}
.cal-day-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.cal-day-modal-title {
  display: flex; align-items: center; gap: 8px;
  font-size: .95rem; font-weight: 700; color: var(--text-dark);
}
.cal-day-modal-body { padding: 12px 16px; overflow-y: auto; flex: 1; }
.cal-day-modal-foot {
  display: flex; align-items: center; justify-content: flex-end;
  gap: 8px; padding: 12px 16px; border-top: 1px solid var(--border);
}
.cal-day-item {
  padding: 10px 0; border-bottom: 1px solid #f0f2f5;
  display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap;
}
.cal-day-item:last-child { border-bottom: none; }
.cal-day-status { font-size: .68rem; font-weight: 700; padding: 2px 7px; border-radius: 4px; flex-shrink: 0; margin-top: 2px; }
.cal-day-info strong { font-size: .82rem; }
.cal-day-meta { font-size: .73rem; color: var(--text-muted); }
.cal-day-detail { width: 100%; font-size: .72rem; color: var(--text-muted); padding-left: 54px; }
.cal-day-room { font-weight: 600; color: var(--green-mid); }

/* ══════════════════════════════════════════════════════
   객실 배정 뷰
══════════════════════════════════════════════════════ */
.room-legend { display: flex; align-items: center; gap: 8px; font-size: .72rem; color: var(--text-muted); }
.room-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; }
.room-dot--empty    { background: #d1fae5; border: 1px solid #6ee7b7; }
.room-dot--confirm  { background: var(--status-confirm-bg); border: 1px solid var(--status-confirm); }
.room-dot--wait     { background: var(--status-wait-bg);    border: 1px solid var(--status-wait); }
.room-dot--conflict { background: #fee2e2; border: 1px solid #ef4444; }

.room-date-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--white); border-radius: 10px; border: 1.5px solid var(--border);
  padding: 12px 16px; margin-bottom: 14px;
}
.room-date-label { font-size: .75rem; font-weight: 600; color: var(--text-mid); white-space: nowrap; }
.room-date-input {
  border: 1.5px solid var(--border); border-radius: 7px;
  padding: 6px 10px; font-size: .8rem; min-width: 130px;
  background: var(--white); cursor: pointer;
}
.room-date-input:focus { outline: none; border-color: var(--green-mid); }

/* 객실 현황 그리드 */
.room-grid-wrap { background: var(--white); border-radius: 12px; border: 1.5px solid var(--border); padding: 16px; margin-bottom: 18px; }
.room-grid { display: flex; flex-wrap: wrap; gap: 14px; }
.rv-type-group { min-width: 180px; }
.rv-type-head { font-size: .7rem; font-weight: 700; color: var(--text-muted); letter-spacing: .04em; text-transform: uppercase; margin-bottom: 6px; }
.rv-cells { display: flex; flex-wrap: wrap; gap: 6px; }
.rv-cell {
  width: 54px; padding: 5px 4px 4px;
  border-radius: 8px; border: 1.5px solid;
  display: flex; flex-direction: column; align-items: center;
  cursor: default; transition: box-shadow .12s;
  font-size: .66rem; text-align: center;
}
.rv-cell--empty    { border-color: #6ee7b7; background: #d1fae5; }
.rv-cell--assigned { border-color: var(--status-confirm); background: var(--status-confirm-bg); }
.rv-cell--conflict { border-color: #ef4444; background: #fee2e2; animation: rv-conflict-blink .7s infinite; }
@keyframes rv-conflict-blink { 0%,100%{ opacity:1; } 50%{ opacity:.55; } }
.rv-cell-num  { font-weight: 700; font-size: .75rem; }
.rv-cell-name { font-size: .6rem; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 50px; }

/* 배정 테이블 */
.room-assign-section { background: var(--white); border-radius: 12px; border: 1.5px solid var(--border); padding: 16px; }
.room-assign-head {
  display: flex; align-items: center; justify-content: space-between;
  font-size: .8rem; font-weight: 600; color: var(--text-mid); margin-bottom: 8px; flex-wrap: wrap; gap: 6px;
}
.room-assign-hint { font-size: .68rem; font-weight: 400; color: var(--text-muted); }
.rv-room-select {
  border: 1.5px solid var(--border); border-radius: 6px;
  padding: 4px 8px; font-size: .72rem; width: 100%; background: var(--white);
}
.rv-room-select:focus { outline: none; border-color: var(--green-mid); }

/* ══════════════════════════════════════════════════════
   직원 게시판
══════════════════════════════════════════════════════ */
.nav-board-badge {
  display: none; font-size: .6rem; font-weight: 700;
  background: #ef4444; color: #fff;
  border-radius: 10px; padding: 1px 6px; margin-left: auto; flex-shrink: 0;
}

.board-filter-bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  background: var(--white); border-radius: 10px; border: 1.5px solid var(--border);
  padding: 10px 14px; margin-bottom: 14px;
}
.board-tab {
  padding: 5px 12px; border-radius: 20px;
  border: 1.5px solid var(--border); background: var(--white);
  font-size: .73rem; font-weight: 600; cursor: pointer; color: var(--text-mid);
  transition: all .15s;
}
.board-tab:hover { border-color: var(--green-mid); color: var(--green-mid); }
.board-tab.active { background: var(--green-mid); border-color: var(--green-mid); color: #fff; }
.board-search-wrap {
  display: flex; align-items: center; gap: 6px; margin-left: auto;
  border: 1.5px solid var(--border); border-radius: 8px;
  padding: 5px 10px; background: var(--white); min-width: 200px;
}
.board-search-wrap i { color: var(--text-muted); font-size: .8rem; }
.board-search-input { border: none; outline: none; font-size: .78rem; width: 100%; background: transparent; }

.board-list { display: flex; flex-direction: column; gap: 10px; }
.board-item {
  background: var(--white); border-radius: 12px; border: 1.5px solid var(--border);
  box-shadow: 0 1px 5px rgba(0,0,0,.03); overflow: hidden;
  transition: box-shadow .15s;
}
.board-item:hover { box-shadow: 0 3px 12px rgba(0,0,0,.08); }
.board-item-head {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 12px 16px 8px;
}
.board-pin-badge { font-size: .65rem; color: #ef4444; font-weight: 700; }
.board-cat-badge {
  font-size: .65rem; font-weight: 700; padding: 2px 8px; border-radius: 10px;
  flex-shrink: 0;
}
.board-cat--인수인계 { background: #dbeafe; color: #1d4ed8; }
.board-cat--특이사항 { background: #fef3c7; color: #b45309; }
.board-cat--VIP      { background: #fdf4ff; color: #7c3aed; }
.board-cat--일반     { background: #f3f4f6; color: #374151; }
.board-item-title { font-size: .85rem; font-weight: 700; color: var(--text-dark); }
.board-item-body  { padding: 0 16px 8px; }
.board-item-content { font-size: .78rem; color: var(--text-mid); line-height: 1.6; white-space: pre-wrap; }
.board-item-foot {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 8px 16px; border-top: 1px solid #f0f2f5; background: #fafbfc;
}
.board-item-meta { font-size: .68rem; color: var(--text-muted); display: flex; align-items: center; gap: 4px; }
.board-resv-link { color: var(--green-mid); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.board-edit-btn, .board-delete-btn {
  width: 28px; height: 28px; border-radius: 7px;
  border: 1.5px solid var(--border); background: var(--white);
  font-size: .72rem; cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.board-edit-btn   { color: var(--text-muted); }
.board-delete-btn { color: #dc2626; }
.board-edit-btn:hover   { border-color: var(--green-mid); color: var(--green-mid); }
.board-delete-btn:hover { border-color: #dc2626; background: #fee2e2; }

/* 게시판 모달 */
.board-modal-box {
  max-width: 580px; width: 95%; border-radius: 14px;
  background: var(--white); box-shadow: var(--shadow-lg);
}
.board-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.board-modal-title {
  display: flex; align-items: center; gap: 8px;
  font-size: .95rem; font-weight: 700; color: var(--text-dark);
}
.board-modal-body { padding: 16px 20px; max-height: 70vh; overflow-y: auto; }
.board-modal-foot {
  display: flex; align-items: center; justify-content: flex-end;
  gap: 8px; padding: 12px 20px; border-top: 1px solid var(--border);
}
.board-form-grid { display: flex; flex-direction: column; gap: 14px; }
.board-form-row { display: flex; flex-direction: column; gap: 5px; }
.board-form-row--inline { flex-direction: row; align-items: center; }
.board-form-label { font-size: .75rem; font-weight: 600; color: var(--text-mid); }
.board-form-input {
  border: 1.5px solid var(--border); border-radius: 8px;
  padding: 8px 12px; font-size: .8rem;
  transition: border-color .15s;
}
.board-form-input:focus { outline: none; border-color: var(--green-mid); }
.board-form-textarea {
  border: 1.5px solid var(--border); border-radius: 8px;
  padding: 8px 12px; font-size: .8rem; resize: vertical;
  line-height: 1.6; min-height: 100px;
  transition: border-color .15s;
}
.board-form-textarea:focus { outline: none; border-color: var(--green-mid); }
.board-cat-btns { display: flex; gap: 7px; flex-wrap: wrap; }
.board-cat-btn {
  padding: 4px 11px; border-radius: 16px;
  border: 1.5px solid var(--border); background: var(--white);
  font-size: .73rem; cursor: pointer; transition: all .15s;
}
.board-cat-btn.active { background: var(--green-mid); border-color: var(--green-mid); color: #fff; }
.board-pin-label { display: flex; align-items: center; gap: 7px; font-size: .78rem; cursor: pointer; }
.board-pin-tip  { font-size: .68rem; color: var(--text-muted); }
.board-modal-err { color: #dc2626; font-size: .75rem; padding: 6px 10px; background: #fee2e2; border-radius: 6px; margin-top: 8px; }
.req { color: #dc2626; }

/* ── 다크모드 보정 ── */
[data-theme="dark"] .dash-kpi-card,
[data-theme="dark"] .dash-card,
[data-theme="dark"] .cal-grid-wrap,
[data-theme="dark"] .room-date-bar,
[data-theme="dark"] .room-grid-wrap,
[data-theme="dark"] .room-assign-section,
[data-theme="dark"] .board-filter-bar,
[data-theme="dark"] .board-item,
[data-theme="dark"] .cal-day-modal-box,
[data-theme="dark"] .board-modal-box {
  background: #1e2330; border-color: #2e3449;
}
[data-theme="dark"] .cal-weekdays { background: #171c2b; }
[data-theme="dark"] .cal-cell--empty { background: #171c2b; }
[data-theme="dark"] .cal-cell:hover:not(.cal-cell--empty) { background: #22293a; }
[data-theme="dark"] .board-item-foot { background: #181e2e; }
[data-theme="dark"] .rv-cell--empty { background: rgba(110,231,183,.08); border-color: #6ee7b7; }
[data-theme="dark"] .board-search-wrap,
[data-theme="dark"] .board-form-input,
[data-theme="dark"] .board-form-textarea,
[data-theme="dark"] .rv-room-select { background: #151a27; border-color: #2e3449; color: #cdd1e0; }

/* ── 반응형 ── */
@media (max-width: 1100px) {
  .dash-kpi-row { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 760px) {
  .dash-kpi-row    { grid-template-columns: 1fr 1fr; }
  .dash-bottom-row { grid-template-columns: 1fr; }
  .cal-cell { min-height: 60px; padding: 4px; }
  .cal-cell-day { font-size: .7rem; }
}
@media (max-width: 500px) {
  .dash-kpi-row { grid-template-columns: 1fr; }
}
