:root{
  --primary:#227EFF;
  --primary-100:#ECF3FF;
  --primary-150:#BDD8FF;
  --naver:#03CF5D;
  --red:#F03E3E;
  --gray-900:#20232B;
  --gray-700:#3A3F4B;
  --gray-500:#6B7280;
  --gray-400:#8A929E;
  --gray-300:#B4B9C0;
  --gray-200:#DFE0E1;
  --gray-100:#EFF0F0;
  --gray-50:#F6F7F8;
  --border:#EAEBED;
  --gnb-bg:#1E2230;
  --gnb-bg-soft:#272C3C;
  --gnb-active:#227EFF;
  --shadow-1:0 3px 10px rgba(34,126,255,.15);
  --shadow-card:0 1px 4px rgba(0,0,0,.05);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Pretendard','Apple SD Gothic Neo',-apple-system,sans-serif;
  color:var(--gray-900);
  background:#F4F5F7;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}

.app{display:flex;min-height:100vh;min-width:1280px}

/* ===================== GNB ===================== */
.gnb{
  width:240px;flex:0 0 240px;background:var(--gnb-bg);color:#fff;
  display:flex;flex-direction:column;justify-content:space-between;
  position:sticky;top:0;height:100vh;
}
.gnb-top{padding:20px 0 0}
.gnb-logo{font-size:18px;font-weight:700;color:var(--primary);padding:0 20px}
.gnb-shop{padding:16px 20px;display:flex;flex-direction:column;gap:6px;font-size:13px}
.gnb-shop-row{display:flex;gap:14px;align-items:center}
.gnb-shop .muted{color:#8A8F9C;min-width:48px}
.gnb-charge-row{display:flex;align-items:center;gap:8px;font-weight:600}
.gnb-charge{border:1px solid #3C4252;border-radius:14px;padding:3px 10px;font-size:12px;color:#C7CCD6}
.gnb-nav{margin-top:8px;display:flex;flex-direction:column}
.gnb-item{display:flex;align-items:center;gap:12px;padding:13px 20px;font-size:14px;color:#D5D8E0;cursor:pointer}
.gnb-item:hover{background:var(--gnb-bg-soft)}
.gnb-item span:nth-child(2){flex:1}
.gnb-ico{width:20px;text-align:center;font-size:15px;filter:grayscale(.2)}
.gnb-arrow{color:#5A6172;font-size:14px}
.gnb-item--open{background:var(--gnb-bg-soft);color:#fff}
.gnb-sub{display:flex;flex-direction:column;background:#171B27}
.gnb-subitem{padding:11px 20px 11px 52px;font-size:13px;color:#A6ABB8;cursor:pointer;position:relative}
.gnb-subitem::before{content:"";position:absolute;left:34px;top:50%;width:3px;height:3px;border-radius:50%;background:#6A7081;transform:translateY(-50%)}
.gnb-subitem:hover{color:#fff}
.gnb-subitem--active{background:var(--gnb-active);color:#fff}
.gnb-subitem--active::before{background:#fff}
.gnb-promo{margin:16px;padding:16px;border-radius:12px;background:#272C3C;position:relative;overflow:hidden}
.gnb-promo-text{font-size:13px;font-weight:600;line-height:1.4}
.gnb-promo-badge{position:absolute;right:16px;bottom:16px;width:40px;height:40px;border-radius:10px;
  background:linear-gradient(135deg,#7C5CFF,#3FA9FF);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}
.gnb-promo-dots{display:flex;gap:5px;margin-top:14px}
.gnb-promo-dots span{width:6px;height:6px;border-radius:50%;background:#4A5061}
.gnb-promo-dots span.on{background:#9AA0AE;width:14px;border-radius:3px}

/* ===================== RIGHT AREA ===================== */
.right-area{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}

.top-header{
  height:56px;background:#fff;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex:0 0 56px;
}
.th-left{display:flex;align-items:center;gap:8px}
.th-logo{font-size:18px;font-weight:800;color:var(--primary)}
.th-badge{background:var(--primary-100);color:var(--primary);font-size:12px;font-weight:600;padding:3px 8px;border-radius:6px}
.th-right{display:flex;align-items:center;gap:10px}
.th-store{background:var(--primary-100);color:var(--primary);font-weight:600;font-size:13px;padding:8px 14px;border-radius:18px}
.th-link{border:1px solid var(--border);border-radius:18px;padding:8px 14px;font-size:13px;color:var(--gray-700)}
.th-icon{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;position:relative}
.th-bell .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--primary);border:1.5px solid #fff}

.container{flex:1;padding:20px 32px 32px;overflow:auto}

/* control bar */
.control-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.cb-left{display:flex;align-items:center;gap:8px}
.cb-right{display:flex;align-items:center;gap:8px}
.cb-select{width:180px;height:44px;border:1px solid var(--border);border-radius:10px;background:#fff;
  display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:14px}
.cb-select .caret{color:var(--gray-400)}
.cb-tabs{height:44px;background:#fff;border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;padding:4px;gap:0;margin-left:8px}
.cb-tab{height:36px;padding:0 16px;border-radius:8px;font-size:14px;color:var(--gray-500);font-weight:500}
.cb-tab.is-active{background:var(--gray-900);color:#fff;font-weight:600}
.cb-setting{height:44px;padding:0 18px;border:1px solid var(--border);border-radius:10px;background:#fff;font-size:14px;color:var(--gray-700)}
.cb-search{width:360px;height:44px;border:1px solid var(--border);border-radius:10px;background:#fff;
  display:flex;align-items:center;justify-content:space-between;padding:0 16px}
.cb-search-ph{color:var(--gray-400);font-size:14px}
.cb-search-ico{color:var(--gray-400)}

/* views */
.view{display:none}
.view.is-active{display:block}
.view-week.is-active,.view-day.is-active{display:flex;gap:16px;align-items:flex-start}
.card{background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-card)}

/* ===================== MONTH ===================== */
.month-card{padding:8px 0 0}
.month-head{display:flex;align-items:center;justify-content:center;gap:16px;height:64px;position:relative}
.nav-arrow{width:32px;height:32px;border-radius:8px;font-size:22px;color:var(--gray-700);display:flex;align-items:center;justify-content:center}
.nav-arrow:hover{background:var(--gray-100)}
.month-title{font-size:20px;font-weight:700;min-width:120px;text-align:center}
.today-pill{position:absolute;right:20px;top:18px;height:28px;padding:0 16px;border-radius:14px;font-size:13px;font-weight:600}
.today-pill--ghost{background:var(--gray-100);color:var(--gray-400)}
.tg-today{background:var(--gray-900);color:#fff}

.month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--border)}
.month-weekdays span{text-align:center;padding:12px 0;font-size:13px;color:var(--gray-500);font-weight:500}
.month-weekdays span.sun{color:var(--red)}
.month-weekdays span.sat{color:var(--primary)}
.month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:1fr;min-height:680px}
.mcell{border-top:1px solid var(--border);border-left:1px solid var(--border);padding:10px;min-height:115px;position:relative}
.mcell:nth-child(7n+1){border-left:none}
.mcell .dnum{font-size:14px;color:var(--gray-700);display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px}
.mcell.other .dnum{color:var(--gray-300)}
.mcell.today .dnum{background:var(--primary);color:#fff;border-radius:50%}
.mcell .ev{display:flex;align-items:center;gap:6px;margin-top:8px;background:var(--gray-100);border-radius:6px;padding:3px 8px;font-size:12px;color:var(--gray-700);white-space:nowrap;overflow:hidden}
.mcell .ev .ev-dot{width:7px;height:7px;border-radius:50%;background:#9B7CFF;flex:none}
.mcell .ev .ev-time{color:var(--gray-500)}

/* ===================== TIME GRID (week/day) ===================== */
.timegrid-card{flex:1;min-width:0;overflow:hidden;padding-bottom:8px}
.tg-head{height:64px;display:flex;align-items:center;justify-content:center;gap:16px;position:relative;border-bottom:1px solid var(--border)}
.tg-title{font-size:20px;font-weight:700}
.tg-dow{font-weight:700}
.holiday-badge{background:var(--red);color:#fff;font-size:12px;font-weight:600;padding:3px 8px;border-radius:6px;vertical-align:middle;margin-left:4px}

.tg-daycols{display:grid;grid-template-columns:84px repeat(7,1fr);border-bottom:1px solid var(--border)}
.tg-daycols .gut{}
.tg-daycols .dc{text-align:center;padding:14px 0;font-size:14px;color:var(--gray-700)}
.tg-daycols .dc .pill{display:inline-block;padding:3px 10px;border-radius:14px}
.tg-daycols .dc.selected .pill{background:var(--primary-100);color:var(--primary);font-weight:600}
.tg-daycols .dc.sun{color:var(--red)}
.tg-daycols .dc.sat{color:var(--primary)}
.tg-daycols .dc.clickable{cursor:pointer}
.tg-daycols .dc.clickable:hover .pill{background:var(--gray-100)}
/* 주 헤더 임시영업/휴무 태그 */
.tg-daycols .dc .dc-tag{display:block;margin-top:5px;font-size:10px;font-weight:700;
  padding:2px 7px;border-radius:6px;width:fit-content;margin-left:auto;margin-right:auto}
.tg-daycols .dc .dc-tag.temp{background:var(--primary);color:#fff}
.tg-daycols .dc .dc-tag.off{background:var(--gray-100);color:var(--gray-400)}
.tg-daycols .dc.dc-temp .pill{background:var(--primary-100);color:var(--primary);font-weight:700}
.tg-daycols .dc.dc-off .pill{color:var(--gray-400)}
/* 주 그리드 컬럼 상태 */
.tg-col.col-off{background-image:repeating-linear-gradient(45deg,#F2F3F5 0,#F2F3F5 6px,#F8F9FA 6px,#F8F9FA 12px)}
.tg-col.col-temp{background:var(--primary-100)}
.tg-daycols .dc.menu-open .pill{box-shadow:0 0 0 1.5px var(--primary);color:var(--primary);background:#fff;font-weight:600}

/* 주/일 헤더 앵커 드롭다운 메뉴 */
.wk-menu{position:fixed;z-index:95;background:#fff;border:1px solid var(--border);border-radius:14px;
  box-shadow:0 10px 28px rgba(0,0,0,.16);padding:6px;min-width:204px}
.wk-mi{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;
  padding:13px 14px;font-size:14px;color:var(--gray-800);font-weight:500;border-radius:8px}
.wk-mi:not(:last-child){border-bottom:1px solid var(--gray-50)}
.wk-mi:hover{background:var(--gray-50)}
.wk-mi.hl{color:var(--primary)}
.wk-ico{width:18px;text-align:center;font-size:15px}
/* 일 뷰 직원 헤더 클릭 */
.day-staff .st.clickable{cursor:pointer;border-radius:8px}
.day-staff .st.clickable:hover{background:var(--gray-50)}
.day-staff .st.menu-open{box-shadow:inset 0 0 0 1.5px var(--primary);border-radius:8px;color:var(--primary)}
/* 일 헤더 정기휴무 배지 */
.off-badge{background:var(--gray-100);color:var(--gray-500);font-size:12px;font-weight:600;
  padding:3px 8px;border-radius:6px;vertical-align:middle;margin-left:4px}

.day-staff{display:grid;grid-template-columns:84px repeat(var(--dcols,8),var(--dcolw,1fr));border-bottom:1px solid var(--border)}
.day-staff .gut{}
.day-staff .st{display:flex;align-items:center;gap:6px;justify-content:center;padding:14px 0;font-size:14px;color:var(--gray-700)}
.day-staff .st .sdot{width:10px;height:10px;border-radius:50%;flex:none}

.tg-body{display:flex;position:relative;max-height:760px;overflow-y:auto}
.tg-gutter{width:84px;flex:none;position:relative}
.tg-gutter .hour{height:var(--hour-px,120px);position:relative}
.tg-gutter .hour span{position:absolute;top:-9px;left:0;width:84px;text-align:center;font-size:12px;color:var(--gray-400)}
.tg-columns{flex:1;display:grid;position:relative}
.tg-columns{grid-template-columns:repeat(7,1fr)}
.tg-columns--day{grid-template-columns:repeat(var(--dcols,8),var(--dcolw,1fr))}
.tg-col{position:relative;border-left:1px solid var(--border)}
.tg-col .hour{height:var(--hour-px,120px);border-top:1px solid var(--border);position:relative}
.tg-col .hour::after{content:"";position:absolute;left:0;right:0;top:calc(var(--hour-px,120px)/2);border-top:1px solid var(--gray-50)}
/* disabled (before open) hatch over first hour block */
.tg-col .closed{background-image:repeating-linear-gradient(45deg,#F2F3F5 0,#F2F3F5 6px,#F8F9FA 6px,#F8F9FA 12px)}

/* event cards inside columns */
.ev-card{position:absolute;left:4px;right:4px;border-radius:10px;padding:8px 10px;overflow:hidden;font-size:12px;line-height:1.5;z-index:2}
.ev-card--blue{background:#DCEAFF;border:1px solid var(--primary-150)}
.ev-card--purple{background:#E9E2FF;border:1px solid #CDBEFF}
/* 예약 상태별 카드 색 (드래그 대비 검증용) */
.ev-card--sales{background:#3A3F4B;border:1px solid #2B303A}                    /* 매출 등록 */
.ev-card--sales .ev-name,.ev-card--sales .ev-desc,.ev-card--sales .ev-time{color:#fff}
.ev-card--sales .ev-desc,.ev-card--sales .ev-time{color:rgba(255,255,255,.82)}
.ev-card--visit{background:#B8E9DF;border:1px solid #8FD8C9}                    /* 매장 방문 */
.ev-card--ongoing{background:#FBD469;border:1px solid #F5C13F}                  /* 시술 중 */
.ev-card--noshow{background:#E04B3C;border:1px solid #C93B2D}                   /* 노쇼 */
.ev-card--noshow .ev-name,.ev-card--noshow .ev-desc,.ev-card--noshow .ev-time{color:#fff}
.ev-card--noshow .ev-desc,.ev-card--noshow .ev-time{color:rgba(255,255,255,.82)}
.ev-card--cancel{background:#EFF0F0;border:1px solid var(--gray-200)}          /* 예약 취소 */
.ev-card--cancel .ev-name,.ev-card--cancel .ev-desc,.ev-card--cancel .ev-time{color:var(--gray-400);text-decoration:line-through}
/* 겹침 = width 분할(실제 서비스): 카드끼리 겹치지 않게 겹친 수만큼 나눠 나란히. --lane/--lanes로 계산 */
.ev-card--split{left:calc(var(--lane) * (100% / var(--lanes)) + 1px);right:auto;width:calc(100% / var(--lanes) - 2px)}
/* 폭 좁아지면 축약 (2건=시술 생략 / 3건=색·이름 위주) */
.ev-card--lane2{padding:6px 7px}
.ev-card--lane2 .ev-desc{display:none}
.ev-card--lane3{padding:5px 5px}
.ev-card--lane3 .ev-desc{display:none}
.ev-card--lane3 .ev-name{font-size:11px;gap:3px}
.ev-card--lane3 .ev-time{font-size:10px;margin-top:2px}
.ev-card--lane3 .ev-naver{width:13px;height:13px;font-size:8px;right:3px;bottom:3px}
.ev-card .ev-name{display:flex;align-items:center;gap:5px;font-weight:700;color:var(--gray-900);font-size:13px}
.ev-card .ev-wlogo{width:16px;height:16px;border-radius:50%;background:var(--primary);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ev-card .ev-desc{color:var(--gray-700);margin-top:2px}
.ev-card .ev-time{color:var(--gray-500);margin-top:4px}
.ev-card .ev-naver{position:absolute;right:8px;bottom:8px;width:18px;height:18px;border-radius:50%;background:var(--naver);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.ev-block{position:absolute;left:4px;right:4px;border-radius:8px;padding:8px 10px;font-size:12px;color:var(--gray-500);
  background-image:repeating-linear-gradient(45deg,#ECEDEF 0,#ECEDEF 6px,#F4F5F6 6px,#F4F5F6 12px);border:1px solid var(--gray-200);z-index:2}

/* ===================== MINI PANEL ===================== */
.mini-panel{width:320px;flex:0 0 320px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-card);padding:20px}
.mini-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.mini-head .mtit{font-size:16px;font-weight:700;color:var(--primary)}
.mini-head button{width:24px;height:24px;font-size:18px;color:var(--gray-400)}
.mini-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}
.mini-weekdays span{text-align:center;font-size:13px;color:var(--gray-500);padding:6px 0}
.mini-weekdays span.sun{color:var(--red)}
.mini-weekdays span.sat{color:var(--primary)}
.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);position:relative}
.mini-cell{height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;font-size:14px;color:var(--gray-900);z-index:1}
.mini-cell .cnt{font-size:11px;color:var(--primary);line-height:1;height:12px}
.mini-cell.other{color:var(--gray-300)}
.mini-cell.other .cnt{visibility:hidden}
.mini-cell.sun-c{color:var(--red)}
.mini-cell.sat-c{color:var(--primary)}
/* week selected row */
.mini-grid.week-sel .row-sel{position:absolute;left:0;right:0;height:52px;background:var(--gray-900);border-radius:26px;z-index:0}
.mini-grid.week-sel .mini-cell.in-week{color:#fff}
.mini-grid.week-sel .mini-cell.in-week .cnt{color:#fff}
/* day selected */
.mini-cell.day-sel{}
.mini-cell.day-sel .num-wrap{background:var(--gray-900);color:#fff;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center}

.mini-divider{height:4px;background:var(--gray-100);border-radius:2px;margin:20px -20px;}
.mini-sec-title{text-align:center;font-size:15px;font-weight:700;color:var(--primary);margin-bottom:18px}
.mini-stats{display:flex;flex-direction:column;gap:16px}
.mini-stat{display:flex;align-items:center;gap:8px;font-size:14px}
.mini-stat .si{width:20px;text-align:center}
.mini-stat .sl{flex:1;color:var(--gray-700)}
.mini-stat .sv{font-weight:600}
.mini-foot{border-top:1px solid var(--border);margin:18px -20px -20px;padding:14px 0;text-align:center;font-size:13px;color:var(--gray-500)}

/* list */
.list-empty{padding:80px;text-align:center;color:var(--gray-400);font-size:15px}

/* ===================== FLOATING ===================== */
.fab-group{position:fixed;right:28px;bottom:28px;display:flex;flex-direction:column;align-items:center;gap:12px;z-index:20}
.fab-inquiry{width:56px;height:56px;border-radius:50%;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.12);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--gray-500)}
.fab-create{width:56px;height:56px;border-radius:50%;background:var(--primary);color:#fff;font-size:28px;box-shadow:var(--shadow-1)}
.naver-toast{position:fixed;right:96px;bottom:28px;width:300px;background:#fff;border-radius:14px;box-shadow:0 6px 24px rgba(0,0,0,.14);
  padding:16px;display:flex;gap:12px;z-index:20}
.nt-logo{width:36px;height:36px;border-radius:10px;background:var(--naver);color:#fff;font-weight:800;font-size:18px;display:flex;align-items:center;justify-content:center;flex:none}
.nt-title{font-size:14px;font-weight:700;margin-bottom:4px}
.nt-desc{font-size:12px;color:var(--gray-500);line-height:1.5}
.nt-close{position:absolute;top:12px;right:12px;color:var(--gray-400);font-size:13px}

/* ============================================================
   임시 영업일 (Temporary Business Day) — 직원 근무 및 휴가 설정
   ============================================================ */
.settings-wrap{padding:24px 32px 40px;overflow:auto;flex:1}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px}
.page-title{font-size:22px;font-weight:800;color:var(--gray-900)}
.page-sub{font-size:14px;color:var(--gray-500);margin-top:6px;line-height:1.5}

/* tabs */
.set-tabs{display:flex;gap:24px;border-bottom:1px solid var(--border);margin:20px 0 24px}
.set-tab{padding:12px 2px;font-size:15px;color:var(--gray-400);font-weight:600;position:relative}
.set-tab.is-active{color:var(--gray-900)}
.set-tab.is-active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gray-900)}
.set-tab .new-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-left:6px;vertical-align:top}

/* info banner */
.info-banner{display:flex;gap:10px;align-items:flex-start;background:var(--primary-100);border:1px solid var(--primary-150);
  border-radius:12px;padding:14px 16px;margin-bottom:24px;font-size:13.5px;color:#1B5FCC;line-height:1.55}
.info-banner .ib-ico{flex:none;font-size:16px;line-height:1.3}
.info-banner b{font-weight:700}

/* layout: calendar + side */
.sb-layout{display:flex;gap:20px;align-items:flex-start}
.sb-cal{flex:1;min-width:0}
.sb-side{width:340px;flex:0 0 340px}

/* calendar card header with legend */
.sb-cal .month-head{justify-content:space-between;padding:0 20px;height:60px}
.sb-cal .mh-left{display:flex;align-items:center;gap:12px}
.sb-legend{display:flex;gap:16px;align-items:center;font-size:13px;color:var(--gray-500)}
.sb-legend .lg{display:flex;align-items:center;gap:6px}
.sb-legend .sw{width:12px;height:12px;border-radius:4px}
.sw-off{background:repeating-linear-gradient(45deg,#ECEDEF 0,#ECEDEF 4px,#F6F7F8 4px,#F6F7F8 8px);border:1px solid var(--gray-200)}
.sw-open{background:var(--primary-100);border:1px solid var(--primary-150)}

/* month grid clickable cells for off-days */
.mcell.off{background:repeating-linear-gradient(45deg,#F4F5F6 0,#F4F5F6 7px,#FAFBFC 7px,#FAFBFC 14px)}
.mcell.off .dnum{color:var(--gray-300)}
.mcell.off .off-tag{position:absolute;left:10px;bottom:10px;font-size:11px;color:var(--gray-400);font-weight:500}
.mcell.openable{cursor:pointer}
.mcell.openable:hover{outline:2px solid var(--primary-150);outline-offset:-2px}
.mcell.openday{background:var(--primary-100)}
.mcell.openday .dnum{color:var(--primary);font-weight:700}
.mcell .open-badge{display:inline-flex;align-items:center;gap:4px;margin-top:8px;background:var(--primary);color:#fff;
  border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600;white-space:nowrap}
.mcell .open-badge{cursor:pointer}
.mcell .open-badge:hover{filter:brightness(.92)}
.mcell .open-badge .ob-x{opacity:.8}
.mcell .hint-add{position:absolute;right:10px;top:10px;width:20px;height:20px;border-radius:50%;border:1px dashed var(--gray-300);
  color:var(--gray-400);font-size:13px;display:none;align-items:center;justify-content:center}
.mcell.openable:hover .hint-add{display:flex}

/* 캘린더 인라인 임시 영업일 팝오버 */
.cal-mask,.sheet-mask{position:fixed;inset:0;background:rgba(20,22,28,.45);
  display:flex;align-items:center;justify-content:center}
.cal-mask{z-index:90}.sheet-mask{z-index:95}
.cal-pop{position:relative;width:360px;background:#fff;border:1px solid var(--border);
  border-radius:16px;box-shadow:0 18px 48px rgba(0,0,0,.22);padding:20px}
.cal-pop .cp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.cal-pop .cp-title{font-size:16px;font-weight:700;color:var(--gray-900);margin-bottom:4px}
.cal-pop .cp-date{font-size:13px;color:var(--gray-500)}
.cal-pop .cp-date .cp-tag{margin-left:6px;font-size:11px;font-weight:600;color:var(--gray-500);
  background:var(--gray-100);border-radius:5px;padding:2px 7px;vertical-align:middle}
.cal-pop .cp-x{background:none;color:var(--gray-400);font-size:15px;width:24px;height:24px}
.cal-pop .cp-field{margin-bottom:14px}
.cal-pop .cp-label{font-size:13px;font-weight:600;color:var(--gray-700);margin-bottom:7px}
.cal-pop .cp-label .req{color:var(--red)}
.cal-pop .cp-times{display:flex;align-items:center;gap:8px}
.cal-pop .cp-sel{flex:1;height:38px;border:1px solid var(--border);border-radius:8px;padding:0 10px;
  font-size:13px;color:var(--gray-800);background:#fff}
.cal-pop .cp-tilde{color:var(--gray-400)}
/* 담당자 멀티셀렉트(접이식 드롭다운) */
.cal-pop .cp-msel{position:relative}
.cal-pop .cp-trig{width:100%;height:40px;border:1px solid var(--border);border-radius:8px;background:#fff;
  display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:13px;
  color:var(--gray-800);font-weight:500;cursor:pointer}
.cal-pop .cp-trig.open{border-color:var(--primary)}
.cal-pop .cp-sum-ph{color:var(--gray-400);font-weight:400}
.cal-pop .cp-caret{color:var(--gray-400);font-size:11px}
.cal-pop .cp-panel{margin-top:6px;border:1px solid var(--border);border-radius:10px;padding:8px;
  box-shadow:0 6px 16px rgba(0,0,0,.08)}
.cal-pop .cp-search{position:relative}
.cal-pop .cp-search input{width:100%;height:36px;border:1px solid var(--border);border-radius:8px;
  padding:0 32px 0 11px;font-size:13px;color:var(--gray-800)}
.cal-pop .cp-search-ico{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:13px;opacity:.5}
.cal-pop .cp-list{max-height:184px;overflow-y:auto;margin-top:6px;display:flex;flex-direction:column;gap:1px}
.cal-pop .cp-row{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;
  padding:9px 10px;border-radius:8px;font-size:13px;color:var(--gray-700);cursor:pointer}
.cal-pop .cp-row:hover{background:var(--gray-50)}
.cal-pop .cp-rl{display:flex;align-items:center;gap:8px}
.cal-pop .cp-rl .cp-sd{width:8px;height:8px;border-radius:50%}
.cal-pop .cp-ck{width:18px;height:18px;border:1.5px solid var(--gray-300);border-radius:6px;flex:none}
.cal-pop .cp-row.on{color:var(--primary);font-weight:600}
.cal-pop .cp-row.on .cp-ck{border-color:var(--primary);background:var(--primary) center/12px no-repeat;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E")}
.cal-pop .cp-row-all{font-weight:600;color:var(--gray-800);border-bottom:1px solid var(--border);border-radius:0;margin-bottom:3px;padding-bottom:11px}
.cal-pop .cp-empty{font-size:12px;color:var(--gray-400);padding:12px 4px;text-align:center}
.cal-pop .cp-actions{display:flex;align-items:center;justify-content:space-between;margin-top:18px}
.cal-pop .cp-right{display:flex;gap:8px;margin-left:auto}
.cal-pop .cp-del{background:none;color:var(--red);font-size:13px;font-weight:600;padding:9px 4px}
.cal-pop .cp-cancel{height:38px;padding:0 16px;border-radius:8px;background:var(--gray-100);color:var(--gray-600);font-size:13px;font-weight:600}
.cal-pop .cp-save{height:38px;padding:0 16px;border-radius:8px;background:var(--primary);color:#fff;font-size:13px;font-weight:600}
.cal-pop .cp-note{font-size:12px;color:var(--primary);background:var(--primary-100);border-radius:8px;padding:8px 10px;margin-bottom:14px;line-height:1.5}

/* 날짜 칸 클릭 가능 */
.mcell.clickable{cursor:pointer}
.mcell.clickable:hover{outline:2px solid var(--primary-150);outline-offset:-2px}
/* 휴무 칸 hover → '＋ 임시 영업일' 단서 (발견성) */
.mcell.off.openable:hover::after,.mcell.off.openable.demo-hover::after{content:"＋ 임시 영업일";position:absolute;left:50%;bottom:8px;
  transform:translateX(-50%);background:var(--primary);color:#fff;font-size:11px;font-weight:600;
  padding:3px 9px;border-radius:6px;white-space:nowrap;z-index:3}
.mcell.off.openable:hover .off-tag,.mcell.off.openable.demo-hover .off-tag{opacity:0}

/* 날짜 클릭 액션 시트 (딤 + 중앙 노출, 실제 제품 동선) */
.day-sheet{width:320px;display:flex;flex-direction:column;align-items:center;gap:12px}
.day-sheet .ds-chip{background:rgba(60,63,70,.92);color:#fff;font-size:17px;font-weight:700;
  padding:11px 26px;border-radius:24px;margin-bottom:4px}
.day-sheet .ds-btn{position:relative;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
  background:#fff;border-radius:14px;box-shadow:0 6px 18px rgba(0,0,0,.12);padding:16px;
  font-size:15px;font-weight:600;color:var(--gray-900)}
.day-sheet .ds-btn:hover{background:var(--gray-50)}
.day-sheet .ds-btn.hl{color:var(--primary)}
.day-sheet .ds-ico{font-size:16px}
.day-sheet .ds-sub{position:absolute;right:16px;font-size:11px;font-weight:500;color:var(--gray-400)}

/* 토스트 */
.m-toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%) translateY(10px);
  background:rgba(33,37,43,.94);color:#fff;font-size:13px;padding:11px 18px;border-radius:10px;
  opacity:0;pointer-events:none;transition:.2s;z-index:120}
.m-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* control bar 리스트 아이콘 */
.cb-listbtn{width:44px;height:44px;border:1px solid var(--border);border-radius:10px;background:#fff;
  color:var(--gray-500);display:flex;align-items:center;justify-content:center;flex:none}
.cb-listbtn svg{width:20px;height:20px}

/* ============ LIST VIEW ============ */
.view-list{display:none;gap:20px;align-items:flex-start}
.view-list.is-active{display:flex}
.list-card{flex:1;padding:0;overflow:hidden}
.lc-head{position:relative;display:flex;align-items:center;justify-content:center;gap:16px;
  height:64px;border-bottom:1px solid var(--border)}
.lc-title{font-size:16px;font-weight:700;color:var(--gray-900)}
.lc-title .lc-dow{color:var(--gray-500);font-weight:600}
.lc-right,.tg-right{position:absolute;right:20px;top:50%;transform:translateY(-50%);display:flex;gap:8px;align-items:center}
.tg-right{top:18px;transform:none}
.lc-right .today-pill,.tg-right .today-pill{position:static}
.lc-temp-btn{height:32px;padding:0 14px;border:1px solid var(--primary);border-radius:8px;background:#fff;
  color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.lc-temp-btn:hover{background:var(--primary-100)}
.lc-rows{padding:4px 0}
.lrow{position:relative;display:grid;grid-template-columns:1.05fr 1fr 1.2fr;gap:20px;
  padding:18px 24px 18px 28px;border-bottom:1px solid var(--border)}
.lrow:last-child{border-bottom:none}
.lrow .lr-bar{position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:0 3px 3px 0;background:transparent}
.lrow--done   .lr-bar{background:var(--gray-900)}
.lrow--noshow .lr-bar{background:var(--red)}
.lrow--block  .lr-bar{background:var(--gray-300)}
.lrow.is-muted{background:var(--gray-50)}
.lr-time{font-size:14px;font-weight:600;color:var(--gray-900)}
.lr-time .lr-dur{color:var(--gray-400);font-weight:500}
.lr-label{margin-top:6px;font-size:13px;font-weight:600;color:var(--gray-700);display:flex;align-items:center;gap:6px}
.lrow--noshow .lr-label{color:var(--red)}
.lrow--cancel .lr-label,.lrow--block .lr-label{color:var(--gray-400)}
.lr-n{width:16px;height:16px;border-radius:50%;background:var(--naver);color:#fff;font-size:10px;
  font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.lr-cust{font-size:14px;color:var(--gray-800,#2B2F3A);font-weight:500}
.lr-staff{margin-top:6px;font-size:13px;color:var(--gray-500)}
.lr-svc{font-size:14px;color:var(--gray-800,#2B2F3A)}
.lr-memo{margin-top:6px;font-size:13px;color:var(--gray-700)}
.lr-memo.muted{color:var(--gray-400)}
.lr-svc.clamp,.lr-memo.clamp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:340px}
/* 취소선/딤 */
.lrow.is-strike .lr-time,.lrow.is-strike .lr-cust,.lrow.is-strike .lr-svc{text-decoration:line-through}
.lrow.is-muted .lr-time,.lrow.is-muted .lr-cust,.lrow.is-muted .lr-staff,
.lrow.is-muted .lr-svc,.lrow.is-muted .lr-memo{color:var(--gray-400)}

/* side: registered list */
.sb-side .card{padding:0}
.side-head{padding:18px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.side-head .sh-title{font-size:16px;font-weight:700}
.side-head .sh-count{color:var(--primary);font-weight:700}
.side-list{padding:8px 0;max-height:520px;overflow:auto}
.side-empty{padding:48px 20px;text-align:center;color:var(--gray-400);font-size:14px;line-height:1.6}
.side-empty .se-ico{font-size:28px;display:block;margin-bottom:10px}
.tbd-item{padding:16px 20px;border-bottom:1px solid var(--gray-100)}
.tbd-item:last-child{border-bottom:none}
.tbd-row1{display:flex;align-items:center;justify-content:space-between}
.tbd-date{font-size:15px;font-weight:700}
.tbd-date .dow{color:var(--gray-400);font-weight:500;margin-left:4px;font-size:13px}
.tbd-actions{display:flex;gap:6px}
.tbd-actions button{width:28px;height:28px;border-radius:7px;color:var(--gray-400);font-size:13px}
.tbd-actions button:hover{background:var(--gray-100);color:var(--gray-700)}
.tbd-meta{display:flex;gap:14px;margin-top:8px;font-size:13px;color:var(--gray-500);flex-wrap:wrap}
.tbd-meta .tm{display:flex;align-items:center;gap:5px}
.tbd-channels{display:flex;gap:6px;margin-top:10px}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 9px;border-radius:7px}
.chip-naver{background:#E7FBF0;color:#08A24A}
.chip-naver .nlogo{width:13px;height:13px;border-radius:3px;background:var(--naver);color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center}
.chip-gb{background:var(--primary-100);color:var(--primary)}
.side-foot{padding:16px 20px}
.btn-primary{width:100%;height:48px;border-radius:12px;background:var(--primary);color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:6px}
.btn-primary:hover{filter:brightness(.96)}
.btn-ghost{height:48px;border-radius:12px;border:1px solid var(--border);background:#fff;color:var(--gray-700);font-size:15px;font-weight:600;flex:1}

/* ============ MODAL ============ */
.modal-mask{position:fixed;inset:0;background:rgba(20,23,31,.5);display:none;align-items:center;justify-content:center;z-index:50}
.modal-mask.open{display:flex}
.modal{width:480px;max-width:calc(100vw - 40px);background:#fff;border-radius:18px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden}
.modal-head{padding:22px 24px 0;display:flex;align-items:flex-start;justify-content:space-between}
.modal-head .mt{font-size:19px;font-weight:800}
.modal-head .mc{font-size:18px;color:var(--gray-400)}
.modal-body{padding:18px 24px 8px}
.field{margin-bottom:22px}
.field-label{font-size:13px;font-weight:700;color:var(--gray-700);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.field-label .req{color:var(--primary)}
/* date display */
.date-box{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--gray-50)}
.date-box .db-date{font-size:16px;font-weight:700}
.date-box .db-tag{font-size:12px;font-weight:600;color:var(--gray-400);background:#fff;border:1px solid var(--border);padding:3px 8px;border-radius:6px}
/* time range */
.time-range{display:flex;align-items:center;gap:10px}
.sel{flex:1;height:48px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:15px;font-family:inherit;color:var(--gray-900);background:#fff
  url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%238A929E' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 14px center;
  -webkit-appearance:none;appearance:none}
.time-range .tilde{color:var(--gray-400)}
/* staff chips */
.staff-pick{display:flex;flex-wrap:wrap;gap:8px}
.staff-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:20px;padding:8px 14px;font-size:14px;color:var(--gray-700);cursor:pointer;user-select:none}
.staff-chip .sd{width:10px;height:10px;border-radius:50%}
.staff-chip.sel{border-color:var(--primary);background:var(--primary-100);color:var(--primary);font-weight:600}
.staff-chip.all{color:var(--gray-500)}
.staff-chip.all.sel{color:var(--primary)}
/* toggles */
.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border:1px solid var(--border);border-radius:10px;margin-bottom:10px}
.toggle-row .tr-left{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600}
.toggle-row .tr-desc{font-size:12px;color:var(--gray-400);font-weight:400;margin-top:2px}
.tr-logo{width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff;flex:none}
.tr-logo.naver{background:var(--naver)}
.tr-logo.gb{background:var(--primary)}
.switch{width:46px;height:26px;border-radius:13px;background:var(--gray-200);position:relative;flex:none;transition:.18s;cursor:pointer}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:.18s}
.switch.on{background:var(--primary)}
.switch.on::after{left:23px}
.modal-foot{display:flex;gap:10px;padding:8px 24px 24px}
.modal-foot .btn-primary{flex:1.6}

/* ============================================================
   샵 운영 설정 모달 (Modal-shop-setting)  — Figma 23756:73193
   ============================================================ */
/* 설정 드롭다운 */
.cb-setting{position:relative}
.set-dropdown{position:absolute;top:52px;left:0;min-width:180px;background:#fff;border:1px solid var(--gray-100);
  border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:0;z-index:40;display:none;overflow:hidden;text-align:left}
.set-dropdown.open{display:block}
.set-dropdown .sd-item{display:flex;align-items:center;gap:12px;padding:15px 18px;font-size:15px;font-weight:500;color:var(--gray-900);cursor:pointer;white-space:nowrap}
.set-dropdown .sd-item+.sd-item{border-top:1px solid var(--gray-100)}
.set-dropdown .sd-item:hover{background:var(--gray-50)}
.set-dropdown .sd-item .sdi{width:22px;height:22px;flex:none;color:var(--gray-700)}

/* 모달 셸 */
.shop-mask{position:fixed;inset:0;background:rgba(20,23,31,.45);display:none;align-items:center;justify-content:center;z-index:60}
.shop-mask.open{display:flex}
.shop-modal{width:680px;max-width:calc(100vw - 40px);height:min(940px,calc(100vh - 48px));background:#fff;border-radius:16px;
  box-shadow:0 3px 10px rgba(0,0,0,.2);display:flex;flex-direction:column;overflow:hidden}
.shop-modal-title{display:flex;align-items:center;gap:8px;padding:16px;border-bottom:1px solid var(--gray-100)}
.shop-modal-title .smt-text{flex:1;font-size:16px;font-weight:700;color:var(--gray-700)}
.shop-modal-title .smt-close{width:24px;height:24px;color:var(--gray-500);font-size:18px;display:flex;align-items:center;justify-content:center}
.shop-modal-body{flex:1;display:flex;min-height:0}

/* 좌측 섹션 내비 */
.smn{width:188px;flex:none;border-right:1px solid var(--gray-100);padding:20px 12px 24px;display:flex;flex-direction:column;gap:24px;overflow:auto}
.smn-group{display:flex;flex-direction:column;gap:4px}
.smn-gtitle{display:flex;align-items:center;gap:2px;padding:0 8px;font-size:12px;font-weight:500;color:var(--gray-300)}
.smn-gtitle .tip{width:14px;height:14px;border-radius:50%;border:1px solid var(--gray-200);color:var(--gray-300);font-size:9px;display:inline-flex;align-items:center;justify-content:center}
.smn-btn{display:flex;align-items:center;padding:8px;border-radius:8px;font-size:14px;font-weight:700;color:var(--gray-700);cursor:pointer;text-align:left;width:100%;background:none}
.smn-btn:hover{background:var(--gray-50)}
.smn-btn.is-active{color:var(--primary)}
.smn-btn .new-dot{width:5px;height:5px;border-radius:50%;background:var(--red);margin-left:5px}

/* 우측 콘텐츠 */
.smc{flex:1;min-width:0;overflow:auto;padding:20px 20px 120px}
.smc-pane{display:none;flex-direction:column;gap:32px}
.smc-pane.is-active{display:flex}

/* 요일별 설정 영역 */
.dayblock{display:flex;flex-direction:column;gap:12px}
.dayblock.is-off .db-times,.dayblock.is-off .break-box{opacity:1}
.db-head{display:flex;align-items:center;justify-content:space-between}
.db-label{font-size:16px;font-weight:500;color:var(--gray-700);line-height:24px}
.dayblock.is-off .db-label{color:var(--gray-700)}
/* toggle */
.tg{width:36px;height:24px;border-radius:999px;background:var(--primary);position:relative;flex:none;cursor:pointer;transition:.16s}
.tg::after{content:"";position:absolute;top:4px;left:16px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.16s}
.tg.off{background:var(--gray-300)}
.tg.off::after{left:4px}
/* time selects */
.db-times{display:flex;align-items:center;gap:12px;height:44px}
.selbox{flex:1;min-width:120px;height:44px;border:1px solid var(--gray-100);border-radius:10px;background:#fff;
  display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:14px;color:var(--gray-700);cursor:pointer}
.selbox .chev{width:20px;height:20px;color:var(--gray-400);display:flex;align-items:center;justify-content:center;font-size:11px}
.db-times .tilde{color:var(--gray-300);font-size:12px;font-weight:500}
.dayblock.is-off .selbox{border-color:var(--gray-50);color:var(--gray-200);cursor:default}
.dayblock.is-off .selbox .chev{color:var(--gray-100)}
.dayblock.is-off .db-times .tilde{color:var(--gray-100)}
/* break box */
.break-box{background:var(--gray-50);border-radius:8px;padding:12px 16px 16px}
.break-box.collapsed{display:flex;align-items:center;justify-content:space-between;height:44px;padding:12px 16px}
.break-box .bb-row{display:flex;align-items:center;justify-content:space-between}
.break-box .bb-label{font-size:14px;font-weight:500;color:var(--gray-500)}
.break-box .bb-add{display:flex;align-items:center;gap:2px;color:var(--primary);font-size:14px;font-weight:500;cursor:pointer}
.break-box .bb-actions{display:flex;align-items:center;gap:8px}
.break-box .bb-actions .ba{color:var(--primary);font-size:14px;font-weight:500;cursor:pointer}
.break-box .bb-actions .bdiv{width:1px;height:12px;background:var(--gray-200)}
.break-box .bb-times{display:flex;align-items:center;gap:12px;height:44px;margin-top:12px}
.dayblock.is-off .break-box{opacity:1}
.dayblock.is-off .break-box .bb-label,.dayblock.is-off .break-box .bb-add{color:var(--gray-200)}

/* footer 저장 */
.shop-foot{padding:20px 32px;border-top:1px solid var(--gray-100)}
.shop-foot .btn-save{width:100%;padding:16px;border-radius:12px;background:var(--gray-900);color:#fff;font-size:16px;font-weight:500}

/* placeholder pane */
.pane-ph{padding:48px 8px;color:var(--gray-400);font-size:14px;line-height:1.7;text-align:center}

/* 임시 영업일 (모달 내 콘텐츠) */
.tbd-info{display:flex;gap:8px;background:var(--primary-100);border-radius:10px;padding:12px 14px;font-size:13px;color:#1B5FCC;line-height:1.55}
.tbd-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.tbd-cal-head .tch-left{display:flex;align-items:center;gap:8px}
.tbd-cal-head .tch-title{font-size:16px;font-weight:700}
.tbd-cal-head .nav-arrow{width:28px;height:28px;font-size:18px}
.tbd-legend{display:flex;gap:12px;font-size:12px;color:var(--gray-500)}
.tbd-legend .lg{display:flex;align-items:center;gap:5px}
.tbd-legend .sw{width:11px;height:11px;border-radius:3px}
.mini-month{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--gray-100);border-radius:12px;overflow:hidden}
.mini-month .mm-wd{text-align:center;padding:8px 0;font-size:12px;color:var(--gray-400);background:var(--gray-50)}
.mini-month .mm-wd.sun{color:var(--red)}.mini-month .mm-wd.sat{color:var(--primary)}
.mini-month .mm-cell{height:54px;border-top:1px solid var(--gray-100);border-left:1px solid var(--gray-100);padding:6px;font-size:13px;position:relative}
.mini-month .mm-cell:nth-child(7n+1){border-left:none}
.mini-month .mm-cell.other{color:var(--gray-300)}
.mini-month .mm-cell.off{background:repeating-linear-gradient(45deg,#F4F5F6 0,#F4F5F6 6px,#FAFBFC 6px,#FAFBFC 12px);cursor:pointer}
.mini-month .mm-cell.off:hover{outline:2px solid var(--primary-150);outline-offset:-2px}
.mini-month .mm-cell.open{background:var(--primary-100)}
.mini-month .mm-cell.open .mm-n{color:var(--primary);font-weight:700}
.mini-month .mm-cell .mm-tag{position:absolute;left:6px;bottom:6px;font-size:10px;color:var(--gray-400)}
.mini-month .mm-cell .mm-badge{position:absolute;left:5px;right:5px;bottom:5px;background:var(--primary);color:#fff;border-radius:5px;
  font-size:10px;font-weight:600;padding:2px 4px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbd-mini-list{display:flex;flex-direction:column;gap:8px}
.tbd-mini-item{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--gray-100);border-radius:10px;padding:12px 14px}
.tbd-mini-item .tmi-l{font-size:14px}
.tbd-mini-item .tmi-l b{font-weight:700}
.tbd-mini-item .tmi-meta{font-size:12px;color:var(--gray-500);margin-top:3px}
.tbd-mini-item .tmi-del{color:var(--gray-400);cursor:pointer;font-size:13px}

/* 임시 영업일 - 인라인 시간 편집기 */
.mini-month .mm-cell.sel{outline:2px solid var(--primary);outline-offset:-2px}
.tmi-btns{display:flex;gap:10px}
.tmi-edit{color:var(--primary);cursor:pointer;font-size:13px;font-weight:600}
.tbd-editor{border:1px solid var(--primary-150);background:var(--primary-100);border-radius:12px;padding:16px}
.tbd-editor .te-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.tbd-editor .te-date{font-size:15px}
.tbd-editor .te-date b{font-weight:700}
.tbd-editor .te-dow{color:var(--gray-500);font-size:13px}
.tbd-editor .te-tag{margin-left:8px;font-size:11px;font-weight:600;color:var(--gray-500);background:#fff;border:1px solid var(--gray-100);padding:3px 8px;border-radius:6px}
.tbd-editor .te-label{font-size:13px;font-weight:700;color:var(--gray-700);margin-bottom:8px}
.tbd-editor .te-times{display:flex;align-items:center;gap:12px}
.tbd-editor .tilde{color:var(--gray-400);font-size:12px}
.t-sel{flex:1;height:44px;border:1px solid var(--gray-100);border-radius:10px;background:#fff
  url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%238A929E' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 14px center;
  padding:0 14px;font-size:14px;font-family:inherit;color:var(--gray-700);-webkit-appearance:none;appearance:none;cursor:pointer}
.tbd-editor .te-actions{display:flex;gap:10px;margin-top:16px}
.tbd-editor .te-cancel{flex:1;height:44px;border:1px solid var(--gray-200);border-radius:10px;background:#fff;font-size:14px;font-weight:600;color:var(--gray-700)}
.tbd-editor .te-save{flex:1.6;height:44px;border-radius:10px;background:var(--primary);color:#fff;font-size:14px;font-weight:700}

/* 임시 영업일 편집기 - 담당자 칩 */
.tbd-editor .te-field+.te-field{margin-top:16px}
.tbd-editor .te-staff{display:flex;flex-wrap:wrap;gap:8px}
.tbd-editor .te-staff .staff-chip{background:#fff}
.tbd-editor .te-staff .staff-chip.sel{background:var(--primary-100)}

/* ================= 드래그 예약 (주·일 뷰) ================= */
#dayColumns .tg-col, #weekColumns .tg-col{cursor:crosshair}
/* 예약 카드 드래그(이동·리사이즈) */
#dayColumns .ev-card, #weekColumns .ev-card{cursor:grab;user-select:none;touch-action:none}
#dayColumns .ev-card::after, #weekColumns .ev-card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9px;cursor:ns-resize}
#dayColumns .ev-card::before, #weekColumns .ev-card::before{content:"";position:absolute;left:0;right:0;top:0;height:9px;cursor:ns-resize;z-index:1}
#dayColumns .ev-card.dragging, #weekColumns .ev-card.dragging{cursor:grabbing;z-index:30;box-shadow:0 8px 24px rgba(20,30,60,.22);opacity:.96}
.ev-card--short{padding-top:5px;padding-bottom:5px}
.ev-card--short .ev-desc, .ev-card--short .ev-time{display:none}
.bk-ghost{position:absolute;left:4px;right:4px;border-radius:10px;z-index:16;pointer-events:none;
  background:linear-gradient(to bottom, rgba(34,126,255,.26), rgba(34,126,255,.03));
  border:2px dashed var(--primary);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:3px;padding:8px 10px}
/* 선택 시간 = 파란 글씨 (드래그 중 다른 카드는 회색톤 → 대비 확보) */
.bk-ghost .g-time{font-size:12.5px;font-weight:800;color:var(--primary)}
.bk-ghost .g-hint{font-size:11px;color:var(--primary);opacity:.85}
/* 드래그 모드: 예약 카드 = bg gray/50 + 콘텐츠 opacity 10% / 예약 막기 = bg 유지 + 콘텐츠 opacity 10% */
/* 드래그(선택)가 겹치는 예약/막기만 dim: 예약 카드=bg gray/50, 콘텐츠 opacity 10% / 예약 막기=bg 유지 + 콘텐츠 10% */
.ev-card.bk-under{background:var(--gray-50);border-color:var(--gray-100);box-shadow:none;transition:background .12s,border-color .12s}
.ev-card.bk-under > *, .ev-block.bk-under > *{opacity:.1;transition:opacity .12s}
.ev-card--new{background:color-mix(in srgb,var(--c) 15%,#fff);border:1px solid color-mix(in srgb,var(--c) 42%,#fff)}
.ev-card--new .ev-name{color:var(--gray-900)}
.ev-card--new .ev-dot{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}

/* ===== 예약 등록 모달 (실제 공비서 2-step replica) ===== */
.bk-mask{position:fixed;inset:0;background:rgba(15,20,35,.35);z-index:130;display:flex;align-items:center;justify-content:center;padding:20px}
.bk-modal{width:440px;max-height:calc(100vh - 40px);background:#fff;border-radius:16px;box-shadow:0 16px 48px rgba(20,30,60,.22);display:flex;flex-direction:column;overflow:hidden;animation:bkPin .16s ease-out}
@keyframes bkPin{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.bk-modal .m-head{position:relative;text-align:center;padding:18px 20px 14px;flex:none}
.bk-modal .m-head .t{font-size:16px;font-weight:700;letter-spacing:-.2px}
.bk-modal .m-x{position:absolute;right:14px;top:14px;width:26px;height:26px;border-radius:8px;color:var(--gray-500);font-size:17px;display:flex;align-items:center;justify-content:center}
.bk-modal .m-x:hover{background:var(--gray-100)}
.bk-modal .m-body{padding:0 20px;overflow-y:auto;flex:1}
.bk-modal .m-foot{display:flex;gap:8px;padding:14px 20px 18px;flex:none;border-top:1px solid var(--gray-50)}
.bk-modal .m-foot button{flex:1;height:48px;border-radius:12px;font-size:15px;font-weight:700}
.bk-modal .btn-ghost{background:#fff;border:1px solid var(--gray-200);color:var(--gray-700)}
.bk-modal .btn-primary{background:var(--primary);color:#fff}
.bk-modal .btn-primary:disabled{background:var(--gray-200);color:#fff;cursor:not-allowed}
/* step1 */
.bk-modal .pills{display:flex;gap:8px;margin-bottom:12px}
.bk-modal .pill-btn{flex:1;height:42px;border-radius:10px;border:1px solid var(--gray-200);background:#fff;font-size:14px;font-weight:600;color:var(--gray-700)}
.bk-modal .pill-btn:hover{border-color:var(--gray-300)}
.bk-modal .m-search{position:relative;margin-bottom:12px}
.bk-modal .m-search input{width:100%;height:46px;border:1px solid var(--gray-200);border-radius:12px;padding:0 42px 0 14px;font-size:14px;font-family:inherit}
.bk-modal .m-search input:focus{outline:none;border-color:var(--primary)}
.bk-modal .m-search .ico{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--gray-400);font-size:16px}
.bk-modal .cust-list{display:flex;flex-direction:column;gap:8px;padding-bottom:6px}
.bk-modal .cust{border:1px solid var(--gray-200);border-radius:12px;padding:13px 14px;cursor:pointer}
.bk-modal .cust:hover{border-color:var(--primary);background:var(--primary-100)}
.bk-modal .cust-r1{display:flex;justify-content:space-between;align-items:center}
.bk-modal .cust-name{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:4px}
.bk-modal .cust-name .chev{color:var(--gray-300);font-size:13px}
.bk-modal .cust-name .meta{color:var(--gray-400);font-weight:500;font-size:12px;margin-left:4px}
.bk-modal .cust-noshow{font-size:12.5px;color:var(--gray-400)}
.bk-modal .cust-r2{display:flex;justify-content:space-between;align-items:center;margin-top:3px}
.bk-modal .cust-phone{font-size:13.5px;font-weight:600;color:var(--gray-700)}
.bk-modal .cust-staff{font-size:12.5px;color:var(--gray-400)}
.bk-modal .cust-tag{font-size:12px;color:var(--gray-400);margin-top:5px}
/* step2 */
.bk-modal .f{margin-bottom:16px}
.bk-modal .f-l{font-size:13px;font-weight:700;color:var(--gray-900);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}
.bk-modal .f-l .lt{display:flex;align-items:center;gap:5px}
.bk-modal .f-l .req{color:var(--primary)}
.bk-modal .f-l .tag-mem{font-size:11.5px;font-weight:700;color:var(--primary);background:var(--primary-100);padding:3px 7px;border-radius:6px}
.bk-modal .f-l .link{font-size:12.5px;font-weight:600;color:var(--gray-400);cursor:pointer}
.bk-modal .ctl{width:100%;height:48px;border:1px solid var(--gray-200);border-radius:12px;padding:0 14px;font-size:14px;color:var(--gray-900);background:#fff;display:flex;align-items:center;font-family:inherit}
.bk-modal select.ctl,.bk-modal input.ctl{appearance:none;-webkit-appearance:none}
.bk-modal .ctl.ph{color:var(--gray-400)}
.bk-modal .ctl:focus{outline:none;border-color:var(--primary)}
.bk-modal .sel-wrap{position:relative}
.bk-modal .sel-wrap::after{content:"⌄";position:absolute;right:14px;top:44%;transform:translateY(-50%);color:var(--gray-400);font-size:15px;pointer-events:none}
.bk-modal .date-ico{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--gray-500);pointer-events:none}
.bk-modal .f-row{display:flex;gap:8px}
.bk-modal .f-row .sel-wrap{flex:1}
.bk-modal .won-row{position:relative}
.bk-modal .won-row input{text-align:right;padding-right:34px}
.bk-modal .won-row .won{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--gray-500);font-size:14px}
.bk-modal .chk-row{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.bk-modal .chk{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--gray-700);cursor:pointer}
.bk-modal .chk .box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--gray-300);display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px}
.bk-modal .chk.on .box{background:var(--primary);border-color:var(--primary)}
.bk-modal textarea{width:100%;min-height:84px;border:1px solid var(--gray-200);border-radius:12px;padding:12px 14px;font-size:14px;resize:vertical;font-family:inherit}
.bk-modal textarea:focus{outline:none;border-color:var(--primary)}
.bk-modal .rep-toggle{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--gray-400)}
.bk-modal .rep-toggle .sw{width:34px;height:20px;border-radius:20px;background:var(--gray-200);position:relative}
.bk-modal .rep-toggle .sw::after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:2px;left:2px}

/* ================= 일 뷰: 한눈에 보기 / 가로 스크롤 토글 ================= */
.view-day{--dcolw:minmax(120px,1fr)}           /* 기본 보기(default): 최소폭 ~120px → 넘치면 가로 스크롤 */
.view-day.is-fit{--dcolw:minmax(0,1fr)}        /* 전체 보기: 최소폭 없이 담당자 29명 전부 한 화면에 균등 분할(스크롤 없음) */
.day-scroll{overflow-y:auto;overflow-x:auto;max-height:760px;position:relative}
.view-day.is-fit .day-scroll{overflow-x:hidden}   /* 전체 보기: 다 fit → 가로 스크롤 없음 */
/* 담당자 헤더: 위쪽 고정(sticky top), 스크롤 시 유지 */
.day-scroll .day-staff{position:sticky;top:0;z-index:6;background:#fff;width:100%}
.day-scroll .day-staff .gut{position:sticky;left:0;z-index:7;background:#fff}
/* 본문: 자체 스크롤 해제(부모 day-scroll가 담당) */
.day-scroll .tg-body{max-height:none;overflow:visible;width:100%}
.day-scroll .tg-columns--day{flex:1 1 auto;width:auto}
/* 시간축: 왼쪽 고정(sticky left) */
.day-scroll .tg-gutter{position:sticky;left:0;z-index:5;background:#fff}
.day-staff .st{min-width:0;container-type:inline-size}
/* 담당자 이름: 컬럼 100px 이상은 14px 유지, 100px 미만부터 폭에 비례해 축소(72px면 ~11.5px), 넘치면 말줄임 */
.day-staff .st .stn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(11.5px, calc(5.07px + 8.93cqi), 14px)}

/* 전체 보기: 카드 정보 축약 없음 — 전체 내용 그대로, 좁은 폭엔 자연 클리핑만(padding만 소폭) */
.view-day.is-narrow .ev-card:not(.ev-card--split){padding:6px 7px;left:2px;right:2px}
.view-day.is-narrow .ev-card--split{padding:6px 5px}  /* 겹침 카드는 width 분할 유지, 패딩만 축소 */
/* 담당자 이름: 기본 크기 유지(넘치면 말줄임). 폰트 다운은 더 좁아질 때(is-micro)만 */
.view-day.is-narrow .day-staff .st{padding:12px 0}   /* 컨테이너=컬럼 폭 정확히 (좌우 패딩 0) */
.view-day.is-narrow .day-staff .st .sdot{width:8px;height:8px}

/* 토글 버튼 */
/* 보기 방식 토글 버튼 (Figma 10:7129) — 흰색 pill, 중립 */
.fit-toggle{display:inline-flex;align-items:center;gap:4px;height:28px;padding:5px 16px;border:1px solid #DFE0E1;border-radius:9999px;background:#fff;font-size:12px;font-weight:500;color:#20232B;line-height:18px;white-space:nowrap}
.fit-toggle:hover{background:var(--gray-50)}
.fit-toggle .fit-ico{width:18px;height:18px;flex:none}
/* 기본=안쪽 화살표(→ ←), 전체=바깥 화살표(← →) */
.fit-toggle .ico-out{display:none}
.fit-toggle.out .ico-in{display:none}
.fit-toggle.out .ico-out{display:inline-block}

/* ===== 셀높이(세로 확장) 슬라이더 ===== */
.cellh-wrap{position:relative;display:inline-flex}
.cellh-btn{display:inline-flex;align-items:center;gap:5px;height:28px;padding:5px 14px;border:1px solid #DFE0E1;border-radius:9999px;background:#fff;font-size:12px;font-weight:500;color:#20232B;line-height:18px;white-space:nowrap;cursor:pointer}
.cellh-btn:hover{background:var(--gray-50)}
.cellh-btn .cellh-chev{width:12px;height:12px;flex:none;color:#8A929E;transition:transform .15s}
.cellh-btn[aria-expanded="true"]{border-color:#C7D2FE;background:#F5F7FF}
.cellh-btn[aria-expanded="true"] .cellh-chev{transform:rotate(180deg)}
.cellh-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:60;display:flex;align-items:center;gap:10px;padding:12px 14px;width:230px;background:#fff;border:1px solid #EAEBED;border-radius:12px;box-shadow:0 8px 24px rgba(20,23,43,.14)}
.cellh-pop[hidden]{display:none}   /* hidden 속성이 display:flex를 이기도록(특이도 보강) */
.cellh-step{flex:none;width:26px;height:26px;border:none;border-radius:7px;background:#7C6BF5;color:#fff;font-size:16px;font-weight:600;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
.cellh-step:hover{background:#6a58f0}
.cellh-step:active{transform:scale(.94)}
.cellh-range{flex:1;-webkit-appearance:none;appearance:none;height:5px;border-radius:5px;background:#E7E3FB;outline:none;cursor:pointer}
.cellh-range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #7C6BF5;box-shadow:0 1px 3px rgba(20,23,43,.2);cursor:pointer}
.cellh-range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #7C6BF5;box-shadow:0 1px 3px rgba(20,23,43,.2);cursor:pointer}

/* ===== 드래그 후 선택 메뉴 (예약 등록 / 막기) ===== */
.bk-choice-mask{position:fixed;inset:0;z-index:125;background:rgba(15,20,35,.35)}
.bk-choice{position:absolute;display:flex;flex-direction:column;gap:10px;width:280px;animation:bkPin .14s ease-out}
.bk-choice-time{align-self:center;background:var(--gray-900);color:#fff;font-size:12.5px;font-weight:700;padding:5px 12px;border-radius:20px;margin-bottom:2px}
.bk-choice button{height:56px;background:#fff;border:1px solid var(--gray-100);border-radius:14px;box-shadow:0 8px 24px rgba(20,30,60,.16);
  display:flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:600;color:var(--gray-900)}
.bk-choice button:hover{background:var(--gray-50)}
.bk-choice button .ci{font-size:18px;font-weight:400;color:var(--gray-700)}
.bk-choice button[data-act="block"] .ci{color:var(--gray-500)}
/* 예약 막기 블록 */
.ev-block--new{display:flex;flex-direction:column;gap:2px;color:var(--gray-600)}
.ev-block--new .eb-label{font-weight:700;font-size:12px}
.ev-block--new .eb-time{font-size:11px;color:var(--gray-500)}
